7. 아키텍처 원칙
“데이터 버스”를 분리
• Data → Store → Process → Answers
작업에 적합한 도구를 사용
• Data structure, latency, throughput, access patterns
람다 아키텍처 아이디어 사용
• Immutable (append-only) log, batch/speed/serving layer
AWS 관리형 서비스 활용
• No/low admin
비용에 대한 고려
• Big data ≠ Big cost
10. 데이터의 종류
트랜잭션
• Database reads & writes (OLTP)
• Cache
검색
• Logs
• Streams
파일
• Log files (/var/log)
• Log collectors & frameworks
스트림
• Log records
• Sensors & IoT data
A
iOS Android
Web Apps
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Amazon
Glacier
Amazon
ElastiCache
SearchSQLNoSQLCacheFileStorage
Transactional Data
File Data
Stream Data
Mobile
Apps
Search Data
Database
File
Storage
Search
수집 저장
LoggingIoTApplications
Stream
Storage
14. 생산자와 소비자를 분리
영구적인 버퍼
다수의 스트림을 수집
메시지의 순서 유지
스트리밍 맵리듀스
병렬적인 소비
4 4 3 3 2 2 1 1
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1
4 4 3 3 2 2 1 1
Shard 1 / Partition 1
Shard 2 / Partition 2
Consumer 1
Count of
Red = 4
Count of
Violet = 4
Consumer 2
Count of
Blue = 4
Count of
Green = 4
DynamoDB Stream Kinesis Stream Kafka Topic
스트림 스토리지
15. Queues & Pub/Sub ?
• 생산자 및 소비자/가입자를
분리
• 영구적인 버퍼
• 다수의 스트림을 수집
• No 메시지 순서
• No 병렬적 소비 for Amazon
SQS
• Amazon SNS 는 다수의
큐 또는 람다(Lambda)
함수로 전달 가능
• No 스트리밍 맵리듀스
Consumers
Producers
Producers
Amazon SNS
Amazon SQS
queue
topic
function
ʎ
AWS Lambda
Amazon SQS
queue
Subscriber
16. Amazon
Kinesis
DynamoDB
Streams
Amazon SQS
Amazon SNS
Kafka
Managed Yes Yes Yes No
Ordering Yes Yes No Yes
Delivery at-least-once exactly-once at-least-once at-least-once
Lifetime 7 days 24 hours 14 days Configurable
Replication 3 AZ 3 AZ 3 AZ Configurable
Throughput No Limit No Limit No Limit ~ Nodes
Parallel Clients Yes Yes No (SQS) Yes
MapReduce Yes Yes No Yes
Record size 1MB 400KB 256KB Configurable
Cost Low Higher(table cost) Low-Medium Low (+admin)
어떤 스트림 스토리지를 사용해야 하는가?
18. 왜 Amazon S3가 빅데이터에 좋은가?
• 기본적으로 빅데이터 프레임워크 지원(Spark, Hive, Presto, etc.)
• 스토리지를 위한 컴퓨팅 클러스터가 불필요 (HDFS와 다름)
• Amazon EC2 스팟 인스턴스를 활용하여 하둡 클러스터 운영 가능
• 동일한 데이터로 여러 종류(Spark, Hive, Presto) 클러스터를 동시에 사용
• 오브젝트 갯수 무제한
• 99.999999999%의 내구성을 위한 설계
• 고 가용성 – AZ 장애 극복
• 수명주기를 활용한 계층-스토리지 (Standard, IA, Amazon Glacier)
• 보안 – SSL, client/server-side encryption at rest
• 저비용
• 매우 높은 대역폭 – 총 처리량 제한 없음
19. 왜 Amazon S3가 빅데이터에 좋은가?
• 기본적으로 빅데이터 프레임워크 지원(Spark, Hive, Presto, etc.)
• 스토리지를 위한 컴퓨팅 클러스터가 불필요 (HDFS와 다름)
• Amazon EC2 스팟 인스턴스를 활용하여 하둡 클러스터 운영 가능
• 동일한 데이터로 여러 종류(Spark, Hive, Presto) 클러스터를 동시에 사용
• 오브젝트 갯수 무제한
• 99.999999999%의 내구성을 위한 설계
• 고 가용성 – AZ 장애 극복
• 수명주기를 활용한 계층-스토리지 (Standard, IA, Amazon Glacier)
• 보안 – SSL, client/server-side encryption at rest
• 저비용
• 매우 높은 대역폭 – 총 처리량 제한 없음
20. • 매우 자주 접근하는(hot) 데이터는
HDFS 사용
• 자주 접근하는 데이터는 Amazon S3
Standard 사용
• 드물게 접근하는 데이터는 Amazon
S3 Standard – IA 사용
• 거의 접근하지 않는(cold) 데이터는
Amazon Glacier 사용하여 아카이브
S3와 HDFS, Amazon Glacier를 함께…
21. 데이터베이스
+ 검색
계층
A
iOS Android
Web Apps
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Apache
Kafka
Amazon
Glacier
Amazon
Kinesis
Amazon
DynamoDB
Amazon
ElastiCache
SearchSQLNoSQLCacheStreamStorageFileStorage
Transactional Data
File Data
Stream Data
Mobile
Apps
Search Data
수집 저장
LoggingIoTApplications
ü
25. 데이터 구조와 접근 패턴
접근 패턴 What to use?
Put/Get (Key, Value) Cache, NoSQL
Simple relationships → 1:N, M:N NoSQL
Cross table joins, transaction, SQL SQL
Faceting, Search Search
데이터 구조 What to use?
Fixed schema SQL, NoSQL
Schema-free (JSON) NoSQL, Search
(Key, Value) Cache, NoSQL
27. Hot Warm Cold
데이터 용량 MB–GB GB–TB PB
아이템 크기 B–KB KB–MB KB–TB
응답시간 ms ms, sec min, hrs
내구성 Low–High High Very High
요청 비율 Very High High Low
비용/GB $$-$ $-¢¢ ¢
Hot Data Warm Data Cold Data
데이터 / 접근 특성: Hot, Warm, Cold
29. Amazon
ElastiCache
Amazon
DynamoDB
Amazon
Aurora
Amazon
Elasticsearch
Amazon
EMR (HDFS)
Amazon S3 Amazon Glacier
Average
latency
ms ms ms, sec ms,sec sec,min,hrs
ms,sec,min
(~ size)
hrs
Data volume GB
GB–TBs
(no limit)
GB–TB
(64 TB
Max)
GB–TB
GB–PB
(~nodes)
MB–PB
(no limit)
GB–PB
(no limit)
Item size B-KB
KB
(400 KB
max)
KB
(64 KB)
KB
(1 MB max)
MB-GB
KB-GB
(5 TB max)
GB
(40 TB max)
Request rate
High -
Very High
Very High
(no limit)
High High
Low – Very
High
Low –
Very High
(no limit)
Very Low
Storage cost
GB/month
$$ ¢¢ ¢¢
¢¢
¢ ¢ ¢/10
Durability
Low -
Moderate
Very High Very High High High Very High Very High
Hot Data Warm Data Cold Data
Hot Data Warm Data Cold Data
어떤 데이터 저장소를 사용?
32. 처리 / 분석
데이터에 대한 분석은 유용한 정보를 발견하고, 결론을
제안하고, 그리고 의사결정을 지원하기 위한 목적으로
데이터를 점검, 정제, 변환, 그리고 모델링 하는 프로세스
예시
대화형 대쉬보드 → 대화형 분석(Interactive Analytics)
일일/주간/월간 보고서 → 배치 분석(Batch Analytics)
결제/사기 경고, 1 분 측정 → 실시간 분석(Real-time Analytics)
심리 분석, 예측 모델 → 기계 학습(Machine learning)
34. 배치 분석
대용량의 데이터 (warm/cold)
답변을 얻기까지 수 분 또는 수 시간 소요
예: 일일, 주간, 월간 보고서 작성
35. 실시간 분석
적은 용량의 Hot 한 데이터와 질문
답변을 얻기까지 짧은 시간 소요 (수 밀리초 또는 수 초)
실시간 (이벤트)
• 데이터 스트림에서 이벤트 실시간 응답
• 예: 결제/사기 경고
준 실시간 (마이크로 배치)
• 데이터 스트림의 마이크로 배치를 통한 준 실시간 운영
• 예: 1 분 측정
36. 기계 학습을 통한 예측
기계 학습(ML)은 컴퓨터에게 명시적으로 프로그래밍 하지
않고 학습할 수 있는 기능을 제공
기계 학습 알고리즘:
감독 학습 ← “teach” program
- Classification ← Is this transaction fraud? (Yes/No)
- Regression ← Customer Life-time value?
자율 학습 ← let it learn by itself
- Clustering ← Market Segmentation
37. 기계 학습
• Mahout, Spark ML, Amazon ML
대화형 분석
• Amazon Redshift, Presto, Impala, Spark
배치 분석
• MapReduce, Hive, Pig, Spark
스트림 처리
• Micro-batch: Spark Streaming, KCL, Hive, Pig
• Real-time: Storm, AWS Lambda, KCL
Amazon
Redshift
Impala
Pig
Amazon Machine
Learning
Amazon
Kinesis
AWS
Lambda
AmazonElasticMapReduce
StreamProcessingBatchInteractiveML
분석
Streaming
분석 도구와 프레임워크
38. Spark Streaming Apache Storm
Amazon Kinesis
Client Library
AWS Lambda
Amazon EMR (Hive,
Pig)
Scale /
Throughput
~ Nodes ~ Nodes ~ Nodes Automatic ~ Nodes
Batch or Real-
time
Real-time Real-time Real-time Real-time Batch
Manageability Yes (Amazon EMR) Do it yourself
Amazon EC2 +
Auto Scaling
AWS managed Yes (Amazon EMR)
Fault Tolerance Single AZ Configurable Multi-AZ Multi-AZ Single AZ
Programming
languages
Java, Python, Scala
Any language
via Thrift
Java, via
MultiLangDaemon (
.Net, Python, Ruby,
Node.js)
Node.js,Java,
Python
Hive, Pig, Streaming
languages
High
어떤 데이터 처리 기술을 사용해야 하는가?
39. Amazon
Redshift
Impala Presto Spark Hive
Query Latency Low Low Low Low
Medium (Tez) – High
(MapReduce)
Durability High High High High High
Data Volume
1.6 PB
Max
~Nodes ~Nodes ~Nodes ~Nodes
Managed Yes Yes (EMR) Yes (EMR) Yes (EMR) Yes (EMR)
Storage Native HDFS / S3A* HDFS / S3 HDFS / S3 HDFS / S3
SQL
Compatibility
High Medium High Low (SparkSQL) Medium (HQL)
HighMedium
어떤 데이터 처리 기술을 사용해야 하는가?
42. 예측
분석 및 시각화
IDE
애플리케이션 & API
Consume
Analysis&VisualizationNotebooks
Predictions
Apps & APIs
IDE
저장 분석 소비ETL
Business
users
Data Scientist,
Developers
Amazon
QuickSight
소비
44. 수집 저장 분석 소비
A
iOS Android
Web Apps
Logstash
Amazon
RDS
Amazon
DynamoDB
Amazon
ES
Amazon
S3
Apache
Kafka
Amazon
Glacier
Amazon
Kinesis
Amazon
DynamoDB
Amazon
Redshift
Impala
Pig
Amazon ML
Amazon
Kinesis
AWS
Lambda
AmazonElasticMapReduce
Amazon
ElastiCache
SearchSQLNoSQLCache
StreamProcessingBatchInteractive
Logging
StreamStorage
IoTApplications
FileStorage
Analysis&Visualization
Hot
Cold
Warm
Hot
Slow
Hot
ML
Fast
Fast
Transactional Data
File Data
Stream Data
Notebooks
Predictions
Apps & APIs
Mobile
Apps
IDE
Search Data
ETL
Streaming
Amazon
QuickSight
49. 망고플레이트에서 하고 있는 추천 및 분석 업무
• Recommendation Engine
• Restaurant to Restaurant Similarity 계산
• User to User Similarity 계산
• User to Restaurant Similarity 계산
• Fraud Detection
• Fake review/user Identification
• User/Review/Picture Scoring
• Restaurant Rating
• User Behavior 분석
• Web/App user mapping
• Retention queries
• User segmentation/testing
50. 서비스 성장에 따른 Pain Point들
• 서비스 성장에 따라 기존 시스템으로 계산 시간이 점점 오래 걸림
• 추천 및 Rating 알고리즘 고도화로 분석 Query 가 복잡해짐
• 분석하고 싶은 데이터가 모두 흩어져 있음
51. 어떤 Solution을 이용해야할까?
• 우리팀의 상황
• 별도의 분석 Script를 만들기에는 개발자 부족
• Algorithm의 70%는 Query에 의존
• 분석에 필요한 모든 Log를 수집하여 S3에 저장
• Redshift를 도입하기로 결정
[ ]클라우드에서 실행되는 신속하고 강력한
페타바이트 규모의 SQL기반 데이터
웨어하우스 서비스
52. Redshift의 장점
• 쉽게 Petabyte 규모까지 Scale 가능
• 빠른 계산 속도
• 저렴한 가격
• dc1.large의 경우 월 20만원으로 시작 가능
• 표준 SQL 지원 및 다양한 Analytics Function 지원
53. 단계별로 AWS 및 Redshift도입
국내 클라우드 서비스
• VM instances
• MySQL
• Redis
AWS Seoul Region
• EC2
• RDS
• Elastic Cache
• VPC
• Route53
• S3
• SNS
• SQS
• Redshift
Migration Consulting
&
Technical Support
AWS Tokyo Region
• S3
• SNS
• SQS
• Redshift
+
2015 2016
54. 망고플레이트의 Architecture
분석이 필요한 모든 데이터를 한곳에
AWS S3 AWS Redshift
. . .
copy table
SQL DB records
to raw file
AWS EC2
Analytics
Visualization &
Consume
Collection Store
AWS RDS
AWS EC2
AWS EC2
AWS RDS
55. 무엇이 좋아졌을까요?
• Algorithm queries
• Restaurant Similarity: 600 초 > 80 초 (7.5배)
• Restaurant/User Recommendation: 720 초 > 80 초 (9배)
• Retention queries
• Base Table: 1200 초 > 60 초 (20배)
• Main: 2400 초 > 200 초 (12배)
분석 속도 개선
56. 무엇이 좋아졌을까요?
• Analytic function(window function) 들 적용
• median, dense_rank
• ntile, stddev_samp/stddev_pop
• JSON function들을 이용하여 쉽게 로그테이블 분석
• Json_extract_path_text
• json_extract_array_element_text
분석 Query들의 단순화
67. 요약
“데이터 버스”를 분리
• Data → Store → Process → Answers
작업에 적합한 도구를 사용
• Data structure, latency, throughput, access patterns
람다 아키텍처 아이디어 사용
• Immutable (append-only) log, batch/speed/serving layer
AWS 관리형 서비스 활용
• No/low admin
비용에 대한 고려
• Big data ≠ Big cost