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에 아카이빙됩니다. 이러한 세 가지 유형의 데이터 처리 파이프라인은 모두 동시에 병렬로 진행됩니다.

Amazon Kinesis Data Streams 시작하기

Amazon Kinesis Data Streams 새로운 소식 보기

개념 증명 또는 평가를 위한 지원 요청하기

동영상

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 애플리케이션을 구축합니다.

주요 개념

데이터 생산자는 일반적으로 데이터 레코드가 생성되는 대로 이를 Kinesis 데이터 스트림으로 내보내는 애플리케이션입니다. 데이터 생산자는 레코드에 파티션 키를 할당합니다. 파티션 키는 궁극적으로 어떤 샤드가 데이터 스트림을 위한 데이터 레코드를 수집할지 결정합니다.

데이터 소비자는 데이터가 생성되는 대로 스트림 내 모든 샤드에서 데이터를 검색하는 분산 Kinesis 애플리케이션 또는 AWS 서비스입니다. 대부분의 데이터 소비자는 샤드에서 가장 최근 데이터를 검색하므로 실시간 데이터 분석 또는 처리가 가능합니다.

데이터 스트림은 논리적으로 그룹화된 샤드입니다. 데이터 스트림 내 샤드 수에는 제한이 없습니다(더 필요할 경우 한도 증가를 요청). 데이터 스트림은 기본적으로 24시간 동안 데이터를 저장하는데, 원한다면 365일까지 저장할 수 있습니다.

샤드는 Amazon Kinesis 데이터 스트림의 기본 처리 단위입니다.

  • 샤드는 추가 전용 로그이며, 스트리밍 용량의 단위입니다. 샤드는 도착 시간으로 정렬된 레코드 시퀀스를 포함합니다.
  • 1개의 샤드는 데이터 레코드를 초당 1,000개 또는 초당 1MB까지 수집할 수 있습니다. 수집 용량을 늘리려면 샤드를 더 추가합니다.
  • AWS Console을 사용하거나, UpdateShardCount API를 사용하거나, AWS Lambda를 통해 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 요청 사이의 시간 간격이 길어질수록 시퀀스 번호도 커집니다.

데이터를 스트림에 추가

데이터 생산자는 Amazon Kinesis Data Streams API, Amazon Kinesis Producer Library(KPL) 또는 Amazon Kinesis Agent를 사용하여 Amazon Kinesis 데이터 스트림에 데이터를 넣을 수 있습니다.

Amazon Kinesis Data Generator를 사용하여 샘플 데이터를 Kinesis 데이터 스트림 또는 Kinesis Data Firehose에 넣을 수 있습니다.

Amazon Kinesis Data Streams는 Amazon Kinesis 스트림에 데이터를 추가할 수 있도록 PutRecordPutRecords라는 두 가지 API를 제공합니다. PutRecord에서는 API 호출 시 단일 데이터 레코드를 사용할 수 있고 PutRecords에서는 API 호출 시 여러 데이터 레코드를 사용할 수 있습니다.

Amazon Kinesis Producer Library(KPL)는 Amazon Kinesis 데이터 스트림에 데이터를 추가하도록 지원하는 사용이 간편하고 다양한 구성이 가능한 라이브러리입니다. Amazon Kinesis Producer Library(KPL)는 간편한 비동기식의 안정적인 인터페이스를 제공하므로 최소한의 클라이언트 리소스로 높은 생산자 처리량을 신속하게 달성할 수 있습니다.

Amazon Kinesis 에이전트는 사전 구축된 Java 애플리케이션으로, 데이터를 수집하여 Amazon Kinesis 스트림으로 전송하는 간편한 방법을 제공합니다. 에이전트는 웹 서버, 로그 서버, 데이터베이스 서버 등과 같은 Linux 기반 서버 환경에 설치할 수 있습니다. 에이전트는 특정 파일을 모니터링하고 데이터를 스트림으로 지속적으로 전송합니다.

애플리케이션 실행 또는 직접 구축

AWS 서비스를 사용하여 완전관리형 스트림 처리 애플리케이션을 실행하거나 직접 구축할 수 있습니다.

Amazon Kinesis Data Firehose는 스트리밍 데이터를 안정적으로 변환하여 데이터 스토어 및 분석 도구에 로드하는 가장 쉬운 방법입니다. Kinesis 데이터 스트림을 Kinesis Data Firehorse의 소스로 사용할 수 있습니다.

Amazon Managed Service for Apache Flink를 사용하면 Apache Flink를 사용하여 스트리밍 데이터를 손쉽게 쿼리하거나 스트리밍 애플리케이션을 구축함으로써 유용한 인사이트를 얻고 비즈니스 및 고객 요구 사항에 신속하게 대응할 수 있습니다. Kinesis 데이터 스트림을 Amazon Managed Service for Apache Flink 애플리케이션의 소스 및 대상으로 사용할 수 있습니다.

