클라우드 기반 실시간 데이터 분석 및 예측 - 윤석찬 테크 에반젤리스트::...
TRANSCRIPT
AWS 클라우드 기반 실시간 데이터 분석 방법윤석찬 | AWS 코리아 테크에반젤리스트
백정상 | IGAWorks 개발팀장
목차
AWS 빅 데이터 분석 빌딩 블록 및 사례
실시간 데이터 분석 서비스 Amazon Kinesis Stream
실시간 분석 고객 사례 소개 IGAWorks
최신 실시간 분석 서비스 소개
데이터 분석
데이터웨어하우스
배치 분석Hadoop
실시간분석
데이터파이프라인
머신러닝
AWS 클라우드의 폭넓은 서비스 제공
보안/관리사설네트웍(VPC)
인증및 접근제어
암호화 및키관리
자동화인프라관리
모니터링로그/감사
데디케이트서비스
문서 공유및 협업
가상데스크톱
디렉토리카탈로그
비지니스이메일
스토리지게이트웨이
엔터프라이즈
통합 인증
기존망연결
백업/재해복구
배포서비스
통합관리
하이브리드모바일
데이터싱크
모바일분석
푸시알림
모바일백엔드
소셜인증
개발 배포
소스콘트롤
콘테이너서비스
배포도구
빌드도구
데브옵스
큐 서비스
워크플로
앱스트리밍
이메일전송
검색서비스
모바일테스트
동영상변환
API관리
이벤트기반컴퓨팅
도메인네임관리
애플리케이션 서비스
핵심 서비스컴퓨팅 네트워킹데이터베이스(RDS/NoSQL/캐싱)
스토리지(객체/볼륨/백업))
리전 가용영역 콘텐츠배포
글로벌 인프라
고객 피드백 기반 클라우드 서비스 혁신
데이터베이스 관리의 부담이 많습니다.
관계형 DB 는 확장성이 쉽지 않아요.
Hadoop 배포 및 관리하기가 힘듭니다.
기존 DW는 복잡하고 비싸고 느립니다.
상용 DB는 고비용에 관리, 확장이 어려워요.
실시간 데이터는 수집하고 분석하기 힘듭니다.
Amazon RDS
Amazon DynamoDB
Amazon EMR
Amazon Redshift
Amazon Aurora
Amazon Kinesis
고객의 목소리 AWS는 만들었습니다
Amazon S3
Amazon
Kinesis
Amazon
DynamoDB
AWS
Lambda
KCL Apps
Amazon EMR
Amazon
Redshift
Amazon
Machine
Learning
수집 처리 분석
저장
데이터 수집 및 저장 배치 데이터 처리실시간 처리
데이터 분석
데이터생성
결과활용
AWS 빅데이터 빌딩 블럭
Amazon
Elastisearch
Service
Freedom to Get the Real Value From Your Data
AWS의 다양한 서비스를 통해 대용량 데이터를 손쉽게 처리하고,데이터에서 가치를 찾아 고객의 서비스에 집중할 수 있는 자유
AWS 기반 빅데이터 분석 고객 사례
통신사 헬스 케어
헬스케어 분석 금융 정보
광고 서비스
유전 정보 분석
교육 분야
연구소
석유 화학 유전자 분석 미디어 분야
리스크 시뮬레이션
리스트 분석 스트리밍 분야
식품
수퍼셀의 게임 분석 사례
S3 및 Glacier: 게임 로그 수집 및 저장 (일 10테라 바이트)
EMR: DW를 위한 데이터 클린징 (자체 EC2 클러스터 대신 활용)
Kinesis: 게임 사용자 실시간 데이터 수집 (일 450억건)
DynamoDB: Kinesis로 수집된 데이터 저장 및 빠른 질의
https://aws.amazon.com/ko/solutions/case-studies/supercell/
국내 데이터 분석 사례
1만개의 모바일 게임 앱의사용자 데이터 분석
13억개의 모바일 디바이스에 광고 플랫폼 운영
Recopick- 쇼핑 로그 기반실시간 상품 추천 서비스
5백만 사용자 음악 스트리밍 데이터 분석 및 추천
일간 100 GB의가정용및상업용전기사용량을분석서비스
쿠키런 게임 로그 수집 및분석 플랫폼 운영
과거 데이터
분석실시간
분석
데이터기반
예측+ +
데이터 기반 비지니스 혁신
서비스 및 시스템의
실시간 분석
• 마케팅 이벤트 현황
• 게임내 행동 파악
• 주문 데이터를 매출
파악
상태 분석/감시
• IoT 기반 센서 이상
감지
• 무단 침입 감지
서비스 품질 향상
• 소설 데이터를 이용한
실시간 피드백 반영
• 사용자 행동에 기반한
서비스 개선
IT 환경 변화에 따른 실시간 분석의 필요성
Amazon Kinesis Streams실시간데이터분석을위한저렴하고확장성높은 관리형클라우드서비스
오늘 부터 Seoul Region에서 사용 가능!
Amazon Kinesis Streams
손 쉬운 관리: 신규 스트림 생성, 용량
설정 및 확장 가능
빠른 실시간 앱 개발: Kinesis Client
Library (KCL), Apache Spark/Storm,
AWS Lambda 등을 이용하여,
스트리밍 데이터에 대한 지속적인
처리 가능
저렴한 비용: 사용한 만큼만 과금하며
확장 대비 비용 효율적
내구성 및 가용성: AWS 인프라를 통한
확장 및 데이터 소실 방지
Kinesis Streams 내부 구조 및 용어
Data Sources
App.1
[Aggregate & De-Duplicate]
DataSources
Data Sources
App.2
[Metric Extraction]
S3
DynamoDB
Redshift
App.3
[Real-time Dashboard]
DataSources
Availability Zone
Shard 1
Shard 2
…
Shard N
Availability Zone
Availability Zone
Stream을 생성 - 1개 이상의 Shard로 구성
Shard는 초당 1MB의 입력 및 2MB의 출력 (시간당 0.015$/버지니아 리전 기준)
Data Record 입력- 복수 AZ에 저장
AWS Lambda
Functions
다양한 Kinesis Streams 데이터 전송 및 활용
AWS SDK
LOG4J
Flume
Fluentd
Get* APIs
Kinesis Client Library+
Connector Library
Apache Storm
Amazon Elastic MapReduce
실시간 데이터 전송 실시간 데이터 활용
AWS Mobile SDK
Kinesis Producer
Library
AWS Lambda
Apache Spark
Kinesis Streams 확장성
Shard 1
Shard 2
Shard 1
Shard 2
Shard 3
Shard 1
Shard 2
Shard 1
Shard 2
Shard 3
1:00-7:00 7:00-13:00 13:00-19:00 19:00-1:00
• 처리하고자 하는 데이터의 특성에 맞게 Shard 운용 가능
– Shard는 시간단위로 비용이 청구되므로 낭비 없이 사용 할 수 있도록 Split/Merge 적용
• 처리량이 많아지는 시간에 Shard 를 분할하고 적어지면 병합하는 방법
Split SplitMerge
Kinesis Scaling Utility https://github.com/awslabs/amazon-kinesis-scaling-utils
[{
"streamName": "seoul-stream","region": "ap-northeast-2","scaleOnOperation": "PUT","minShards": 2,"maxShards": 16,"refreshShardsNumberAfterMin": 3,"scaleUp": {
"scaleThresholdPct": 75,"scaleAfterMins": 2,"scalePct": 100
},"scaleDown": {
"scaleThresholdPct": 25,"scaleAfterMins": 2,"scalePct": 50,"coolOffMins": 2
}}
]
Kinesis Producer Library 및 Server-Side Timestamps
PutRecords API 추가, 500 레코드 또는 5 MB payload
Kinesis Client Library에 대한 언어 지원- Python, Node.JS, Ruby…
개별 레코드 데이터 크기 50 KB에서 1 MB로 증가
요청 시 스트림 저장 시간 증가: 24 시간에서 7일
2015년 - 다양한 Kinesis Streams 기능 확대
1 Billion Events/wk
From Connected D
evices
100 GB/day Click Streams
From 250+ Sites
50 Billion Ad Impressions
Per Day Sub-50 ms Resp
onses
17 Million Events/Day
1 Billion Transactions
Per Day1 TB+/day Game Data
Analyzed In Real-time
Kinesis Streams 실시간 분석 사례
Kinesis Streams 실시간 분석 사례
"AWS 플랫폼은 17PB의 야구 게임 데이터를 처리하고 고객에게이를 거의 실시간으로 제공하기 위한 탁월한 선택이었습니다.”
–·Joe Inzerillo, EVP 및 CTO, Major League Baseball Advanced Media
Case Study
RTB 광고 시스템 구축 사례
백정상 | IGAWorks 개발팀장
Real-time bidding (RTB) is a means by which
advertising inventory is bought and sold on a per-
impression basis, via programmatic
instantaneous auction, similar to financial
markets.[1] With real-time bidding, advertising
buyers bid on an impression and, if the bid is won,
the buyer’s ad is instantly displayed on the
publisher’s site.[2] Real-time bidding lets
advertisers manage and optimize ads from
multiple ad-networks by granting the user access
to a multitude of different networks, allowing them
to create and launch advertising campaigns,
prioritize networks and allocate percentages of unsold inventory, known as backfill.[3]
https://en.wikipedia.org/wiki/Real-time_bidding
http://www.ajc.com/gallery/news/local/elements-condo-auction/gy38/
지면 공급자와 광고주의 경매장
RTB 기반 광고시스템이란?
광고주는지면 공급자는
트래픽을최대한비싸게팔고싶다.
내가원하는사용자에게만돈을지불하고싶다.
가능하면, 최대한싸게…
경매장
모두 만족시킬 방법은 실시간 경매
경매 흐름
user
app
Exchange / ssp
DSP DSP DSP DSP
0.9$ 0.7$ No bid 0.3$
광고 송출
경매 흐름
user
app
Exchange / ssp
DSP DSP DSP DSP
0.9$ 0.7$ No bid 0.3$
광고 송출
이 모든 게 100ms 내에 이루어져야 한다!
7,000
초당 입찰하는 광고 수
18,000,000,000
월간 광고 트래픽
ms
광고를 송출하기까지 걸리는 시간
20
실시간 성과 확인
모든 캠페인은
고객이 원하는 대로
모든 성과 리포팅은
주어졌던 미션
20ms
실시간 캠페인 운영
애드-혹 리포트
미션 #1 – 각 요청당 20ms 내로 처리
• 타겟팅 : 앱을이탈한지 7일이상
• 전략 : 1일 3회이상노출금지
• 입찰가 : 0.5$를넘지마시오
• 광고소재 : 5개를롤링방식으로
광고 요구사항 광고대상유저인가?
이유저에게몇번이나 노출?
이번에는어떤광고물을?
얼마로입찰?
RTB 요청
RTB 응답
미션 #1 – 각 요청당 20ms 내로 처리
광고대상유저인가?
이유저에게몇번이나 노출?
이번에는어떤광고물을?
얼마로입찰?
RTB 요청
RTB 응답
이 과정을 네트워크 Latency 포함 100ms 이내 처리해야 함
그렇지 않으면 입찰에서 점차 배제됨 ㅠㅠ
즉 입찰 엔진은20ms 내에 응답해야 함
게다가 이 모든 처리는 DB Access 를 꼭 해야하는 작업
DynamoDB
#1 각 요청당 20ms 내로 처리
Elastic Beanstalk
DynamoDB
DynamoDB 를 적절히 사용하여 DB Latency를 획기적으로 줄일 수 있었음
미션 #2 – 실시간 캠페인 운영
광고에 300$이상 소진하지 않게 해주세요
지금까지 몇 개의 광고 클릭이 발생했는지 알고 싶어요
지금까지 얼마의 예산을 소진했는지 바로 알고 싶어요
지금 정말 광고가 송출되고 있는지 확인하고 싶어요
실시간 운영만이 해결책
Kinesis Streams
#2 실시간 광고 운영Kinesis의 Data를 기준으로 실시간 리포트를 생성하고, Dynamo DB에 적절하게 입력하여 가능케 함!
Kinesis
RealtimeReport Worker
DynamoDB
미션 #3 – 애드-혹 리포트
매체별로 보고 싶어요
타겟팅 그룹별 성과를 보고 싶어요
광고소재별 노출량과, 몇 명에게 노출되었는지 알고 싶어요
위 지표를 일자별로 분리해서 보고 싶어요
죄송하지만… 매체, 타겟팅, 광고소재, 일자별 지표를 보고싶네요
아.. 미안합니다. 위 지표를 시간별로 보고싶어요!
미리 만들기는 불가능하다
Redshift
#3 애드-혹 리포트Redshift는 ad-hoc query 에 적합! Kinesis -> S3 -> Redshift 조합으로 가능!
Kinesis
S3
ETLWorker
RedShift
시스템 구성
Elastic Beanstalk
DynamoDB
Kinesis
RealtimeReport Worker
S3 Upload Worker
DynamoDB
S3( Tokyo )
S3( N.virginia )
ETLWorker
RedShift
Fraud Detect Worker
Console
Kinesis + DynamoDB + RedShift를 적극 활용하여, 빠르고 견고한 RTB 입찰 시스템을 구성
(개발중)
정리
각 요청당 20ms 내로 처리
실시간 캠페인 운영
Ad-hoc 리포트
DynamoDB
Kinesis
RedShift
더 알고 싶으시다면?
고객 사례 - Sushiro: Kaiten Sushi Restaurants380개 상점에서 발생한 스시 접시 센서 데이터를 Kinesis로 스트리밍
고객 사례 - Sushiro: Kaiten Sushi Restaurants380개 상점에서 발생한 스시 접시 센서 데이터를 Kinesis로 스트리밍
Amazon Kinesis Firehose실시간데이터분석을위한맞춤형애플리케이션구성을위한관리형서비스
01010101010101010101010101
01010101010101010101010101010
1 0
Amazon Kinesis Firehose
S3
Redshift
자동확장
자동연속성
자동압축
KMS 통한암호화
실시간 데이터를 자동 저장 처리
Q: 실시간 데이터 중 필요한 데이터만뽑아서 미리 정제할 수는 없을까?
Amazon Kinesis Analytics
SQL 기반의 실시간 데이터 분석 서비스 - 출시 예정
실시간 분석을 위한 AWS 빌딩 블록
Amazon Kinesis Streams
스트리밍 데이터를처리하거나 분석하는 커스텀
애플리케이션을 개발
Amazon Kinesis Firehose
방대한 볼륨의 스트리밍데이터를 Amazon S3나Redshift 로 쉽게 로드
Amazon Kinesis Analytics
표준 SQL 쿼리를 이용하여데이터 스트림을 쉽게 분석
AWS 에서 스트림에 대한 수집, 전송/저장 및 분석을 가능하게 하는 서비스
missing link?
데이터 분석의사각 지대?
FinanceMarketingSales HR Data Analysts
AWS 서비스내
데이터 소스
자동 탐색
데이터를 기반한
분석 추천
데이터를 가장
잘 표현하는
시각화 방법
필드 내 데이터
형식과 관계를
자동 인지
손쉽고 저렴한 비지니스 인텔리전스(BI) 서비스 – 출시 예정
Amazon QuickSight
SPICE: 병렬 인 메모리 컴퓨팅 엔진
AWS의 다양한 데이터 소스 그대로 활용
1분안에 데이터를 분석 후 시각화 제공
비교 데이터 선택에 따라 동적인 그래프 생성
QuickSight 스탠다드 에디션
사용자당 $9 부터…(1년 약정시)
기존 BI를 사용할 경우 사용자당 월 $150 to $250
- 3 년 TCO 분석결과 -
실시간
데이터
연속 처리 BI 분석
Kinesis Analytics Kinesis Firehose Redshift
S3 & Glacier
QuickSight
데이터
필터링저장
향후 실시간 분석을 위한 AWS 로드맵
One more thing…
사물 인터넷(IoT)을 위한 AWS 접근 방법
AWS IoT – 실시간 데이터 예측 사례
AWS IoT를 통한 데이터 이상값 탐지
Amazon Machine Learning은 Rules Engine에 예측 모델 평가 제공 가능
예측을 위한 지속적 업데이트 가능
데이터를 통한 지속적 모델 업데이트로 실시간 예측 활용
Amazon Machine Learning
Re-Train
S3Amazon
Kinesis Firehose
AWS Direct
Connect
AWSImport/Expor
t Disk
AWSImport/Expor
t Snowball
Amazon
Kinesis
Streams
Amazon VPC
VPN Connectio
n
AWS Database
Migration Servic
e
AWS
Data Pipeline
Amazon
Kinesis
Firehos
e
Amazon
Kinesis
Analytic
s
AWS Storage
GatewayAmazon S3
Amazon
Glacier
Amazon
RDS
Amazon
Redshift
Amazon
Elastisearch
Service
Amazon
DynamoD
B
Amazon EMR Amazon EC2
Amazon EC2
Container Servic
e
Amazon ML
Amazon
QuickSigh
t
수집 및 저장 분석 및 예측
최신 AWS 빅데이터 빌딩 블록
온프레미스 데이터 이동
맺으면서
데이터 패턴에 맞는 AWS 서비스를 선택하세요!
Latency, throughput, access patterns 등
AWS 매니지드 서비스 선택하세요!
No/low admin
AWS 실시간 분석 서비스를 활용하세요!
Amazon Kinesis
빅데이터, 이제 저렴하게 분석 하세요!
Big data ≠ big cost
어떻게 시작할까요?
추천 콘텐츠빅데이터 블로그 https://blogs.aws.amazon.com/bigdata/blog/
주요 서비스 http://aws.amazon.com/ko/big-data/
고객 사례 https://aws.amazon.com/ko/solutions/case-studies/big-data/
지금 시작하기Qwiklabs 무료 실습 – https://qwiklabs.com
각종 샘플 코드 – https://github.com/awslabs/aws-bigdata-blogs
• AWS 공식 블로그: http://aws.amazon.com/ko/blogs/korea
• AWS 공식 소셜 미디어
여러분의 피드백을기다립니다!
@AWSKorea AWSKorea
AmazonWebServices AWSKorea