Amazon Kinesis Data Streams 시작하기 »
Amazon Kinesis Data Streams 새로운 소식 보기 »
Amazon Kinesis Data Streams는 스트리밍 데이터에 최적화된, 고도의 확장성 및 내구성을 갖춘 데이터 모으기 및 처리 서비스입니다. 수십만 개의 데이터 생산자를 구성하여 Kinesis 데이터 스트림으로 계속 데이터를 보낼 수 있습니다. Amazon Kinesis 애플리케이션은 몇 밀리초 이내에 데이터를 사용할 수 있으며, 각 애플리케이션은 생성된 순서대로 데이터 레코드를 수신합니다.
Amazon Kinesis Data Streams는 스트리밍 데이터를 거의 실시간으로 변환하여 Amazon S3와 같은 AWS 데이터 레이크로 전송하기 위한 Amazon Kinesis Data Firehose, 관리형 스트림 처리를 위한 Amazon Managed Service for Apache Flink, 이벤트 또는 레코드 처리를 위한 AWS Lambda, 프라이빗 연결을 위한 AWS PrivateLink, 지표 및 로그 처리를 위한 Amazon CloudWatch, 서버 측 암호화를 위한 AWS KMS 등 다양한 AWS 서비스와 통합됩니다.
다음 아키텍처 다이어그램에서는 Amazon Kinesis Data Streams가 빅 데이터 솔루션의 게이트웨이로 사용되고 있습니다. 다양한 소스에서 데이터가 Amazon Kinesis 스트림에 추가되고, 이러한 스트림의 데이터가 다양한 Amazon Kinesis 애플리케이션에서 사용됩니다. 이 예에서는 한 애플리케이션(노란색)이 스트리밍 데이터에 대해 실시간 대시보드를 실행하고 있습니다. 다른 애플리케이션(빨간색)에서는 간단한 집계를 수행하고 처리한 데이터를 Amazon S3로 내보냅니다. S3의 데이터는 추가적인 처리 과정을 거친 후 복잡한 분석을 위해 Amazon Redshift에 저장됩니다. 세 번째 애플리케이션(녹색)은 Amazon S3로 원시 데이터를 내보내는데, 이 데이터는 좀 더 저렴한 장기 저장을 위해 Amazon Glacier에 아카이빙됩니다. 이러한 세 가지 유형의 데이터 처리 파이프라인은 모두 동시에 병렬로 진행됩니다.
주요 개념
데이터 생산자
데이터 생산자는 일반적으로 데이터 레코드가 생성되는 대로 이를 Kinesis 데이터 스트림으로 내보내는 애플리케이션입니다. 데이터 생산자는 레코드에 파티션 키를 할당합니다. 파티션 키는 궁극적으로 어떤 샤드가 데이터 스트림을 위한 데이터 레코드를 수집할지 결정합니다.
데이터 소비자
데이터 소비자는 데이터가 생성되는 대로 스트림 내 모든 샤드에서 데이터를 검색하는 분산 Kinesis 애플리케이션 또는 AWS 서비스입니다. 대부분의 데이터 소비자는 샤드에서 가장 최근 데이터를 검색하므로 실시간 데이터 분석 또는 처리가 가능합니다.
데이터 스트림
데이터 스트림은 논리적으로 그룹화된 샤드입니다. 데이터 스트림 내 샤드 수에는 제한이 없습니다(더 필요할 경우 한도 증가를 요청). 데이터 스트림은 기본적으로 24시간 동안 데이터를 저장하는데, 원한다면 365일까지 저장할 수 있습니다.
샤드
샤드는 Amazon Kinesis 데이터 스트림의 기본 처리 단위입니다.
- 샤드는 추가 전용 로그이며, 스트리밍 용량의 단위입니다. 샤드는 도착 시간으로 정렬된 레코드 시퀀스를 포함합니다.
- 1개의 샤드는 데이터 레코드를 초당 1,000개 또는 초당 1MB까지 수집할 수 있습니다. 수집 용량을 늘리려면 샤드를 더 추가합니다.
- AWS 콘솔을 사용하거나, UpdateShardCount API를 사용하거나, AWS Lambda를 통해 Auto Scaling을 트리거하거나, Auto Scaling 유틸리티를 사용하여 데이터 처리량 변동에 따라 동적으로 스트림에서 샤드를 추가 또는 제거합니다.
- 소비자가 향상된 팬아웃을 사용하는 경우, 1개 샤드가 향상된 팬아웃을 사용하도록 등록된 각 데이터 소비자에게 1MB/초 데이터 입력 및 2MB/초 데이터 출력을 제공합니다.
- 소비자가 향상된 팬아웃을 사용하지 않는 경우, 1개 샤드가 1MB/초 데이터 입력 및 2MB/초 데이터 출력을 제공하고, 이 출력은 향상된 팬아웃을 사용하지 않는 모든 소비자와 공유됩니다.
- 스트림을 생성할 때 필요한 샤드 수를 지정하며, 언제라도 샤드 수를 변경할 수 있습니다. 예를 들어, 샤드가 2개 있는 스트림을 생성할 수 있습니다. 향상된 팬아웃을 사용하는 데이터 소비자가 5개 있을 경우, 이 스트림은 최대 20MB/초의 총 데이터 출력을 제공할 수 있습니다(2개 샤드 x 2MB/초 x 5개 데이터 소비자). 데이터 소비자가 향상된 팬아웃을 사용하지 않을 경우, 이 스트림의 처리량은 2MB/초 데이터 입력 및 4MB/초 데이터 출력입니다. 모든 경우, 이 스트림은 초당 최대 2,000개의 PUT 레코드 또는 초당 2MB까지 수집을 허용합니다(먼저 한도에 도달하는 항목 적용).
- Amazon Kinesis Data Streams에서 샤드 수준 지표를 모니터링할 수 있습니다.
데이터 레코드
레코드는 Amazon Kinesis 스트림에 저장되는 데이터의 단위입니다. 레코드는 시퀀스 번호, 파티션 키, 데이터 Blob으로 구성됩니다. 데이터 Blob은 사용자의 데이터 생산자가 스트림에 추가한 대상 데이터입니다. 데이터 Blob의 최대 크기(Base64로 디코딩한 후 데이터 페이로드)는 1메가바이트(MB)입니다.
파티션 키
파티션 키는 일반적으로 사용자 ID 또는 타임스탬프와 같은 의미 있는 식별자입니다. 파티션 키는 데이터 생산자가 데이터를 Amazon Kinesis 데이터 스트림에 추가할 때 지정되며, 소비자는 파티션 키를 사용하여 파티션 키와 관련된 기록을 재생하거나 작성할 수 있으므로 유용합니다. 파티션 키는 데이터 레코드를 스트림의 다른 샤드로 분리하고 라우팅하는 데도 사용됩니다. 예를 들어 2개의 샤드가 있는 Amazon Kinesis 데이터 스트림이 있다고 가정해 보겠습니다(샤드 1과 샤드 2). 파티션 키 2개(키 A와 키 B)를 사용하도록 데이터 생산자를 구성하여 키 A가 있는 모든 데이터 레코드는 샤드 1에 추가하고 키 B가 있는 모든 데이터 레코드는 샤드 2에 추가할 수 있습니다.
시퀀스 번호
시퀀스 번호는 각 데이터 레코드에 대한 고유 식별자입니다. Amazon Kinesis 데이터 스트림에 데이터를 추가하기 위해 데이터 생산자가 PutRecord 또는 PutRecords API를 호출할 때 Amazon Kinesis Data Streams에서 시퀀스 번호를 할당합니다. 동일한 파티션 키에 대한 시퀀스 번호는 일반적으로 시간이 지남에 따라 증가합니다. PutRecord 또는 PutRecords 요청 사이의 시간 간격이 길어질수록 시퀀스 번호도 커집니다.
Kinesis Data Streams 사용
Amazon Web Services에 가입하고 다음을 수행하면 Amazon Kinesis Data Streams를 사용할 수 있습니다.
- Amazon Kinesis Management Console이나 Amazon Kinesis CreateStream API를 사용하여 Amazon Kinesis 데이터 스트림을 생성합니다.
- Amazon Kinesis 데이터 스트림에 지속적으로 데이터를 추가하도록 데이터 생산자를 구성합니다.
- Amazon Kinesis 데이터 스트림의 데이터를 읽고 처리하도록 Amazon Kinesis 애플리케이션을 구축합니다.
데이터를 스트림에 추가
데이터 생산자는 Amazon Kinesis Data Streams API, Amazon Kinesis Producer Library(KPL) 또는 Amazon Kinesis 에이전트를 사용해 Amazon Kinesis 데이터 스트림에 데이터를 추가할 수 있습니다.
Amazon Kinesis Data Generator
Amazon Kinesis Data Generator를 사용하여 샘플 데이터를 Kinesis 데이터 스트림 또는 Kinesis Data Firehose에 추가합니다.
Amazon Kinesis Data Streams API
Amazon Kinesis Data Streams는 Amazon Kinesis 스트림에 데이터를 추가할 수 있도록 PutRecord 및 PutRecords라는 두 가지 API를 제공합니다. PutRecord에서는 API 호출 시 단일 데이터 레코드를 사용할 수 있고 PutRecords에서는 API 호출 시 여러 데이터 레코드를 사용할 수 있습니다.
Amazon Kinesis Producer Library(KPL)
Amazon Kinesis Producer Library(KPL)는 Amazon Kinesis 데이터 스트림에 데이터를 추가하도록 지원하는 사용이 간편하고 쉽게 구성 가능한 라이브러리입니다. Amazon Kinesis Producer Library(KPL)는 간편한 비동기식의 안정적인 인터페이스를 제공하므로 최소한의 클라이언트 리소스로 높은 생산자 처리량을 신속하게 달성할 수 있습니다.
Amazon Kinesis 에이전트
Amazon Kinesis 에이전트는 사전에 구축된 Java 애플리케이션으로, 데이터를 수집하여 Amazon Kinesis 스트림으로 전송하는 간편한 방법을 제공합니다. 에이전트는 웹 서버, 로그 서버, 데이터베이스 서버 등과 같은 Linux 기반 서버 환경에 설치할 수 있습니다. 에이전트는 특정 파일을 모니터링하고 데이터를 스트림으로 지속적으로 전송합니다.
완전관리형 스트림 처리 애플리케이션 실행 또는 직접 구축
AWS 서비스를 사용하여 완전관리형 스트림 처리 애플리케이션을 실행하거나 직접 구축할 수 있습니다.
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose는 스트리밍 데이터를 안정적으로 변환하여 데이터 스토어 및 분석 도구에 로드하는 가장 쉬운 방법입니다. Kinesis 데이터 스트림을 Kinesis Data Firehorse의 소스로 사용할 수 있습니다.
Amazon Managed Service for Apache Flink
Amazon Managed Service for Apache Flink를 사용하면 Apache Flink를 사용하여 스트리밍 데이터를 손쉽게 쿼리하거나 스트리밍 애플리케이션을 구축함으로써 유용한 인사이트를 얻고 비즈니스 및 고객 요구 사항에 즉각적으로 부응할 수 있습니다. Kinesis 데이터 스트림을 Amazon Managed Service for Apache Flink 애플리케이션의 소스 및 대상으로 사용할 수 있습니다.
AWS Lambda
Lambda 함수를 구독하여 자동으로 Kinesis 데이터 스트림에서 레코드를 읽을 수 있습니다. AWS Lambda는 일반적으로 레코드별(이벤트 기반이라고도 함) 스트림 처리에 사용됩니다.
Amazon Kinesis Client Library(KCL)
Amazon Kinesis Client Library(KCL)는 Amazon Kinesis 스트림의 데이터를 읽고 처리하는 Amazon Kinesis 애플리케이션을 손쉽게 구축할 수 있도록 지원하는 사전에 구축 라이브러리입니다. KCL은 스트림 볼륨 변화에 따른 조정, 스트리밍 데이터 로드 밸런싱, 분산 서비스 조율, 내결함성을 갖춘 데이터 처리와 같은 복잡한 문제를 처리합니다. KCL을 사용하면 Amazon Kinesis 애플리케이션을 개발하는 동안 비즈니스 로직에 집중할 수 있습니다. KCL 2.0부터 짧은 지연 시간 HTTP/2 스트리밍 API 및 향상된 팬아웃을 이용하여 스트림에서 데이터를 검색할 수 있습니다.
Amazon Kinesis Connector Library
Amazon Kinesis Connector Library는 Amazon Kinesis를 다른 AWS 서비스 및 타사 도구와 간편하게 통합할 수 있도록 지원하는 사전에 구축된 라이브러리입니다. Amazon Kinesis Client Library(KCL)를 사용하려면 Amazon Kinesis Connector Library가 필요합니다. 현재 라이브러리 버전은 Amazon DynamoDB, Amazon Redshift, Amazon S3, Amazon Elasticsearch Service에 대한 커넥터를 제공합니다. 이 라이브러리에는 유형별 샘플 커넥터와 샘플 실행을 위한 Apache Ant 빌드 파일도 포함되어 있습니다.
Amazon Kinesis Storm Spout
Amazon Kinesis Storm Spout는 Amazon Kinesis Data Streams를 Apache Storm과 손쉽게 통합할 수 있도록 지원하는 사전에 구축된 라이브러리입니다. 현재 Amazon Kinesis Storm Spout 버전은 Kinesis 데이터 스트림에서 데이터를 가져와 튜플로 내보냅니다. Spout를 Storm 토폴로지에 추가하여 Amazon Kinesis Data Streams를 안정적이고 확장 가능한 스트림 캡처, 스토리지, 리플레이 서비스로 활용할 수 있습니다.
관리 기능
Amazon VPC에서 Kinesis Data Streams API에 비공개로 액세스
VPC 엔드포인트를 생성하면 Amazon Virtual Private Cloud(VPC)에서 Kinesis Data Streams API에 비공개로 액세스할 수 있습니다. VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 게이트웨이 또는 VPN 연결을 사용할 필요 없이 AWS 네트워크에서 VPC와 Kinesis Data Streams 간 라우팅을 처리합니다. Kinesis Data Streams가 사용하는 최신 세대 VPC 엔드포인트는 AWS PrivateLink에서 제공합니다. 이는 Elastic Network Interface(ENI)를 사용하는 AWS 서비스와 VPC 내 프라이빗 IP 간에 프라이빗 연결을 지원하는 기술입니다. PrivatLink에 대한 자세한 내용은 AWS PrivateLink 설명서를 참조하십시오.
성능 저하 없이 Kinesis Data Streams 데이터 팬아웃
고객은 향상된 팬아웃 기능을 사용하여 성능을 유지하면서 동시에 데이터 스트림을 병렬로 읽는 소비자 수를 확장할 수 있습니다. 향상된 팬아웃과 HTTP/2 데이터 검색 API를 사용하여 일반적으로 데이터 도착 후 70밀리초 이내에 여러 애플리케이션으로 데이터를 팬아웃할 수 있습니다.
Kinesis Data Streams 데이터 암호화
서버 측 암호화 또는 클라이언트 측 암호화를 사용하여 Kinesis Data Streams에 추가하는 데이터를 암호화할 수 있습니다. 서버 측 암호화는 데이터 스트림에서 데이터를 추가하고 가져옴에 따라 자동으로 암호화하고 복호화하는 완전관리형 기능입니다. 또는 데이터 스트림에 추가하기 전에 클라이언트 측에서 데이터를 암호화할 수 있습니다. 자세한 내용은 Kinesis Data Streams FAQ의 보안 섹션을 참조하세요.
Amazon Kinesis Data Firehose 및 Amazon Managed Service for Apache Flink 통합
데이터 스트림을 Kinesis Data Firehose의 소스로 사용하면 S3, Redshift, Elasticsearch 및 Splunk로 데이터를 전송하는 동시에 즉시 데이터를 변환할 수 있습니다. Amazon Managed Service for Apache Flink 애플리케이션을 추가하면 새로운 프로그래밍 언어 또는 처리 프레임워크를 배울 필요 없이 표준 SQL을 통해 실시간으로 스트리밍 데이터를 처리할 수 있습니다.
Amazon CloudWatch 통합
Amazon Kinesis Data Streams는 Amazon CloudWatch와 통합되므로 Amazon Kinesis 데이터 스트림과 해당 데이터 스트림 내 샤드에 대한 CloudWatch 지표를 손쉽게 수집, 확인 및 분석할 수 있습니다. Amazon Kinesis Data Streams 지표에 대한 자세한 내용은 Amazon CloudWatch를 사용하여 Amazon Kinesis Data Streams 서비스 모니터링을 참조하십시오.
AWS IAM 통합
Amazon Kinesis Data Streams는 AWS 서비스 및 리소스에 대한 사용자 액세스를 안전하게 제어할 수 있도록 지원하는 서비스인 AWS Identity and Access Management(IAM)와 통합됩니다. 예를 들어 특정 사용자 또는 그룹만 Amazon Kinesis 데이터 스트림에 데이터를 추가할 수 있도록 허용하는 정책을 생성할 수 있습니다. Amazon Kinesis 데이터 스트림의 액세스 관리 및 제어에 대한 자세한 내용은 IAM을 사용하여 Amazon Kinesis Data Streams 리소스에 대한 액세스 제어를 참조하십시오.
AWS CloudTrail 통합
Amazon Kinesis Data Streams는 계정에 대한 AWS API 호출을 기록하고 로그 파일을 사용자에게 전달하는 서비스인 Amazon CloudTrail과 통합됩니다. API 호출 로깅 및 지원되는 Amazon Kinesis API 목록에 대한 자세한 내용은 AWS CloudTrail을 사용하여 Amazon Kinesis Data Streams API 호출 로깅을 참조하십시오.
태깅 지원
더욱 간편한 리소스 및 비용 관리를 위해 Amazon Kinesis 데이터 스트림에 태그를 지정할 수 있습니다. 태그는 키-값 페어로 표현되는 사용자 정의 레이블로, AWS 리소스를 정리하는 데 도움이 됩니다. 예를 들어 비용 센터별로 Amazon Kinesis 데이터 스트림에 태그를 지정하면 비용 센터별로 카테고리를 나누어 Amazon Kinesis Data Streams 비용을 추적할 수 있습니다. 자세한 내용은 Amazon Kinesis Data Streams에서 스트림 태깅을 참조하십시오.
자습서
Amazon Kinesis Data Streams를 사용하여 주식 데이터 분석하기
이 자습서는 Amazon Kinesis 데이터 스트림을 생성하고, 시뮬레이션된 주식 거래 데이터를 스트림으로 전송하고, 데이터 스트림의 데이터를 처리하도록 애플리케이션을 작성하는 과정을 안내합니다.
주요 프레젠테이션
Analyzing streaming data in real time with Amazon Kinesis(ABD301)
Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다. 이 세션에서는 데이터 수집에 Kinesis Streams, 실시간 처리에 Kinesis Analytics, 그리고 지속성에 Kinesis Firehose를 사용하는 엔드 투 엔드 스트리밍 데이터 솔루션을 소개합니다. 스트리밍 데이터를 사용하는 SQL 쿼리를 작성하는 방법을 상세히 검토하고 Kinesis Analytics 애플리케이션을 최적화하고 모니터링하는 모범 사례를 살펴봅니다. 마지막으로 전체 시스템 비용을 추정하는 방법을 살펴봅니다.
워크숍: Building your first big data application on AWS(ABD317)
AWS 빅 데이터 웹 서비스에 대한 지식을 강화하고 클라우드에서 첫 번째 빅 데이터 애플리케이션을 시작하려고 하십니까? 빅 데이터 처리를 수집, 저장, 처리 및 시각화로 구성된 데이터 버스로 간소화하는 방법을 설명합니다. Amazon Athena, Amazon Kinesis, Amazon DynamoDB 및 Amazon S3와 같은 AWS 관리형 서비스를 사용해 빅 데이터 애플리케이션을 구축합니다. 그 과정에서 빅 데이터 애플리케이션을 위한 아키텍처 설계 패턴을 검토하고 애플리케이션을 직접 다시 구축하고 사용자 지정할 수 있도록 재택 실습에 대한 액세스를 제공합니다. 이 세션을 충분히 활용하려면 노트북을 가져와야 하고 AWS 서비스에 대한 지식이 어느 정도 있어야 합니다.
워크숍: Don’t wait until tomorrow; How to use streaming data to gain real-time insights into your business(ABD321)
최근 몇 년간 커넥티드 디바이스와 실시간 데이터 소스의 수가 폭발적으로 증가했습니다. 따라서 데이터가 끊임없이 생산되고 프로덕션 속도가 가속화되고 있습니다. 기업에서는 이러한 데이터를 사용하기 위해 몇 시간 또는 며칠을 기다릴 여유가 없습니다. 가장 가치 있는 통찰력을 확보하기 위해서는 새로운 정보에 신속하게 대응할 수 있도록 이러한 데이터를 즉시 사용할 수 있어야 합니다. 이 워크숍에서는 스트리밍 데이터 소스를 활용하여 거의 실시간으로 분석 및 대응하는 방법을 배웁니다. 실제 스트리밍 데이터 시나리오에 맞춰 몇 가지 요구 사항이 제시되고 Amazon Kinesis, AWS Lambda 및 Amazon SNS와 같은 서비스를 사용해 이러한 요구 사항을 성공적으로 충족하는 솔루션을 생성하는 과제가 부여됩니다.
How Amazon Flex uses real-time analytics to deliver packages on time(ABD217)
데이터에서 실행 가능한 통찰력을 확보하는 시간을 단축하는 것은 배치 데이터 분석 도구를 사용하며 스트리밍 분석의 이점을 살펴보고 있는 모든 비즈니스와 고객에게 중요합니다. 데이터 웨어하우스 및 데이터베이스에서 실시간 솔루션으로 아키텍처를 확장하는 모범 사례를 배웁니다. Amazon Kinesis를 사용하여 실시간 데이터 통찰력을 확보하고 Amazon Aurora, Amazon RDS, Amazon Redshift 및 Amazon S3와 통합하는 방법을 배웁니다. Amazon Flex 팀이 Amazon 배송 기사가 매달 수백만 개의 택배를 적시에 배달하기 위해 사용하는 Amazon Flex 모바일 앱에서 스트리밍 분석을 어떻게 사용했는지 설명합니다. 기존 배치 데이터를 스트리밍 데이터로 마이그레이션하는 문제를 해결하고 배치 처리 시스템에서 실시간 시스템으로 이전할 수 있게 해준 아키텍처를 설명하고 실시간 분석의 이점을 활용하는 방법을 설명합니다.
Real-time streaming applications on AWS: Use cases and patterns(ABD203)
기업이 경쟁 우위를 확보하고 고객에게 차별화된 경험을 제공하려면 실시간으로 라이브 데이터를 사용하여 빠른 의사 결정을 지원할 수 있어야 합니다. 이 세션에서는 일반적인 스트리밍 데이터 처리 사용 사례와 아키텍처를 배웁니다. 먼저, 스트리밍 데이터와 AWS 스트리밍 데이터 기능에 대한 개요를 제공합니다. 그리고 몇 가지 고객 예제와 고객의 실시간 스트리밍 애플리케이션을 살펴봅니다. 마지막으로 주요 스트리밍 데이터 사용 사례의 일반 아키텍처와 설계 패턴을 살펴봅니다.
주요 솔루션
AWS Streaming Data Solution for Amazon Kinesis는 생산자, 스트리밍 스토리지, 소비자 및 대상으로 데이터가 흐르는 AWS CloudFormation 템플릿을 사용합니다. 다양한 사용 사례와 비즈니스 요구 사항을 지원하기 위해 이 솔루션은 네 가지 AWS CloudFormation 템플릿을 제공합니다. 이러한 템플릿은 대시보드 및 경보를 사용하여 기능을 모니터링하고 데이터를 보호하는 모범 사례를 적용하도록 구성되어 있습니다.
Amazon Kinesis Data Streams 시작하기