Lambda 함수를 구독하여 자동으로 Kinesis 데이터 스트림에서 레코드를 읽을 수 있습니다. AWS Lambda는 일반적으로 레코드 바이 레코드(이벤트 기반이라고도 함) 스트림 처리에 사용됩니다.

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를 다른 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 Data Streams를 Apache Storm과 손쉽게 통합할 수 있도록 지원하는 사전 구축된 라이브러리입니다. 현재 Amazon Kinesis Storm Spout 버전은 Kinesis 데이터 스트림에서 데이터를 가져와 튜플로 내보냅니다. Spout를 Storm 토폴로지에 추가하여 Amazon Kinesis Data Streams를 안정적이고 확장 가능한 스트림 캡처, 스토리지, 리플레이 서비스로 활용할 수 있습니다.

스트림 관리

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 설명서를 참조하세요.

고객은 향상된 팬아웃 기능을 사용하여 성능을 유지하면서 동시에 데이터 스트림을 병렬로 읽는 소비자 수를 확장할 수 있습니다. 향상된 팬아웃과 HTTP/2 데이터 검색 API를 사용하여 일반적으로 데이터 도착 후 70밀리초 이내에 여러 애플리케이션으로 데이터를 팬아웃할 수 있습니다.

서버 측 암호화 또는 클라이언트 측 암호화를 사용하여 Kinesis Data Streams에 추가하는 데이터를 암호화할 수 있습니다. 서버 측 암호화는 데이터 스트림에 넣고 데이터 스트림에서 가져오는 데이터를 자동으로 암호화하고 복호화하는 완전관리형 기능입니다. 또는 데이터 스트림에 넣기 전에 클라이언트 측에서 데이터를 암호화할 수 있습니다. 자세한 내용은 Kinesis Data Streams FAQ의 보안 섹션을 참조하세요.

데이터 스트림을 Kinesis Data Firehose의 소스로 사용하면 S3, Redshift, Elasticsearch, Splunk로 데이터를 전송하는 동시에 즉시 데이터를 변환할 수 있습니다. Amazon Managed Service for Apache Flink 애플리케이션을 연결하면 새로운 프로그래밍 언어나 처리 프레임워크를 배울 필요 없이 표준 SQL을 통해 실시간으로 스트리밍 데이터를 처리할 수 있습니다.

Amazon Kinesis Data Streams는 Amazon CloudWatch와 통합되므로 Amazon Kinesis 데이터 스트림과 해당 데이터 스트림 내 샤드에 대한 CloudWatch 지표를 손쉽게 수집, 확인, 분석할 수 있습니다. Amazon Kinesis Data Streams 지표에 대한 자세한 내용은 Monitoring Amazon Kinesis with Amazon CloudWatch를 참조하세요.

Amazon Kinesis Data Streams는 AWS 서비스 및 리소스에 대한 액세스의 안전한 제어를 지원하는 서비스인 AWS Identity and Access Management(IAM)와 통합됩니다. 예를 들어 특정 사용자 또는 그룹만 Amazon Kinesis 데이터 스트림에 데이터를 추가할 수 있도록 허용하는 정책을 생성할 수 있습니다. Amazon Kinesis 데이터 스트림의 액세스 관리 및 제어에 대한 자세한 내용은 Controlling Access to Amazon Kinesis Resources using IAM를 참조하세요.

Amazon Kinesis Data Streams는 계정의 AWS API 직접 호출을 기록하고 로그 파일을 사용자에게 전달하는 서비스인 AWS CloudTrail과 통합됩니다. API 직접 호출 로깅 및 지원되는 Amazon Kinesis API 목록에 대한 자세한 내용은 Logging Amazon Kinesis API calls Using AWS CloudTrail을 참조하세요.

더욱 간편한 리소스 및 비용 관리를 위해 Amazon Kinesis 데이터 스트림에 태그를 지정할 수 있습니다. 태그는 키-값 페어로 표현되는 사용자 정의 레이블로, AWS 리소스를 정리하는 데 도움이 됩니다. 예를 들어 비용 센터별로 Amazon Kinesis 데이터 스트림에 태그를 지정하면 비용 센터별로 카테고리를 나누어 Amazon Kinesis Data Streams 비용을 추적할 수 있습니다. 자세한 내용은 Tagging Your Amazon Kinesis Data Streams를 참조하세요.

자습서

이 자습서는 Amazon Kinesis 데이터 스트림을 생성하고, 시뮬레이션된 주식 거래 데이터를 스트림으로 전송하고, 데이터 스트림의 데이터를 처리하도록 애플리케이션을 작성하는 과정을 안내합니다.  

주요 프레젠테이션

주요 솔루션

AWS Streaming Data Solution for Amazon Kinesis는 생산자, 스트리밍 스토리지, 소비자, 대상을 거쳐 데이터가 흐르는 AWS CloudFormation 템플릿을 제공합니다. 다양한 사용 사례와 비즈니스 요구 사항을 지원하기 위해 이 솔루션은 네 가지 AWS CloudFormation 템플릿을 제공합니다. 이러한 템플릿은 대시보드 및 경보를 사용하여 기능을 모니터링하고 데이터를 보호하는 모범 사례를 적용하도록 구성되어 있습니다.