SlideShare a Scribd company logo
©  2016,  Amazon  Web  Services,  Inc.  or  its  Affiliates.  All  rights  reserved.
2016년 5월 17일
실시간 데이터 분석 플랫폼을 위한
Amazon Kinesis와 Elasticsearch Service
박철수 | 솔루션즈 아키텍트
목차
• 실시간 데이터 분석 개요
• Amazon  Kinesis  Streams
• Amazon  Elasticsearch Service
데이터 분석 적용 분야
• 모바일 사용자 및 웹 클릭 스트림 분석
• 소셜 미디어 분석
• 사물 인터넷(IoT)
• 시스템 및 보안 로그 분석
• 애플리케이션 로그 및 웹 로그 분석
• 일반적인 웹 사이트 검색
• 지식 관리 시스템의 전체-텍스트 검색
스트림 처리 (실시간)
• 데이터 스트림에 있는
이벤트에 실시간 응답
마이크로-배치(준 실시간)
• 데이터 스트림에 있는
이벤트의 작은 배치에 대해
거의 실시간 운영
실시간 분석의 두 가지 주요 처리 패턴
• 예:
• 디바이스 로그에 있는
하드웨어 에러를 사전에
감지
• 재고가 임계값 아래로
떨어질 때 알림
• 예:
• 활동 로그에서 부정행위 식별
• 성능에 대한 SLA 모니터링
다양한 분석 도구
“Elasticsearch API에 직접
접속하는 것만으로
유연하고 빠르게 서비스를
만들 수 있는 Amazon  
Elasticsearch Services를
선택했습니다.”
Sean  Curtis,  
MLBAM  엔지니어링
부사장
“우리는 쉽고 빠르게
Kinesis를 시작하고 확장할
수 있었습니다.  AWS는
Snowplow를 호스팅할 수
있는 좋은 플랫폼입니다.”
Alexander  Dean,
Snowplow  창업자
고객의 소리
Amazon  
Glacier
S3 DynamoDB  
RDS
EMR
Amazon  
Redshift
Data  Pipeline
Amazon  
Kinesis  
CloudSearch
Kinesis-­enabled  
app
Lambda ML
SQS
ElastiCache
DynamoDB
Streams  
Amazon
Elasticsearch
Service
다양한 분석 도구
Amazon  Kinesis  
Streams
Amazon Kinesis Streams
스트리밍 데이터 처리 애플리케이션 구축
쉬운 관리: 새로운 스트림을 생성하고, 데이터 처리 속도와 볼륨에 맞는 용량과
파티션 구성
실시간 애플리케이션 구축: Kinesis  Client  Library,  Apache  Spark/Storm,  AWS  
Lambda 등을 사용하여 스트리밍 데이터에서 사용자 정의 레코드 처리를 수행
낮은 비용: 어떤 규모의 워크로드라도 비용 효율적임
클릭 스트림
데이터 전송
클릭 스트림 데이터를
저장 및 노출
KCL 기반 앱으로 실시간
개인화 컨텐츠 생성
개인화된
컨텐츠 제안
데이터
소스
앱#4
[머신 러닝]
AWS엔드포인트
앱#1
[집계 및
중복 제거]
데이터
소스
데이터
소스
데이터
소스
앱#2
[통계 지표
추출]
S3
DynamoDB
Redshift
앱#3
[슬라이딩
윈도우 분석]
데이터
소스
가용 영영
샤드 1
샤드 2
샤드 N
가영 영역 가용 영역
생산자(Producer) Amazon  Kinesis  Streams 소비자(Consumer)
Amazon Kinesis Streams
실시간 처리를 위한 관리형 서비스
샤드 2
Amazon Kinesis Streams
데이터 보존 및 저장을 위한 관리형 기능
• 스트림은 한개 이상의 샤드로 구성됨
• 각 샤드는 최대 1MB/초, 최대1,000 TPS
데이터 레코드 입력 가능
• 각 샤드는 최대 2 MB/초, 최대 5 TPS
데이터 레코드 배출 가능
• 모든 데이터는 기본으로 24시간동안
저장됨
• 데이터 보존 기간 연장 가능 (최대 7일)
• 샤드들을 분할하거나 병합을 통해 확장
• 보존 기간 내에 있는 데이터 다시 재생
가능
샤드 1
샤드 2
샤드 1
샤드 3
샤드 2
샤드 1
샤드 2
샤드 1
샤드 3
샤드 2
샤드 1
지금-24시간
1:00-7:00 7:00-13:00 13:00-19:00 19:00-1:00
분할
(split)
분할
(split)
병합
(merge)
Kinesis 스트림
스트림 데이터 저장
관리형 버퍼
• 데이터를 안전하고 확장 가능한
방법으로 취합해서 저장할 수
있는 방법 고려 시 선택
• 집계 및 계산은 모두
소비자(Consumer)에게 위임
• 랜덤 파티션 키 생성 및 사용
• 가능한 샤드들에 균일하게
배포하기 위해, 샤드의 파티션
키에 대해 높은 카디넬리티를
보장해야 함
입력 모델 고려
업무에 따라 파티션 키 선택하는 정책
스트리밍 맵-리듀스
• 자연스럽게 데이터를 집계하는
방법으로 파티션 키를 활용
• 확장할 수 있는 파티션 키 설계
• “핫 파티션 키와 샤드”에 주의
• 예:
빌링 고객마다 파티션 키 배정
장치 ID마다 파티션 키 배정
주식 심볼 당 파티션 키 배정
레코드 순서와 다중 샤드
순서 처리 요건에 따라 파티션 키 선택하는 정책
비순서 처리
• 많은 샤드들에 걸처서 분산하기 위해 랜덤
파티션 키를 사용하고 다중의
작업자(worker)들을 사용
정확한 순서 처리
• 파티션 키를 제어해서 동일한 샤드에 이벤트가
모이고 동일한 작업자가 읽을 수 있게 보장
두 가지 모두 필요? 전역 시퀀스 번호를 적용
전역 시퀀스 번호
얻기
비순서 스트림
캠페인 중심
스트림
부정행위 검사
스트림
이벤트 메타데이터
얻기
Id 이벤트 스트림 – 파티션 키
1 확인 캠페인 중심 스트림 - UUID
2 부정행위
비순서 스트림
부정행위 검사 스트림 – sessionid
생산자
Amazon Kinesis Streams 데이터 넣기
Put 인터페이스로 데이터 넣기
• Kinesis 생산자(Producer)는 PUT 호출을 통해서
데이터를 스트림에 저장. 각 레코드 <= 1 MB
• PutRecord {Data,StreamName,PartitionKey}
• PutRecords {Records{Data,PartitionKey},  
StreamName}
• 파티션 키는 생산자(producer)에 의해 제공되고
샤드들에 걸처 PUT 레코드들을 분산되는데
사용됨
• PUT 호출이 성공적으로 이루어지면 고유한
시퀀스 번호를 생산자에게 반환
생산자
생산자
생산자
생산자
생산자
생산자
생산자
생산자
생산자
샤드 1
샤드 2
샤드 3
샤드 4
샤드 n
PutRecords {Records {Data,PartitionKey}, StreamName}
• 500 레코드 지원
• 레코드 =<1 MB, 전체 요청에 대해서 최대 5 MB
• 다른 파티션 키를 갖는 레코드 포함 가능
• 순서 보장 안 됨
• 성공 응답 – 샤드 ID 및 시퀀스 번호
• 실패 응답
Kinesis PutRecords API
Kinesis에 효율적으로 쓰기 위한 높은 처리량을 제공하는 API
• 실패 응답 예
• 재전송하기 위해, PutRecordsResult 오브젝트 조사
• 실패한 레코드를 확인하기 위해, FailedRecordCount 파라미터 검사
• 그리고, ErrorCode != NULL인 각 putRecordsEntry는 후속 요청에 추가 되어야
함
Kinesis PutRecords API (계속)
실패한 레코드 처리
소비자 애플리케이션과 Stream API 사이의 중개자 역할
• 페이로드 크기를 증가시키고 처리량을 향상시키기 위해 사용자 레코드를
한데 모음
• 레코드들을 수집하고 다중의 레코드를 한 번의 요청으로 여러 샤드들에
쓰기위해 PutRecords 이용
• 자동 및 구성 가능한 재시도 메커니즘을 이용하여 하나 이상의 스트림들에
쓰기
• 배치 처리된 레코드들을 분리하기 위해 Amazon KCL와 완벽하게 통합
• 생산자(producer) 성능에 대한 가시성을 제공하기 위해 투명하게
CloudWatch 메트릭 제출
• 예제
https://github.com/awslabs/amazon-kinesis-producer/tree/master/java
Amazon Kinesis Producer Library
Amazon Kinesis 에이전트
• 사전 구축된 독립형 Java 애플리케이션
- http://docs.aws.amazon.com/streams/latest/dev/writing-­with-­agents.html
더 나은 효율성을 위해 넣기 전에 사전 배치 작업 수행:
• Flume,FLuntD 에이전트
- https://github.com/awslabs/aws-­fluent-­plugin-­kinesis
기존 로깅 환경 활용하기
• log4j  appender 옵션
-­ https://github.com/awslabs/kinesis-­log4j-­appender
Amazon Kinesis에 데이터 넣기
스트림 데이터 처리
Get 인터페이스로 데이터 읽기
• 샤드 기반으로 스트림으로부터 데이터 읽기
• 스트림에서 데이터를 찾아오는 getRecords 와 getShardIterator API  제공:
• getRecords {Limit,  ShardIterator}
• getShardIterator {ShardID,  ShardIteratorType,  StartingSequenceNumber,  
StreamName}
• 샤드 반복자(iterator)는 샤드내에서 조회될 레코드의 위치를 결정:
• AT_SEQUENCE_NUMBER  : 명시된 시퀀스 번호부터 읽기
• AFTER_SEQUENCE_NUMBER : 명시된 시퀀스 번호 이후부터 읽기
• TRIM_HORIZON  : 가장 오래된 레코드부터 읽기
• LATEST  : 가장 최근의 레코드부터 읽기
Amazon Kinesis Streams 데이터 읽기 API
Kinesis Client Library를 이용한 데이터 읽기 및 처리
내결함성, 적어도 한 번 보장, 실시간 처리를 위한 클라이언트 라이브러리
Shard 1
Shard 2
Shard 3
Shard n
Shard 4
KCL Worker 1
KCL Worker 2
EC2 Instance
KCL Worker 3
KCL Worker 4
EC2 Instance
KCL Worker n
EC2 Instance
Kinesis
Kinesis  Client  Library  (KCL)
• 각 샤드로부터의 코드를 추상화
시킴으로해서 스트림으로부터의 읽기를
간소화시킴
• 각 샤드마다 자동적으로 Kinesis
작업자(worker) 시작
• 샤드의 수가 변경될 때 Kinesis 작업자의
수도 증가 및 감소
• 스트림내의 작업자 위치를 추적하기 위해
체크포인트 사용
• 작업자들이 실패하는 경우 재시작
샤드 1
샤드 2
샤드 3
샤드 4
샤드 n
KCL 작업자 1
KCL 작업자 2
KCL 작업자 3
KCL 작업자 4
KCL 작업자 n
Amazon  
EMR
Amazon  
Kinesis  
Streams
HDFS
텀블링/고정
윈도우 집계
주기적인 출력
Amazon  
Redshift
EMR에서 COPY
스트리밍 입력
https://github.com/awslabs/kinesis-­storm-­spout
Apache Spark 및 Storm 과 통합 패턴
데이터
스트림
Amazon  
Kinesis  Streams
AWS  Lambda와 통합 패턴
스트림
Amazon
Kinesis
Streams
고객 애플리케이션
Console.log(‘Lo
ading function’);
Exports.handler
= function(…)
AWS Lambda
Lambda 함수
실행 규칙
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
Amazon  Kinesis  Streams으로 데이터 넣고 사용하기
4-6 백만 사용자 일일 활동 (DAU)
10억+ 글로벌 설치 (2010년 이후)
47개 샤드
[4] C4.2XL, [2] M3.Large
(ZK), [1] M3.Xlarge (Nimbus)
최대 1.2TB/일
Glu의 실시간 데이터 분석 아키텍처
7억~20억 이벤트/일
600B/이벤트
최대 1.2TB/일
Amazon  
Redshift
Backfill
Aggregates
Lightweight  Front-­End
Real-­time
Aggregates
Amazon  Kinesis
Storm  Spout
Amazon  Kinesis
Connectors
Aggregates
CDN
Real-time
Bidding
Retargeting
Platform
Reporting
Qubole
Real Time
AppsKCL Apps
Archiver
Amazon
Kinesis Streams
Event Replay Amazon S3
3억+ 이벤트
12 TB/ 주
100개 샤드
42KB / 이벤트
DataXu의 실시간 데이터 분석 아키텍처
수집 저장 처리 소비
10만+ 장치 설치
15억 이벤트
3TB/일
25개 샤드
2KB / 일
[5] C4.2XL
KCL
Sonos의 실시간 데이터 분석 아키텍처
Amazon S3
Amazon
Kinesis Streams
Amazon EMR
Amazon  Elasticsearch
Service
Elasticsearch 소개
강력한 실시간 분산 기반 검색 및 분석 엔진
• 2010년에 처음 출시되어 인기 오픈 소스 검색 및 분석 엔진으로 성장
• Apache Lucene 기반으로 수백대까지 분산 클러스터를 구성 가능
• 유연한 스키마를 가진 JSON 데이터 스토어
• 개발자 친화적 RESTful API 제공
Elasticsearch 특징
강력한 실시간 분산 기반 검색 및 분석 엔진:
• 2010년에 처음 출시되어 인기 오픈 소스 검색 및 분석 엔진으로 성장
• Apache Lucene 기반으로 수백대까지 분산 클러스터를 구성 가능
• 유연한 스키마를 가진 JSON 데이터 스토어
• 개발자 친화적 RESTful API 제공
로그 수집기인 Logstash와 시각화 도구인
Kibana를 연결하여, ELK 스택을 통해 강력한
실시간 데이터 분석이 가능!
Amazon  Elasticsearch Service는 ES
클러스터를 클라우드에 설치, 운영 및
확장을 용이하고 하는 관리형 서비스로
AWS 여러 서비스와 연계하기에
편리합니다!
Amazon Elasticsearch Service란?
손쉽게
클러스터 설정
및 관리 가능
ELK 스택 지원
AWS IAM을
통한 사용자
인증 및
CloudWatch를
통한 모니터링
다른 AWS
자원과 손쉽게
통합 가능
Amazon Elasticsearch Service의 주요 이점
Amazon Elasticsearch 도메인
아키텍처
Amazon Elasticsearch 도메인 아키텍처 개요
Amazon  Route  
53
Elastic  Load
Balancing
IAM
CloudWatch
Elasticsearch API
CloudTrail
노드 관리 – 마스터노드+데이터노드
단일 엔드포인트, REST  API
IAM 통합
모니터링 – CloudWatch/CloudTrail
Shard 1 Shard 2
{
{
Id Id Id . . .
도큐먼트
{
인덱스
• 도큐먼트(document): 검색
단위 문서
• ID: 문서 고유 식별자. 문서당
하나
• 샤드(shard): 인덱스의 한
파트를 갖는 Lucene 인스턴스
• 인덱스(index): 검색 데이터
집합
Amazon Elasticsearch 도메인 내부 용어
샤드 1 샤드 2
• 인덱스 1
• 샤드 1
• 샤드 2
• 샤드 3
• 인덱스 2
• 샤드 1
• 샤드 2
• 샤드 3
Amazon  Elasticsearch 클러스터
1
2
3
1
2
3
1
2
3
1
2
3
주
(primary)
복제
(replica)
1
3
3
1
인스턴스 1
2
1
1
2
인스턴스 2
3
2
2
3
인스턴스 3
Amazon Elasticsearch 도메인 클러스터
Amazon Elasticsearch 도메인 접근 제어
사용자 기반 권한 관리
{
"Version":  "2012-­10-­17",
"Statement":  [
{
"Sid":  "",
"Effect":  "Allow",
"Principal":  {
"AWS":  "arn:aws:iam:123456789012:user/susan"
},
"Action":  [  "es:ESHttpGet",  "es:ESHttpPut",  "es:ESHttpPost",  
"es:CreateElasticsearchDomain",
"es:ListDomainNames"  ],
"Resource":  
"arn:aws:es:ap-­northeast-­2:###:domain/logs/<index>/*"
}  ]  }
HTTP 메소드에 따른 허용/거부 및 정책 설정
인덱스에 대한 세부적인 권한 관리
Amazon Elasticsearch 도메인 접근 제어
IP 주소 기반 접근 제어 가능
{
"Version":  "2012-­10-­17",
"Statement":  [
{
"Sid":  "",
"Effect":  "Allow",
"Principal":  {
"AWS":  "*"
},
"Action":  [  "es:ESHttpGet",  "es:ESHttpPut",  "es:ESHttpPost",
"es:CreateElasticsearchDomain",
"es:ListDomainNames"  ],
"Resource":  
"arn:aws:es:ap-­northeast-­2:###:domain/logs/<index>/*"
"Condition":
"IpAddress":  {
"aws:SourceIp":  [  "xx.xx.xx.xx/yy"  ]
}  }  ]  }
시각화 도구 Kibana 기본 내장
Logstash 인덱서
Amazon
Elasticsearch
Service
애플리케이션 노드/
Logstash 포워더
API
엔드포인트
Kibana URL
• Endpoint  search-­domain-­id.ap-­northeast-­2.es.amazonaws.com
• Kibana search-­domain-­id.ap-­northeast-­2.es.mazonaws.com/_plungin/kibana/
Kibana UI
데이터 로딩
Elasticsearch API로 직접 접근
$  curl  -­XPUT  https://<endpoint>/blog  -­d  '{
"settings"  :  {  "number_of_shards"  :  3,  "number_of_replicas"  :  1  }  }'
$  curl  -­XPOST  http://<endpoint>/blog/post/1   -­d  '{
"author":"jon handler",
"title":"Amazon ES  Launch"  }'
$  curl  -­XPOST  https://<endpoint>/blog/post/_bulk   -­d  '
{  "index"  :  {  "_index"  :  "blog",  "_type"  :  "post",  "_id"  :  "2"}}
{"title":"Amazon ES  for  search",  "author":  "pravin pillai"},
{  "index"  :  {  "_index":"blog",  "_type":"post",  "_id":"3"  }  }
{  "title":"Analytics too",  "author":  "vivek sriram"}'
$  curl  -­XGET  http://<endpoint>/_search?q=ES
{"took":16,"timed_out":false,"_shards":{"total":3,"successful":3,"failed":0},"hits":{"total":2,"max_score":0.13424811
,"hits":[{"_index":"blog","_type":"post","_id":"1","_score":0.13424811,"_source":{"author":"jon handler",  "title":"Amazon
ES  Launch"  }},{"_index":"blog","_type":"post","_id":"2","_score":0.11506981,"_source":{"title":"Amazon ES  for  search",  
"author":  "pravin pillai"},}]}}
Logstash를 통한 데이터 로딩
애플리케이션 노드/
Logstash 포워더
Logstash 인덱서 Amazon  
Elasticsearch  
Service
https://github.com/awslabs/logstash-­output-­amazon_es
• Logstash는 다양한 시스템에서
발생하는 로그나 이벤트를
처리할 수 있도록 해주는
데이터 파이프라인
• Elasticsearch 도메인으로
데이터를 쉽게 보낼 수 있도록
함
• Github에 Amazon
Elasticsearch Service를 위한
Logstash 출력 플러그-인 제공
AWS  Lambda를 통한 데이터 전달
Amazon  
Lambda
Amazon  
Elasticsearch  
Service
Amazon  S3
DynamoDB
Amazon  
Kinesis  
Streams
https://github.com/awslabs/amazon-­elasticsearch-­lambda-­samples
• AWS Lambda는 이벤트에
응답하여 코드를 실행하고
자동으로 기본 컴퓨팅
리소스를 관리하는 서버 없는
컴퓨팅 서비스
• Lambda를 이용해서 AWS
다양한 서비스로부터 데이터를
Elasticsearch 도메인으로 쉽게
전달
• Java, Node.js, 및 python 언어
지원
CloudWatch Logs를 통한 데이터 스트리밍
CloudWatch
Logs
Amazon  
Elasticsearch  
Service
• Amazon CloudWatch Logs를
통해 시스템, 애플리케이션 및
커스텀 로그를 통합하고
모니터링 가능
• AWS의 S3, ELB, VPC Flow logs,
Config 및 CloudTail 등과 같은
다양한 서비스들도
CloudWatch Logs에 통합됨
• Amzon CloudWatch Logs에
통합된 로그 데이터를 쉽게 ES
도메인으로 스트리밍 할 수
있는 기능 제공
13시 ~ 18시
Amazon
Elasticsearch
Service
실시간 분석
Amazon
SNS
푸시 메시지 전송
13시/18시 이벤트 개시/종료 -> 푸시 메시지 전송 -> 데이터 수집 -> 처리 -> 실시간 분석
Lambda
Scheduling
매일 13시/18시
이벤트 개시/종료
Lambda
데이터 처리
매일 12시 30분
게임 서버 확장
Lambda
Scheduling
12시 30분
Kinesis
인게임 이벤트 시스템 아키텍처
데이터 수집
왜? AWS 분석 서비스
쉬운 관리 탄력성
다양한 AWS
서비스와 통합
낮은 가격
감사합니다

More Related Content

What's hot (20)

PDF
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
 
PDF
Azure Network 概要
Takeshi Fukuhara
 
PDF
AWS Finance Symposium_바로 도입할 수 있는 금융권 업무의 클라우드 아키텍처 알아보기
Amazon Web Services Korea
 
PDF
마이크로 서비스를 위한 AWS Cloud Map & App Mesh - Saeho Kim (AWS Solutions Architect)
Amazon Web Services Korea
 
PDF
Amazon SageMaker 推論エンドポイントを利用したアプリケーション開発
Amazon Web Services Japan
 
PDF
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Amazon Web Services Korea
 
PDF
AWS Summit Seoul 2023 | 삼성전자/쿠팡의 대규모 트래픽 처리를 위한 클라우드 네이티브 데이터베이스 활용
Amazon Web Services Korea
 
PDF
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Web Services Korea
 
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
PDF
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
Amazon Web Services Korea
 
PDF
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
VMware Tanzu Korea
 
PDF
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
Amazon Web Services Korea
 
PDF
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
PDF
Microsoft Azure Storage 概要
Takeshi Fukuhara
 
PDF
Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
PDF
AWS 네트워크 보안을 위한 계층별 보안 구성 모범 사례 – 조이정, AWS 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
Amazon Web Services Korea
 
PDF
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
 
PDF
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
 
PDF
Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기
Amazon Web Services Korea
 
PPTX
AWS CloudFront 가속 및 DDoS 방어
Kyle(KY) Yang
 
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
 
Azure Network 概要
Takeshi Fukuhara
 
AWS Finance Symposium_바로 도입할 수 있는 금융권 업무의 클라우드 아키텍처 알아보기
Amazon Web Services Korea
 
마이크로 서비스를 위한 AWS Cloud Map & App Mesh - Saeho Kim (AWS Solutions Architect)
Amazon Web Services Korea
 
Amazon SageMaker 推論エンドポイントを利用したアプリケーション開発
Amazon Web Services Japan
 
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Amazon Web Services Korea
 
AWS Summit Seoul 2023 | 삼성전자/쿠팡의 대규모 트래픽 처리를 위한 클라우드 네이티브 데이터베이스 활용
Amazon Web Services Korea
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Web Services Korea
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive
Amazon Web Services Korea
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
VMware Tanzu Korea
 
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
Amazon Web Services Korea
 
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
Microsoft Azure Storage 概要
Takeshi Fukuhara
 
Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
AWS 네트워크 보안을 위한 계층별 보안 구성 모범 사례 – 조이정, AWS 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
Amazon Web Services Korea
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
 
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
 
Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기
Amazon Web Services Korea
 
AWS CloudFront 가속 및 DDoS 방어
Kyle(KY) Yang
 

Similar to Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summit Seoul 2016 (20)

PDF
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
Amazon Web Services Korea
 
PDF
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
Amazon Web Services Korea
 
PDF
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
Amazon Web Services Korea
 
PDF
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
Amazon Web Services Korea
 
PDF
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
Amazon Web Services Korea
 
PDF
빅데이터를 위한 AWS 모범사례와 아키텍처 구축 패턴 :: 양승도 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
PDF
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
강 민우
 
PDF
AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Amazon Web Services Korea
 
PDF
Ad-Tech on AWS 세미나 | AWS와 데이터 분석
Amazon Web Services Korea
 
PDF
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
PDF
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
eungjin cho
 
PDF
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
Amazon Web Services Korea
 
PDF
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
Amazon Web Services Korea
 
PDF
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
PDF
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
Amazon Web Services Korea
 
PDF
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon Web Services Korea
 
PDF
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
Amazon Web Services Korea
 
PDF
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
Amazon Web Services Korea
 
PDF
AWS CLOUD 2017 - AWS 신규 서비스를 통해 본 클라우드의 미래 (김봉환 솔루션즈 아키텍트)
Amazon Web Services Korea
 
PPTX
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
Jemin Huh
 
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
Amazon Web Services Korea
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
Amazon Web Services Korea
 
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
Amazon Web Services Korea
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
Amazon Web Services Korea
 
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
Amazon Web Services Korea
 
빅데이터를 위한 AWS 모범사례와 아키텍처 구축 패턴 :: 양승도 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발
강 민우
 
AWS 서버리스 컴퓨팅-김필중 :: 2015 리인벤트 리캡 게이밍
Amazon Web Services Korea
 
Ad-Tech on AWS 세미나 | AWS와 데이터 분석
Amazon Web Services Korea
 
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
eungjin cho
 
AWS Lambda를 기반으로한 실시간 빅테이터 처리하기
Amazon Web Services Korea
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
Amazon Web Services Korea
 
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
SeungYong Oh
 
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
Amazon Web Services Korea
 
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon Web Services Korea
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
Amazon Web Services Korea
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
Amazon Web Services Korea
 
AWS CLOUD 2017 - AWS 신규 서비스를 통해 본 클라우드의 미래 (김봉환 솔루션즈 아키텍트)
Amazon Web Services Korea
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
Jemin Huh
 
Ad

More from Amazon Web Services Korea (20)

PDF
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
Amazon Web Services Korea
 
PDF
[D3T1S06] Neptune Analytics with Vector Similarity Search
Amazon Web Services Korea
 
PDF
[D3T1S03] Amazon DynamoDB design puzzlers
Amazon Web Services Korea
 
PDF
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
Amazon Web Services Korea
 
PDF
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
Amazon Web Services Korea
 
PDF
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
Amazon Web Services Korea
 
PDF
[D3T1S02] Aurora Limitless Database Introduction
Amazon Web Services Korea
 
PDF
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
Amazon Web Services Korea
 
PDF
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
Amazon Web Services Korea
 
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 2
Amazon Web Services Korea
 
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 1
Amazon Web Services Korea
 
PDF
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
Amazon Web Services Korea
 
PDF
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon Web Services Korea
 
PDF
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Web Services Korea
 
PDF
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Amazon Web Services Korea
 
PDF
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
Amazon Web Services Korea
 
PDF
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Amazon Web Services Korea
 
PDF
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon Web Services Korea
 
PDF
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon Web Services Korea
 
PDF
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Amazon Web Services Korea
 
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
Amazon Web Services Korea
 
[D3T1S06] Neptune Analytics with Vector Similarity Search
Amazon Web Services Korea
 
[D3T1S03] Amazon DynamoDB design puzzlers
Amazon Web Services Korea
 
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
Amazon Web Services Korea
 
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
Amazon Web Services Korea
 
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
Amazon Web Services Korea
 
[D3T1S02] Aurora Limitless Database Introduction
Amazon Web Services Korea
 
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
Amazon Web Services Korea
 
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
Amazon Web Services Korea
 
AWS Modern Infra with Storage Roadshow 2023 - Day 2
Amazon Web Services Korea
 
AWS Modern Infra with Storage Roadshow 2023 - Day 1
Amazon Web Services Korea
 
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
Amazon Web Services Korea
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon Web Services Korea
 
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Web Services Korea
 
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Amazon Web Services Korea
 
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
Amazon Web Services Korea
 
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Amazon Web Services Korea
 
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon Web Services Korea
 
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon Web Services Korea
 
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Amazon Web Services Korea
 
Ad

Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summit Seoul 2016

  • 1. ©  2016,  Amazon  Web  Services,  Inc.  or  its  Affiliates.  All  rights  reserved. 2016년 5월 17일 실시간 데이터 분석 플랫폼을 위한 Amazon Kinesis와 Elasticsearch Service 박철수 | 솔루션즈 아키텍트
  • 2. 목차 • 실시간 데이터 분석 개요 • Amazon  Kinesis  Streams • Amazon  Elasticsearch Service
  • 3. 데이터 분석 적용 분야 • 모바일 사용자 및 웹 클릭 스트림 분석 • 소셜 미디어 분석 • 사물 인터넷(IoT) • 시스템 및 보안 로그 분석 • 애플리케이션 로그 및 웹 로그 분석 • 일반적인 웹 사이트 검색 • 지식 관리 시스템의 전체-텍스트 검색
  • 4. 스트림 처리 (실시간) • 데이터 스트림에 있는 이벤트에 실시간 응답 마이크로-배치(준 실시간) • 데이터 스트림에 있는 이벤트의 작은 배치에 대해 거의 실시간 운영 실시간 분석의 두 가지 주요 처리 패턴 • 예: • 디바이스 로그에 있는 하드웨어 에러를 사전에 감지 • 재고가 임계값 아래로 떨어질 때 알림 • 예: • 활동 로그에서 부정행위 식별 • 성능에 대한 SLA 모니터링
  • 6. “Elasticsearch API에 직접 접속하는 것만으로 유연하고 빠르게 서비스를 만들 수 있는 Amazon   Elasticsearch Services를 선택했습니다.” Sean  Curtis,   MLBAM  엔지니어링 부사장 “우리는 쉽고 빠르게 Kinesis를 시작하고 확장할 수 있었습니다.  AWS는 Snowplow를 호스팅할 수 있는 좋은 플랫폼입니다.” Alexander  Dean, Snowplow  창업자 고객의 소리
  • 7. Amazon   Glacier S3 DynamoDB   RDS EMR Amazon   Redshift Data  Pipeline Amazon   Kinesis   CloudSearch Kinesis-­enabled   app Lambda ML SQS ElastiCache DynamoDB Streams   Amazon Elasticsearch Service 다양한 분석 도구
  • 9. Amazon Kinesis Streams 스트리밍 데이터 처리 애플리케이션 구축 쉬운 관리: 새로운 스트림을 생성하고, 데이터 처리 속도와 볼륨에 맞는 용량과 파티션 구성 실시간 애플리케이션 구축: Kinesis  Client  Library,  Apache  Spark/Storm,  AWS   Lambda 등을 사용하여 스트리밍 데이터에서 사용자 정의 레코드 처리를 수행 낮은 비용: 어떤 규모의 워크로드라도 비용 효율적임 클릭 스트림 데이터 전송 클릭 스트림 데이터를 저장 및 노출 KCL 기반 앱으로 실시간 개인화 컨텐츠 생성 개인화된 컨텐츠 제안
  • 10. 데이터 소스 앱#4 [머신 러닝] AWS엔드포인트 앱#1 [집계 및 중복 제거] 데이터 소스 데이터 소스 데이터 소스 앱#2 [통계 지표 추출] S3 DynamoDB Redshift 앱#3 [슬라이딩 윈도우 분석] 데이터 소스 가용 영영 샤드 1 샤드 2 샤드 N 가영 영역 가용 영역 생산자(Producer) Amazon  Kinesis  Streams 소비자(Consumer) Amazon Kinesis Streams 실시간 처리를 위한 관리형 서비스
  • 11. 샤드 2 Amazon Kinesis Streams 데이터 보존 및 저장을 위한 관리형 기능 • 스트림은 한개 이상의 샤드로 구성됨 • 각 샤드는 최대 1MB/초, 최대1,000 TPS 데이터 레코드 입력 가능 • 각 샤드는 최대 2 MB/초, 최대 5 TPS 데이터 레코드 배출 가능 • 모든 데이터는 기본으로 24시간동안 저장됨 • 데이터 보존 기간 연장 가능 (최대 7일) • 샤드들을 분할하거나 병합을 통해 확장 • 보존 기간 내에 있는 데이터 다시 재생 가능 샤드 1 샤드 2 샤드 1 샤드 3 샤드 2 샤드 1 샤드 2 샤드 1 샤드 3 샤드 2 샤드 1 지금-24시간 1:00-7:00 7:00-13:00 13:00-19:00 19:00-1:00 분할 (split) 분할 (split) 병합 (merge) Kinesis 스트림
  • 13. 관리형 버퍼 • 데이터를 안전하고 확장 가능한 방법으로 취합해서 저장할 수 있는 방법 고려 시 선택 • 집계 및 계산은 모두 소비자(Consumer)에게 위임 • 랜덤 파티션 키 생성 및 사용 • 가능한 샤드들에 균일하게 배포하기 위해, 샤드의 파티션 키에 대해 높은 카디넬리티를 보장해야 함 입력 모델 고려 업무에 따라 파티션 키 선택하는 정책 스트리밍 맵-리듀스 • 자연스럽게 데이터를 집계하는 방법으로 파티션 키를 활용 • 확장할 수 있는 파티션 키 설계 • “핫 파티션 키와 샤드”에 주의 • 예: 빌링 고객마다 파티션 키 배정 장치 ID마다 파티션 키 배정 주식 심볼 당 파티션 키 배정
  • 14. 레코드 순서와 다중 샤드 순서 처리 요건에 따라 파티션 키 선택하는 정책 비순서 처리 • 많은 샤드들에 걸처서 분산하기 위해 랜덤 파티션 키를 사용하고 다중의 작업자(worker)들을 사용 정확한 순서 처리 • 파티션 키를 제어해서 동일한 샤드에 이벤트가 모이고 동일한 작업자가 읽을 수 있게 보장 두 가지 모두 필요? 전역 시퀀스 번호를 적용 전역 시퀀스 번호 얻기 비순서 스트림 캠페인 중심 스트림 부정행위 검사 스트림 이벤트 메타데이터 얻기 Id 이벤트 스트림 – 파티션 키 1 확인 캠페인 중심 스트림 - UUID 2 부정행위 비순서 스트림 부정행위 검사 스트림 – sessionid 생산자
  • 15. Amazon Kinesis Streams 데이터 넣기 Put 인터페이스로 데이터 넣기 • Kinesis 생산자(Producer)는 PUT 호출을 통해서 데이터를 스트림에 저장. 각 레코드 <= 1 MB • PutRecord {Data,StreamName,PartitionKey} • PutRecords {Records{Data,PartitionKey},   StreamName} • 파티션 키는 생산자(producer)에 의해 제공되고 샤드들에 걸처 PUT 레코드들을 분산되는데 사용됨 • PUT 호출이 성공적으로 이루어지면 고유한 시퀀스 번호를 생산자에게 반환 생산자 생산자 생산자 생산자 생산자 생산자 생산자 생산자 생산자 샤드 1 샤드 2 샤드 3 샤드 4 샤드 n
  • 16. PutRecords {Records {Data,PartitionKey}, StreamName} • 500 레코드 지원 • 레코드 =<1 MB, 전체 요청에 대해서 최대 5 MB • 다른 파티션 키를 갖는 레코드 포함 가능 • 순서 보장 안 됨 • 성공 응답 – 샤드 ID 및 시퀀스 번호 • 실패 응답 Kinesis PutRecords API Kinesis에 효율적으로 쓰기 위한 높은 처리량을 제공하는 API
  • 17. • 실패 응답 예 • 재전송하기 위해, PutRecordsResult 오브젝트 조사 • 실패한 레코드를 확인하기 위해, FailedRecordCount 파라미터 검사 • 그리고, ErrorCode != NULL인 각 putRecordsEntry는 후속 요청에 추가 되어야 함 Kinesis PutRecords API (계속) 실패한 레코드 처리
  • 18. 소비자 애플리케이션과 Stream API 사이의 중개자 역할 • 페이로드 크기를 증가시키고 처리량을 향상시키기 위해 사용자 레코드를 한데 모음 • 레코드들을 수집하고 다중의 레코드를 한 번의 요청으로 여러 샤드들에 쓰기위해 PutRecords 이용 • 자동 및 구성 가능한 재시도 메커니즘을 이용하여 하나 이상의 스트림들에 쓰기 • 배치 처리된 레코드들을 분리하기 위해 Amazon KCL와 완벽하게 통합 • 생산자(producer) 성능에 대한 가시성을 제공하기 위해 투명하게 CloudWatch 메트릭 제출 • 예제 https://github.com/awslabs/amazon-kinesis-producer/tree/master/java Amazon Kinesis Producer Library
  • 19. Amazon Kinesis 에이전트 • 사전 구축된 독립형 Java 애플리케이션 - http://docs.aws.amazon.com/streams/latest/dev/writing-­with-­agents.html 더 나은 효율성을 위해 넣기 전에 사전 배치 작업 수행: • Flume,FLuntD 에이전트 - https://github.com/awslabs/aws-­fluent-­plugin-­kinesis 기존 로깅 환경 활용하기 • log4j  appender 옵션 -­ https://github.com/awslabs/kinesis-­log4j-­appender Amazon Kinesis에 데이터 넣기
  • 21. Get 인터페이스로 데이터 읽기 • 샤드 기반으로 스트림으로부터 데이터 읽기 • 스트림에서 데이터를 찾아오는 getRecords 와 getShardIterator API  제공: • getRecords {Limit,  ShardIterator} • getShardIterator {ShardID,  ShardIteratorType,  StartingSequenceNumber,   StreamName} • 샤드 반복자(iterator)는 샤드내에서 조회될 레코드의 위치를 결정: • AT_SEQUENCE_NUMBER  : 명시된 시퀀스 번호부터 읽기 • AFTER_SEQUENCE_NUMBER : 명시된 시퀀스 번호 이후부터 읽기 • TRIM_HORIZON  : 가장 오래된 레코드부터 읽기 • LATEST  : 가장 최근의 레코드부터 읽기 Amazon Kinesis Streams 데이터 읽기 API
  • 22. Kinesis Client Library를 이용한 데이터 읽기 및 처리 내결함성, 적어도 한 번 보장, 실시간 처리를 위한 클라이언트 라이브러리 Shard 1 Shard 2 Shard 3 Shard n Shard 4 KCL Worker 1 KCL Worker 2 EC2 Instance KCL Worker 3 KCL Worker 4 EC2 Instance KCL Worker n EC2 Instance Kinesis Kinesis  Client  Library  (KCL) • 각 샤드로부터의 코드를 추상화 시킴으로해서 스트림으로부터의 읽기를 간소화시킴 • 각 샤드마다 자동적으로 Kinesis 작업자(worker) 시작 • 샤드의 수가 변경될 때 Kinesis 작업자의 수도 증가 및 감소 • 스트림내의 작업자 위치를 추적하기 위해 체크포인트 사용 • 작업자들이 실패하는 경우 재시작 샤드 1 샤드 2 샤드 3 샤드 4 샤드 n KCL 작업자 1 KCL 작업자 2 KCL 작업자 3 KCL 작업자 4 KCL 작업자 n
  • 23. Amazon   EMR Amazon   Kinesis   Streams HDFS 텀블링/고정 윈도우 집계 주기적인 출력 Amazon   Redshift EMR에서 COPY 스트리밍 입력 https://github.com/awslabs/kinesis-­storm-­spout Apache Spark 및 Storm 과 통합 패턴 데이터 스트림 Amazon   Kinesis  Streams
  • 24. AWS  Lambda와 통합 패턴 스트림 Amazon Kinesis Streams 고객 애플리케이션 Console.log(‘Lo ading function’); Exports.handler = function(…) AWS Lambda Lambda 함수 실행 규칙
  • 25. 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 Amazon  Kinesis  Streams으로 데이터 넣고 사용하기
  • 26. 4-6 백만 사용자 일일 활동 (DAU) 10억+ 글로벌 설치 (2010년 이후) 47개 샤드 [4] C4.2XL, [2] M3.Large (ZK), [1] M3.Xlarge (Nimbus) 최대 1.2TB/일 Glu의 실시간 데이터 분석 아키텍처 7억~20억 이벤트/일 600B/이벤트 최대 1.2TB/일 Amazon   Redshift Backfill Aggregates Lightweight  Front-­End Real-­time Aggregates Amazon  Kinesis Storm  Spout Amazon  Kinesis Connectors Aggregates
  • 27. CDN Real-time Bidding Retargeting Platform Reporting Qubole Real Time AppsKCL Apps Archiver Amazon Kinesis Streams Event Replay Amazon S3 3억+ 이벤트 12 TB/ 주 100개 샤드 42KB / 이벤트 DataXu의 실시간 데이터 분석 아키텍처
  • 28. 수집 저장 처리 소비 10만+ 장치 설치 15억 이벤트 3TB/일 25개 샤드 2KB / 일 [5] C4.2XL KCL Sonos의 실시간 데이터 분석 아키텍처 Amazon S3 Amazon Kinesis Streams Amazon EMR
  • 30. Elasticsearch 소개 강력한 실시간 분산 기반 검색 및 분석 엔진 • 2010년에 처음 출시되어 인기 오픈 소스 검색 및 분석 엔진으로 성장 • Apache Lucene 기반으로 수백대까지 분산 클러스터를 구성 가능 • 유연한 스키마를 가진 JSON 데이터 스토어 • 개발자 친화적 RESTful API 제공
  • 31. Elasticsearch 특징 강력한 실시간 분산 기반 검색 및 분석 엔진: • 2010년에 처음 출시되어 인기 오픈 소스 검색 및 분석 엔진으로 성장 • Apache Lucene 기반으로 수백대까지 분산 클러스터를 구성 가능 • 유연한 스키마를 가진 JSON 데이터 스토어 • 개발자 친화적 RESTful API 제공 로그 수집기인 Logstash와 시각화 도구인 Kibana를 연결하여, ELK 스택을 통해 강력한 실시간 데이터 분석이 가능!
  • 32. Amazon  Elasticsearch Service는 ES 클러스터를 클라우드에 설치, 운영 및 확장을 용이하고 하는 관리형 서비스로 AWS 여러 서비스와 연계하기에 편리합니다! Amazon Elasticsearch Service란?
  • 33. 손쉽게 클러스터 설정 및 관리 가능 ELK 스택 지원 AWS IAM을 통한 사용자 인증 및 CloudWatch를 통한 모니터링 다른 AWS 자원과 손쉽게 통합 가능 Amazon Elasticsearch Service의 주요 이점
  • 35. Amazon Elasticsearch 도메인 아키텍처 개요 Amazon  Route   53 Elastic  Load Balancing IAM CloudWatch Elasticsearch API CloudTrail 노드 관리 – 마스터노드+데이터노드 단일 엔드포인트, REST  API IAM 통합 모니터링 – CloudWatch/CloudTrail
  • 36. Shard 1 Shard 2 { { Id Id Id . . . 도큐먼트 { 인덱스 • 도큐먼트(document): 검색 단위 문서 • ID: 문서 고유 식별자. 문서당 하나 • 샤드(shard): 인덱스의 한 파트를 갖는 Lucene 인스턴스 • 인덱스(index): 검색 데이터 집합 Amazon Elasticsearch 도메인 내부 용어 샤드 1 샤드 2
  • 37. • 인덱스 1 • 샤드 1 • 샤드 2 • 샤드 3 • 인덱스 2 • 샤드 1 • 샤드 2 • 샤드 3 Amazon  Elasticsearch 클러스터 1 2 3 1 2 3 1 2 3 1 2 3 주 (primary) 복제 (replica) 1 3 3 1 인스턴스 1 2 1 1 2 인스턴스 2 3 2 2 3 인스턴스 3 Amazon Elasticsearch 도메인 클러스터
  • 38. Amazon Elasticsearch 도메인 접근 제어 사용자 기반 권한 관리 { "Version":  "2012-­10-­17", "Statement":  [ { "Sid":  "", "Effect":  "Allow", "Principal":  { "AWS":  "arn:aws:iam:123456789012:user/susan" }, "Action":  [  "es:ESHttpGet",  "es:ESHttpPut",  "es:ESHttpPost",   "es:CreateElasticsearchDomain", "es:ListDomainNames"  ], "Resource":   "arn:aws:es:ap-­northeast-­2:###:domain/logs/<index>/*" }  ]  } HTTP 메소드에 따른 허용/거부 및 정책 설정 인덱스에 대한 세부적인 권한 관리
  • 39. Amazon Elasticsearch 도메인 접근 제어 IP 주소 기반 접근 제어 가능 { "Version":  "2012-­10-­17", "Statement":  [ { "Sid":  "", "Effect":  "Allow", "Principal":  { "AWS":  "*" }, "Action":  [  "es:ESHttpGet",  "es:ESHttpPut",  "es:ESHttpPost", "es:CreateElasticsearchDomain", "es:ListDomainNames"  ], "Resource":   "arn:aws:es:ap-­northeast-­2:###:domain/logs/<index>/*" "Condition": "IpAddress":  { "aws:SourceIp":  [  "xx.xx.xx.xx/yy"  ] }  }  ]  }
  • 40. 시각화 도구 Kibana 기본 내장 Logstash 인덱서 Amazon Elasticsearch Service 애플리케이션 노드/ Logstash 포워더 API 엔드포인트 Kibana URL • Endpoint  search-­domain-­id.ap-­northeast-­2.es.amazonaws.com • Kibana search-­domain-­id.ap-­northeast-­2.es.mazonaws.com/_plungin/kibana/
  • 43. Elasticsearch API로 직접 접근 $  curl  -­XPUT  https://<endpoint>/blog  -­d  '{ "settings"  :  {  "number_of_shards"  :  3,  "number_of_replicas"  :  1  }  }' $  curl  -­XPOST  http://<endpoint>/blog/post/1   -­d  '{ "author":"jon handler", "title":"Amazon ES  Launch"  }' $  curl  -­XPOST  https://<endpoint>/blog/post/_bulk   -­d  ' {  "index"  :  {  "_index"  :  "blog",  "_type"  :  "post",  "_id"  :  "2"}} {"title":"Amazon ES  for  search",  "author":  "pravin pillai"}, {  "index"  :  {  "_index":"blog",  "_type":"post",  "_id":"3"  }  } {  "title":"Analytics too",  "author":  "vivek sriram"}' $  curl  -­XGET  http://<endpoint>/_search?q=ES {"took":16,"timed_out":false,"_shards":{"total":3,"successful":3,"failed":0},"hits":{"total":2,"max_score":0.13424811 ,"hits":[{"_index":"blog","_type":"post","_id":"1","_score":0.13424811,"_source":{"author":"jon handler",  "title":"Amazon ES  Launch"  }},{"_index":"blog","_type":"post","_id":"2","_score":0.11506981,"_source":{"title":"Amazon ES  for  search",   "author":  "pravin pillai"},}]}}
  • 44. Logstash를 통한 데이터 로딩 애플리케이션 노드/ Logstash 포워더 Logstash 인덱서 Amazon   Elasticsearch   Service https://github.com/awslabs/logstash-­output-­amazon_es • Logstash는 다양한 시스템에서 발생하는 로그나 이벤트를 처리할 수 있도록 해주는 데이터 파이프라인 • Elasticsearch 도메인으로 데이터를 쉽게 보낼 수 있도록 함 • Github에 Amazon Elasticsearch Service를 위한 Logstash 출력 플러그-인 제공
  • 45. AWS  Lambda를 통한 데이터 전달 Amazon   Lambda Amazon   Elasticsearch   Service Amazon  S3 DynamoDB Amazon   Kinesis   Streams https://github.com/awslabs/amazon-­elasticsearch-­lambda-­samples • AWS Lambda는 이벤트에 응답하여 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버 없는 컴퓨팅 서비스 • Lambda를 이용해서 AWS 다양한 서비스로부터 데이터를 Elasticsearch 도메인으로 쉽게 전달 • Java, Node.js, 및 python 언어 지원
  • 46. CloudWatch Logs를 통한 데이터 스트리밍 CloudWatch Logs Amazon   Elasticsearch   Service • Amazon CloudWatch Logs를 통해 시스템, 애플리케이션 및 커스텀 로그를 통합하고 모니터링 가능 • AWS의 S3, ELB, VPC Flow logs, Config 및 CloudTail 등과 같은 다양한 서비스들도 CloudWatch Logs에 통합됨 • Amzon CloudWatch Logs에 통합된 로그 데이터를 쉽게 ES 도메인으로 스트리밍 할 수 있는 기능 제공
  • 47. 13시 ~ 18시 Amazon Elasticsearch Service 실시간 분석 Amazon SNS 푸시 메시지 전송 13시/18시 이벤트 개시/종료 -> 푸시 메시지 전송 -> 데이터 수집 -> 처리 -> 실시간 분석 Lambda Scheduling 매일 13시/18시 이벤트 개시/종료 Lambda 데이터 처리 매일 12시 30분 게임 서버 확장 Lambda Scheduling 12시 30분 Kinesis 인게임 이벤트 시스템 아키텍처 데이터 수집
  • 48. 왜? AWS 분석 서비스 쉬운 관리 탄력성 다양한 AWS 서비스와 통합 낮은 가격