2014년 5월 28일 일본에서 진행된 AWS 기술 웨비나의 발표 자료를 한국의 정윤진 솔루션스 아키텍트가 한글로 번역한 자료입니다. 웨비나 당시와 현재의 내용이 상이한 부분이 있을 수 있으니 자료 열람에 이 점 참고하시기 바라며, 혹 내용에 대한 문의사항이 있으신 경우 info-kr@amazon.com으로 연락 부탁드리겠습니다.
이 강연에서는 NoSQL 데이터베이스인 DynamoDB를 활용하기 위해 개발 실무자가 알아야 할 실용적 지식을 소개해 드립니다. 테이블을 설계하고 모범사례를 도입해 최적화된 성능과 비용으로 고가용성 데이터베이스 아키텍처를 구축하는 방법에 대해 말씀드린 뒤 다양한 용도로 DynamoDB를 활용하고 계시는 한국 고객들의 사례에 대해 소개하도록 하겠습니다.
연사: 김일호, 아마존 웹서비스 솔루션즈 아키텍트
이 강연에서는 NoSQL 데이터베이스인 DynamoDB를 활용하기 위해 개발 실무자가 알아야 할 실용적 지식을 소개해 드립니다. 테이블을 설계하고 모범사례를 도입해 최적화된 성능과 비용으로 고가용성 데이터베이스 아키텍처를 구축하는 방법에 대해 말씀드린 뒤 다양한 용도로 DynamoDB를 활용하고 계시는 한국 고객들의 사례에 대해 소개하도록 하겠습니다.
연사: 김일호, 아마존 웹서비스 솔루션즈 아키텍트
Learn best practices for building a real-time streaming data architecture on AWS with Spark Streaming, Amazon Kinesis, and Amazon Elastic MapReduce (EMR). Get a closer look at how to ingest streaming data scalably and durably from data producers like mobile devices, servers, and even web browsers, and design a stream processing application with minimal data duplication and exactly-once processing.
Presented by: Guy Ernest, Principal Business Development Manager, Amazon Web Services
Customer Guest: Harry Koch, Solutions Architecture, Philips
Real-time event processing monitors the incoming data stream and initiates action based on detected events like fraud, error or performance degradation. These events are often used to issue alerts and notifications, take responsive action, or to populate a monitoring dashboard. In this session, we will walk through different use cases for event processing and demonstrate how to build a scalable pipeline for tracking IoT device status. AWS services to be covered include: AWS Lambda and the Kinesis Client Library (KCL).
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...Amazon Web Services Korea
Database Migration Service(DMS)는 RDBMS 이외에도 다양한 데이터베이스 이관을 지원합니다. 실제 고객사 사례를 통해 DMS가 데이터베이스 이관, 통합, 분리를 수행하는 데 어떻게 활용되는지 알아보고, 동시에 데이터 분석을 위한 데이터 수집(Data Ingest)에도 어떤 역할을 하는지 살펴보겠습니다.
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...Amazon Web Services Korea
Amazon ElastiCache는 Redis 및 MemCached와 호환되는 완전관리형 서비스로서 현대적 애플리케이션의 성능을 최적의 비용으로 실시간으로 개선해 줍니다. ElastiCache의 Best Practice를 통해 최적의 성능과 서비스 최적화 방법에 대해 알아봅니다.
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...Amazon Web Services Korea
ccAmazon Aurora 데이터베이스는 클라우드용으로 구축된 관계형 데이터베이스입니다. Aurora는 상용 데이터베이스의 성능과 가용성, 그리고 오픈소스 데이터베이스의 단순성과 비용 효율성을 모두 제공합니다. 이 세션은 Aurora의 고급 사용자들을 위한 세션으로써 Aurora의 내부 구조와 성능 최적화에 대해 알아봅니다.
[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
실시간 분석은 AWS 고객의 사용 사례가 점점 늘어나고 있습니다. 이 세션에 참여하여 스트리밍 데이터 기술이 어떻게 데이터를 즉시 분석하고, 시스템 간에 데이터를 실시간으로 이동하고, 실행 가능한 통찰력을 더 빠르게 얻을 수 있는지 알아보십시오. 일반적인 스트리밍 데이터 사용 사례, 비즈니스에서 실시간 분석을 쉽게 활성화하는 단계, AWS가 Amazon Kinesis와 같은 AWS 스트리밍 데이터 서비스를 사용하도록 지원하는 방법을 다룹니다.
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...Amazon Web Services Korea
Amazon EMR은 Apache Spark, Hive, Presto, Trino, HBase 및 Flink와 같은 오픈 소스 프레임워크를 사용하여 분석 애플리케이션을 쉽게 실행할 수 있는 관리형 서비스를 제공합니다. Spark 및 Presto용 Amazon EMR 런타임에는 오픈 소스 Apache Spark 및 Presto에 비해 두 배 이상의 성능 향상을 제공하는 최적화 기능이 포함되어 있습니다. Amazon EMR Serverless는 Amazon EMR의 새로운 배포 옵션이지만 데이터 엔지니어와 분석가는 클라우드에서 페타바이트 규모의 데이터 분석을 쉽고 비용 효율적으로 실행할 수 있습니다. 이 세션에 참여하여 개념, 설계 패턴, 라이브 데모를 사용하여 Amazon EMR/EMR 서버리스를 살펴보고 Spark 및 Hive 워크로드, Amazon EMR 스튜디오 및 Amazon SageMaker Studio와의 Amazon EMR 통합을 실행하는 것이 얼마나 쉬운지 알아보십시오.
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...Amazon Web Services Korea
로그 및 지표 데이터를 쉽게 가져오고, OpenSearch 검색 API를 사용하고, OpenSearch 대시보드를 사용하여 시각화를 구축하는 등 Amazon OpenSearch의 새로운 기능과 기능에 대해 자세히 알아보십시오. 애플리케이션 문제를 디버깅할 수 있는 OpenSearch의 Observability 기능에 대해 알아보세요. Amazon OpenSearch Service를 통해 인프라 관리에 대해 걱정하지 않고 검색 또는 모니터링 문제에 집중할 수 있는 방법을 알아보십시오.
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...Amazon Web Services Korea
데이터 거버넌스는 전체 프로세스에서 데이터를 관리하여 데이터의 정확성과 완전성을 보장하고 필요한 사람들이 데이터에 액세스할 수 있도록 하는 프로세스입니다. 이 세션에 참여하여 AWS가 어떻게 분석 서비스 전반에서 데이터 준비 및 통합부터 데이터 액세스, 데이터 품질 및 메타데이터 관리에 이르기까지 포괄적인 데이터 거버넌스를 제공하는지 알아보십시오. AWS에서의 스트리밍에 대해 자세히 알아보십시오.
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...Amazon Web Services Korea
이 세션에 참여하여 Amazon Redshift의 새로운 기능을 자세히 살펴보십시오. Amazon Data Sharing, Amazon Redshift Serverless, Redshift Streaming, Redshift ML 및 자동 복사 등에 대한 자세한 내용과 데모를 통해 Amazon Redshift의 새로운 기능을 알고 싶은 사용자에게 적합합니다.
From Insights to Action, How to build and maintain a Data Driven Organization...Amazon Web Services Korea
데이터는 혁신과 변혁의 토대입니다. 비즈니스 혁신을 이끄는 혁신은 특정 시점의 전략이나 솔루션이 아니라 성장을 위한 반복적이고 집단적인 계획입니다. 혁신에 이러한 접근 방식을 채택하는 기업은 전략과 비즈니스 문화에서 데이터를 기반으로 하는 경우가 많습니다. 이러한 접근 방식을 개발하려면 리더가 데이터를 조직의 자산처럼 취급하고 조직이 더 나은 비즈니스 성과를 위해 데이터를 활용할 수 있도록 권한을 부여해야 합니다. AWS와 Amazon이 어떻게 데이터와 분석을 활용하여 확장 가능한 비즈니스 효율성을 창출하고 고객의 가장 복잡한 문제를 해결하는 메커니즘을 개발했는지 알아보십시오.
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...Amazon Web Services Korea
데이터는 최종 소비자의 성공에 초점을 맞춘 디지털 혁신에서 중추적인 역할을 하고 있습니다. 모든 기업들은 데이터를 자산으로 사용하여 사례 제공을 추진하고 까다로운 결과를 해결하고 있습니다. AWS 클라우드 기술과 분석 솔루션의 강력한 성능을 통해 고객은 혁신 여정을 가속화할 수 있습니다. 이 세션에서는 기업 고객들이 클라우드에서 데이터의 힘을 활용하여 혁신 목표를 달성하고 필요한 결과를 제공하는 방법에 대해 다룹니다.
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...Amazon Web Services Korea
LG ThinQ는 LG전자의 가전제품과 서비스를 아우르는 플랫폼 브랜드로서 앱 하나로 간편한 컨트롤, 똑똑한 케어, 스마트한 쇼핑까지 한번에 가능한 플랫폼입니다. ThinQ 플랫폼은 글로벌 서비스로 제공되고 있어, 작업 시간을 최소화하고, 서비스의 영향을 최소화 할 필요가 있었습니다. 따라서 DB 버전 업그레이드 작업 시 애플리케이션 배포가 필요없는 Blue/Green Deployment 방식은 최선의 선택이 되었습니다.
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...Amazon Web Services Korea
온프레미스 분석 플랫폼에는 자원 증설 비용, 자원 관리 비용, 신규 자원 도입 및 환경 설정의 리드타임 등 다양한 측면에서의 한계가 존재합니다. 이에 KB국민카드에서는 기존 분석 플랫폼의 한계를 극복함과 동시에 시너지를 낼 수 있는 클라우드 기반 분석 플랫폼을 설계 및 도입하였습니다. 본 사례 소개는 KB국민카드의 데이터 혁신 여정과 노하우를 소개합니다.
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
SK Telecom의 망관리 프로젝트인 TANGO에서는 오라클을 기반으로 시스템을 구축하여 운영해 왔습니다. 하지만 늘어나는 사용자와 데이터로 인해 유연하고 비용 효율적인 인프라가 필요하게 되었고, 이에 클라우드 도입을 검토 및 실행에 옮기게 되었습니다. TANGO 프로젝트의 클라우드 도입을 위한 검토부터 준비, 실행 및 이를 통해 얻게 된 교훈과 향후 계획에 대해 소개합니다.
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...Amazon Web Services Korea
2022년 코리안리는 핵심업무시스템(기간계/정보계 시스템)을 AWS 클라우드로 전환하는 사업과 AWS 클라우드 기반에서 손익분석을 위한 어플리케이션 구축 사업을 동시에 진행하고 있었습니다. 이에 따라 클라우드 전환 이후 시스템 간 상호운용성과 호환성을갖춘 데이터 분석 플랫폼 또한 필요하게 되었습니다. 코리안리 IT 환경에 적합한 플랫폼 선정을 위하여 AWS Native Analytics Platform, 3rd Party Analytics Platform (클라우데라, 데이터브릭스)과의 PoC를 진행하고, 최종적으로 AWS Native Analytics Platform 으로 확정하였습니다. 코리안리는 메가존클라우드와 함께 2022년 10월부터 4개월(구축 3개월, 안정화 및 교육 1개월) 동안 AWS 기반 데이터 분석 플랫폼을 구축하고 활용 범위를 지속적으로 확대하고 있습니다.
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...Amazon Web Services Korea
LG 이노텍은 세계 시장을 선도하는 글로벌 소재·부품기업으로, Amazon Redshift 을 데이터 분석 플랫폼의 핵심 서비스로 활용하고 있습니다.지속적인 데이터 증가와 업무 확대에 따른 유연한 아키텍처 개선의 필요성에 대처하기 위해, 2022년에 AWS 에서 발표된 Redshift Serverless 를 활용한, 비용 최적화된 아키텍처 개선 과정의 실사례를 엿볼수 있는 기회가 됩니다.
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
1. Amazon Kinesis
[AWS Meister - Black Belt] 웨비나 시리즈 발표자료
번역: 정윤진 솔루션스 아키텍트
이 자료의 내용은 웨비나가 진행된 시기에 맞춰져 있어 현재의 내용과는 다를 수
있습니다. 내용에 대한 문의사항이 있으신 경우 info-kr@amazon.com으로 연락
주시기 바랍니다.
2. Agenda
• Kinesis 를 둘러싼 환경
• Kinesis 개요
• 데이터 입력
• 데이터 수집 및 처리
• Kinesis 의 운용
• 샘플 아키텍처
• 사례
• 정리
4. 다량의 다양한 데이터 분석에 대한 비지니스 요구가 증가
M2M
센서 데이터 오픈 데이터
IoT
Web
Logs
실시간으로 데이터를 처리하고자 하는 요구가 증가
POS
Data
5. 예컨데, 다음과 같은 케이스
서비스 및 시스템의
실시간 분석
• 마케팅 이벤트 상황
파악
• 게임내 이벤트의
상황 파악
• POS 데이터를 통한
매출 상황 파악
상태 분석/감시
• 센서 이상 감지
• 무단 침입 감지
서비스 품질 향상
• 소설 데이터를
이용한 실시간
서비스
• 사용자 최근 행동에
기반한 권고 사항
6. AWS의 예:신속 정확한 사용량 정보 분석
초당 수천만건의
레코드
수십만개의
데이터 소스
시간당
테라바이트의
데이터
매일 100개
이상의 ETL job
시간당 100건
이상의 SQL
query
• 실시간 알람이 요구
• 스케일 가능한 구조로 변경
Kinesis
8. Amazon Kinesis?
• 대량의 연속된 데이터를 실시간으로 처리 가능한
풀 매니지드 서비스
• Kinesis는, 수십만 곳의 데이터 소스에서 테라
바이트 수준의 데이터를 처리 할 수 있으며, 저장된
데이터는 다수의 AZ에 저장하여 신뢰성과 높은
내구성을 보유한 서비스
10. Kinesis 내부 구조 및 용어
Data
Sources
App.4
[Machine
Learning]
App.1
[Aggregate &
De-Duplicate]
Data
Sources
Data
Sources
Data
Sources
App.2
[Metric
Extraction]
S3
DynamoDB
Redshift
App.3
[Real-time
Dashboard]
Data
Sources
Availability
Zone
Shard 1
Shard 2
Shard N
Availability
Zone
Availability
Zone
Kinesis
AWSEndpoint
• 데이터 용도 별 Stream을 생성, Stream은 1개 이상의 Shard로 구성됨
• Shard는 데이터 입력측에서 1MB/sec, 1000 TPS, 데이터 처리측에서는 2 MB/sec, 5TPS 의 처리량을 가짐
• 입력 데이터를 Data Record라 하며, 입력 된 Data Record는 24시간 동안 다수의 AZ에 저장
• Shard의 증가 및 축소에 따라 스케일 아웃-인이 가능
Stream
11. 설치 및 모니터링
• Management Console/API
Stream 이름과 Shard의 수량을
입력 Stream을 생성
용량 및 대기 시간을
모니터링, Cloud
Watch모니터링 가능
12. 비용
• 가격
과금
Shard 요금 $0.015/shard/시간
Put request $0.028/1,000,000PUT
예를 들어 1개월 (30일), 10Shard, 월 100,000,000PUT, 약 $110/월
14. 데이터 입력 방법
• PutRecord API 로 데이터 입력이 가능
http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html
• AWS SDK for Java, Javascript, Python, Ruby, PHP, .Net
예)boto를 이용하여 put_record
http://docs.pythonboto.org/en/latest/ref/kinesis.html#module-boto.kinesis.layer1
17. Shard 분배 로직
Shard는 각 담당하는 범위를 기준으로 파티션 키와 MD5
값이 일치하는 범위의 Shard 에 분배
예
0
MD5의 범위
2128
Shard-1
(2128/2 - 2128)
MD5(파티션 키)
Shard-0
(0 - 2128/2)
데이터 파티션 키
값은 둘중
하나에
분배
18. 파티션 키에 대한 Tips
TIPS
• Shard는 Partition Key를 기반으로 분배
• Shard의 용량은
Partition key 를 잘 설계하여 좋은 분산을 구현할
필요가 있다
19. Shard
시퀀스 넘버
Stream에 입력된 Data Record에 Kinesis의 Stream에서 유니크한 시퀀스
번호를 부여 (시간경과에 따라 함께 증가하는 구조)
연속된 PutRecord API를 호출하는 경우 순서가 달라질 수 있다.
동일한 파티션 키에서 순서가 매우 중요한 경우, PutRecord API의 호출에
주의 SequenceNumberForOrdering 매개 변수를 설정한다
시퀀스 번호는 PutRecord API 응답으로 확인 가능
데이터
레코드
(14)
데이터
레코드
(15)
데이터
레코드
(17)
데이터
레코드
(19)
데이터
레코드
(20)
20. SDK 외 다른 도구를 사용한 데이터 입력
• Log4J Appender
– Log4J 의 출력을 Kinesis 로 입력 할 수 있는 Appender
– 버퍼링의 크기, 동시 스레드의 숫자 설정이 가능
– 자세한 내용은 다음의 링크를 참조
• https://github.com/awslabs/kinesis-log4j-appender
• http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/kinesis-
pig-publisher.html
22. 데이터 취득 방법
• GetShardIterator API에서 Shard의 위치를 검색, GetRecords API를
사용하여 Kinesis 에 저장된 데이터를 가져올 수 있음
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html
– http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html
• AWS SDK for Java, Javascript, Python, Ruby, PHP, .Net
예)boto를 사용하여 get_shard_iterator, get_records
http://docs.pythonboto.org/en/latest/ref/kinesis.html#module-boto.kinesis.layer1
23. GetShardIterator의 검색 지정 방법
• GetShardIterator API는 ShardIteratorType을 지정하고 포지션을 얻을 수
있음
• ShardIteratorType 은 다음과 같음
– AT_SEQUENCE_NUMBER ( 지정된 시퀀스 넘버에서 데이터를 가져옴 )
– AFTER_SEQUENCE_NUMBER ( 지정된 시퀀스 넘버 이후부터 데이터를 가져옴 )
– TRIM_HORIZON ( Shard에 존재하는 가장 오래된 데이터부터 가져옴 )
– LATEST ( 최신 데이터부터 가져옴 )
Seq: xxx
LATEST
AT_SEQUENCE_NUMBER
AFTER_SEQUENCE_NUMBER
TRIM_HORIZON
GetShardIterator의 동작
24. Kinesis Client Library
• GetShardIterator API 및 GetRecords API를 이용하여 데이터의 검색 및 데이터
처리를 할 수 있지만, 데이터를 처리하는 인스턴스에 대한 고가용성과 Shard 의
분할, 병합등의 복잡한 처리를 구현할 필요가 있다.
• Kinesis Client Library를 이용하면 이러한 복잡한 과정을 따로 구현하지 않고
비지니스 로직에 집중 할 수 있다.
• Kinesis Client Library는 Java 를 지원
• Github에서 소스를 확인 할 수 있음
– https://github.com/awslabs/amazon-kinesis-client
• Kinesis Client Library는 체크 포인트의 관리에 DynamoDB를 이용하고 있으며
처음 시작할때 DynamoDB 테이블을 생성한다.
– 기본적으로 Read Provisioned Throughput, Write Provisioned Throughput은 10으로 설정됨
25. Kinesis Client Library
• Kinesis Client Library를 사용한 응용 프로그램(Kinesis응용 프로그램)
을 실행하면 Worker 가 생성되어 Kinesis 에서 데이터를 검색한다.
• Kinesis 응용 프로그램 측면에서는 구성 설정 및 데이터 처리를 위한
IRecordProcessor 를 사용
• 개발 관련 내용은 다음의 링크를 참조
– http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-
app.html
26. Kinesis Client Library 샘플 코드
public class SampleRecordProcessor implements IRecordProcessor {
@Override
public void initialize(String shardId) {
LOG.info("Initializing record processor for shard: " + shardId);
this.kinesisShardId = shardId;
}
@Override
public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
LOG.info("Processing " + records.size() + " records for kinesisShardId " + kinesisShardId);
// Process records and perform all exception handling.
processRecordsWithRetries(records);
// Checkpoint once every checkpoint interval.
if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
checkpoint(checkpointer);
nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
}
}
}
[Sample RecordProcessor ]
27. Kinesis Client Library 샘플 코드
IRecordProcessorFactory recordProcessorFactory = new SampleRecordProcessorFactory();
Worker worker = new Worker(recordProcessorFactory, kinesisClientLibConfiguration);
int exitCode = 0;
try {
worker.run();
} catch (Throwable t) {
LOG.error("Caught throwable while processing data.", t);
exitCode = 1;
}
[Sample Worker]
28. Kinesis Client Library
Stream
Shard-0
Shard-1
Kinesis
응용 프로그램
(KCL)
작업
인스턴스
시퀀스 넘버
Instance A 12345
Instance B 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
Kinesis
응용 프로그램
(KCL)
Instance B
1. Kinesis Client Library가 Shard로 부터 Data Record를 Get
2. 설정된 간격으로 일련 번호를 인스턴스의 ID를 키로 사용하여
DynamoDB의 테이블에 저장
(*)실제 Key, Attribute 이름은 동일하지 않음
29. Kinesis Client Library – 가용성
Stream
Shard-0
Kinesis
응용 프로그램
(KCL)
작업
인스턴스
시퀀스 넘버
Instance A
→
Instance B
12345
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Kinesis
응용 프로그램
(KCL)
Instance B
Instance A가 동작하지 않는 상황을 감지, Instance B가 DynamoDB에 저장된
시퀀스 번호 부터 데이터 Get
(*)実際のKey, Attribute名は異なります。
30. Kinesis Client Library – 확장성
Stream
Shard-0
Kinesis
응용 프로그램
(KCL)
Shard 작업
인스턴스
시퀀스 넘버
Shard-0 Instance A 12345
Shard-1 Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Shard-1 이 증설된 것을 감지하여 데이터 수집을 시작하고 Shard-1 의
체크포인트 정보를 DynamoDB 에 추가
Shard-1
Data
Record
(98765)
New
(*)実際のKey, Attribute名は異なります。
31. 목적에 따라 Kinesis 응용 프로그램 추가가 가능
Stream
シャード
Shard
データ
レコード
(12345)
データ
レコード
(98765)
データ
レコード
(24680)
데이터
레코드
(12345)
데이터
레코드
(98765)
데이터
레코드
(24680)
응용 프로그램
(KCL)
DynamoDB
Instance A
Shard 작업
인스턴스
시퀀스 넘버
Shard-0 Instance A 12345
Shard-1 Instance A 98765
응용 프로그램
(KCL)
Instance A
Shard 작업
인스턴스
시퀀스 넘버
Shard-0 Instance A 24680
Shard-1 Instance A 98765
각 응용 프로그램마다 서로 다른 테이블에서 관
Archive Table
Calc Table
32. Kinesis Connector Library
• Kinesis Connector Library를 이용하면 S3, DynamoDB、Redshift와 같은 다른 서비스와
연동이 매우 용이함
• Kinesis Connector Library는 Java를 지원
• Github 링크
– https://github.com/awslabs/amazon-kinesis-connectors
RedShift
DynamoDB
S3
다른 데이터 분석을 위해
저장
실시간 대시 보드 및 순위
축적된 데이터를 다각도로
분석
Kinesis
33. • Data Record의 검색, 변환, 필터, 버퍼 및 저장등을 매우 쉽게 구현 가능
ITransformer
•Kinesis
에서
사용자가
원하는
모델로
변환
IFilter
•데이터를
필터링,
필터링을 거친
데이터가
버퍼로 이동
IBuffer
•지정된
레코드 또는
바이트까지
버퍼
IEmitter
•다른 AWS
서비스
접근
S3
DynamoDB
Redshift
Kinesis
Kinesis Connector Library
34. Kinesis Connector Library 샘플 코드
public class S3Pipeline implements IKinesisConnectorPipeline<KinesisMessageModel, byte[]> {
@Override
public ITransformer<KinesisMessageModel, byte[]> getTransformer(KinesisConnectorConfiguration configuration) {
return new JsonToByteArrayTransformer<KinesisMessageModel>(KinesisMessageModel.class);
}
@Override
public IFilter<KinesisMessageModel> getFilter(KinesisConnectorConfiguration configuration) {
return new AllPassFilter<KinesisMessageModel>();
}
@Override
public IBuffer<KinesisMessageModel> getBuffer(KinesisConnectorConfiguration configuration) {
return new BasicMemoryBuffer<KinesisMessageModel>(configuration);
}
@Override
public IEmitter<byte[]> getEmitter(KinesisConnectorConfiguration configuration) {
return new S3Emitter(configuration);
}
}
[Sample S3 pipeline]
JSON을 ByteArray로 변환
모든 패스 필터
메모리 버퍼
S3에 데이터 저장
35. Kinesis Storm Spout
• Kinesis에서 Apache Storm의 통합을 용이하게 하기 위한 Spout
• Kinesis Storm Spout은 Java 를 지원
• Github
– https://github.com/awslabs/kinesis-storm-spout
36. EMR Connector
• Hive、Pig、Cascading、Hadoop Streaming등 친숙한 Hadoop 관련 도구를 사용하여
Kinesis Stream의 데이터를 검색, Map Reduce 처리가 가능
• ETL 처리와 다른 Kinesis Stream, S3, DynamoDB, HDFS의 Hive Table등의 다른
데이터 소스의 테이블과 JOIN 하는것도 가능
– (예) Clickstream (Kinesis) JOIN Ad campaign data (DynamoDB)
Kinesis
Stream EMR Hive
Table
Data Storage
Table Mapping
(Hive 사용의 경우)
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-kinesis.html
37. EMR Connector : Hive 사용 사례
Hive 테이블 생성
Kinesis Stream
정의
HQL 실행 (예)
HQL을 실행하면 내부적으로는
Kinesis 에서 데이터를 검색,
처리
38. • 먼저 처리된 데이터의 중복 처리를 피하기 위해 DynamoDB 를 사용하여 체크포인트를 참조
• Data pipeline / Crontab 을 주기적으로 실행하여 Kinesis에서 주기적으로 데이터를 수신,
처리가 가능
EMR Connector : Hive 사용 사례
40. CloudWatch를 통한 모니터링
• CloudWatch를 통해 아래의 메트릭을 확인 가능
• Shard의 운용에 사용 할 수 있음
메트릭
GetRecords.Bytes GetRecords 로 얻은 바이트 수
GetRecords.IteratorAge GetShardIterator 사용 시간
GetRecords.Latency GetRecords 지연시간
GetRecords.Success GetRecords API 정상 처리 카운트
PutRecord.Bytes PutRecord 로 입력된 바이트 수
PutRecord.Latency PutRecord 지연시간
PutRecord.Success PutRecord API 정상 처리 카운트
41. Shard의 분산 및 병합
• Shard의 용량과 실제 사용에 따라 Shard 를 분할 또는 병합하여 처리량의
확장과 비용의 최적화가 가능
• SpritShard API로 분할, MergeShards API로 병합 가능
– (SpritShard) http://docs.aws.amazon.com/kinesis/latest/APIReference/API_SplitShard.html
– (MergeShards) http://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html
AWSEndpoint
Availability
Zone
Shard 1
Shard 2
Shard N
Availability
Zone
Availability
Zone Shard-
1
Shard-
2
Shard-
1
Shard-
2
Shard-
3
Shard-
4
분할
42. SpritShard와 MergeShards의 적용예
• 처리하고자 하는 데이터의 특성에 맞게 Shard를 운용
– Shard는 시간단위로 비용이 청구되므로 낭비 없이 사용 할 수 있도록 Split /Merge 를
적용
• 처리량이 많아지는 시간에 Shard 를 분할하고 적어지면 병합하는 방법
43. SpritShard API
• SpritShard에서 담당하는 Hash key 의 시작값을 지정
conn = KinesisConnection()
descStream = conn.describe_stream(stream_name)
for shard in descStream['StreamDescription']['Shards']:
StartHashKey = shard['HashKeyRange']['StartingHashKey']
EndHashKey = shard['HashKeyRange']['EndingHashKey’]
NewHashKey = (long(EndHashKey) - long(StartHashKey))/2
print "StartHashKey : ", StartHashKey
print "EndHashKey : ", EndHashKey
print "NewHashKey : ", str(NewHashKey)
ret = conn.split_shard(stream_name,targetShard,str(NewHashKey))
Boto를 사용한 예:1Stream1Shard를 절반으로 분할
StartHashKey : 0
EndHashKey : 340282366920938463463374607431768211455
NewHashKey : 170141183460469231731687303715884105727
위의 코드로 출력되는 내용: 0-34의 shard가 0-17xx , 17xx-34xx 로 분할 )
44. MergeShards API
• MergeShards API는 기존 Shard 와 병합하려는 Shard 를 지정
conn = KinesisConnection()
conn.merge_shards(stream_name,targetShard, mergedShard)
Boto 사용 예
46. Digital Ad. Tech Metering with Kinesis
Incremental Ad.
Statistics
Computation
Metering Record Archive
Ad Analytics Dashboard
Continuous Ad
Metrics Extraction
47. Stream을 연속으로 파이프라인과 같이 연결
Data
Sources
Data
Sources
Data
Sources
Kinesis
App
Kinesis
App
Kinesis
App
Data
Sources
Data
Sources
Data
Sources
Kinesis
App
Kinesis
App
Kinesis
App
Kinesis
App
Data Source 그룹 A
Data Source 그룹 B
Data Source 그룹A용 ETL
(클렌징)
Data Source 그룹B용 ETL
(클렌징)
집계
48. 다른 AWS 서비스와 연동
AWSEndpoint
Kinesis
App.1
Kinesis
App.2 Redshift
DynamoDB
Kinesis
App.3
Availabilit
y Zone
Shard 1
Shard 2
Shard N
Availabil
ity Zone
Availabil
ity Zone
RDS
데이터 분석가
BI도구,
통계 분석
Data as a Service를 제공
서비스 제공
S3
기업
데이터의
저장
최종 사용자에게 push
Kinesis에 의한 스트림 저장
50. 導入事例
게임 엔진 서버에서 보내는
수백의 게임 데이터를
실시간으로 Amazon Kinesis
로 보내고 비지니스에
필수적인 분석 및 대시 보드
어플리케이션을 지연없이
운용
기존 배치 기반의 데이터 수집 및
분석 메커니즘을 Amazon
Kinesis 로 대체하여 실시간
분석으로 변경, 시스템 운용
자원 및 비용을 절감
53. SQS와 Kinesis의 구분
• Kinesis는 Pub-Sub 메세지 모델을 구축 가능하며, Stream에서 유일한
시퀀스 넘버가 DataRecord에 부여되기 때문에 순차적인 처리가 가능하다
SQS
데이터 소스 Worker
Worker
단일 메세지 타입에 대해 여러 Worker 가 처리
Kinesis
데이터소스
Worker
A
Worker
B
목적에 따라 Kinesis 응용 프로그램을
구현하여 동일한 소스 데이터를 동시에
사용 가능
54. 실시간 대시 보드
• Web로그, 센서 데이터 등 실시간 정보의 시각화 용도
• 단기적인 데이터의 시각화 뿐만 아니라 장기적인 분석을 위한 저장도 가능
센서
센서
센서
Kinesis App
[보관]
Dashboard
Kinesis App
[요약, 이상
감지]
Redshift
DynamoDB
58. 쉬운 관리
실시간 스트리밍 데이터 수집
및 처리를 위한 매니지드
서비스. Stream 구축이 매우
쉬움
실시간
스트리밍 유형의 빅데이터
처리가 가능. 몇분, 몇시간의
배치성 처리와 비교하여 몇초
이내로 데이터 처리가 가능
신축성
처리 속도와 볼륨을 원하는
대로 변경 가능하여 비지니스
요구에 맞는 스케일 업/다운이
가능
S3, Redshift, &
DynamoDB
통합
데이터의 수집, 변환, 처리 후
S3및 Redshift, DynamoDB에
저장하는것이 가능
실시간 처리
응용 프로그램
Kinesis Client Library를
이용하여 쉽게 실시간
스트리밍 데이터 처리의
구현이 가능
Low Cost
모든 규모의 워크로드를 비용
효율적으로 수용 가능
Amazon Kinesis
59. 참고 자료
• Amazon Kinesis API Reference
– http://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html
• Amazon Kinesis Developer Guide
http://docs.aws.amazon.com/kinesis/latest/dev/introduction.html
• Amazon Kinesis Forum
https://forums.aws.amazon.com/forum.jspa?forumID=169#