Amazon Kinesis는 AWS에 의해 완전하게 관리되는 서비스로 방대한 규모의 스트리밍 데이터를 실시간으로 처리합니다. 수십만 개의 데이터 생산자를 구성하여 Amazon Kinesis 스트림으로 계속 데이터를 보낼 수 있습니다. 예를 들어 웹사이트 클릭스트림, 애플리케이션 로그, 소셜 미디어 피드 등에서 가져온 데이터가 포함됩니다. 그러면 1초도 안 걸려 Amazon Kinesis 애플리케이션에서 스트림의 해당 데이터를 읽고 처리할 수 있습니다.

다음 아키텍처 다이어그램에서는 Amazon Kinesis가 빅 데이터 솔루션의 게이트웨이로 사용되고 있습니다. 다양한 소스로부터 가져온 데이터가 Amazon Kinesis 스트림으로 전달되고, 스트림에서 온 데이터가 다양한 Amazon Kinesis 애플리케이션에서 소비됩니다. 이 예에서는 한 애플리케이션(노란색)이 스트리밍 데이터에 대해 실시간 대시보드를 실행하고 있습니다. 다른 애플리케이션(빨간색)에서는 간단한 집계를 수행하고 처리한 데이터를 Amazon S3로 내보냅니다. Amazon S3의 데이터는 추가적인 처리 과정을 거친 후 복잡한 분석을 위해 Amazon Redshift에 저장됩니다. 세 번째 애플리케이션(녹색)은 Amazon S3로 원시 데이터를 내보내는데, 이 데이터는 좀 더 경제적인 장기 저장을 위해 Amazon Glacier에 보관됩니다. 이러한 세 가지 유형의 데이터 처리 파이프라인은 모두 동시에 병렬로 발생합니다. Amazon Kinesis는 솔루션에 필요한 데이터 스트림 소비자 수에 맞춰 성능 저하 없이 사용할 수 있도록 해줍니다.


샤드는 Amazon Kinesis 스트림의 기본 처리 단위입니다. 샤드 1개는 초당 1MB의 데이터 입력 및 2MB의 데이터 출력 용량을 제공하며 샤드 1개는 초당 최대 1,000개의 PUT 레코드를 지원합니다. 스트림을 생성할 때 필요한 샤드 수를 지정하게 됩니다. 예를 들어, 샤드가 2개 있는 스트림을 생성할 수 있습니다. 이 스트림은 초당 2MB의 데이터 입력 및 초당 4MB의 데이터 출력을 처리할 수 있으며 초당 최대 2,000개의 PUT 레코드를 허용합니다. 데이터 처리량 변화에 따라 리샤딩을 통해 스트림의 샤드를 동적으로 추가하거나 제거할 수 있습니다.

레코드는 Amazon Kinesis 스트림에 저장되는 데이터의 단위입니다. 레코드는 시퀀스 번호, 파티션 키, 데이터 Blob으로 구성됩니다. 데이터 Blob은 사용자의 데이터 생산자가 스트림에 추가한 대상 데이터입니다. 데이터 Blob의 최대 크기(Base64로 디코딩한 후 데이터 페이로드)는 1메가바이트(MB)입니다.

파티션 키는 데이터 레코드를 스트림의 다른 샤드로 분리하고 라우팅하는 데 사용됩니다. 파티션 키는 Amazon Kinesis로 데이터를 추가하는 동안 데이터 생산자에 의해 지정됩니다. 예를 들어 2개의 샤드가 있는 Amazon Kinesis 스트림이 있다고 가정해 보겠습니다(Shard 1과 Shard 2). 파티션 키 2개(키 A와 키 B)를 사용하도록 데이터 생산자를 구성하여 키 A가 있는 모든 데이터 레코드는 샤드 1에 추가하고 키 B가 있는 모든 데이터 레코드는 샤드 2에 추가할 수 있습니다.

시퀀스 번호는 각 데이터 레코드에 대한 고유 식별자입니다. Amazon Kinesis 스트림에 데이터를 추가하기 위해 데이터 생산자가 PutRecord 또는 PutRecords API를 호출할 때 Amazon Kinesis에서 시퀀스 번호를 할당합니다. 동일한 파티션 키에 대한 시퀀스 번호는 일반적으로 시간이 지남에 따라 증가합니다. PutRecord 또는 PutRecords 요청 사이의 시간 간격이 길어질수록 시퀀스 번호도 커집니다. 


Amazon Web Services에 가입하고 다음을 수행하면 Amazon Kinesis를 사용할 수 있습니다.

  • Amazon Kinesis Management Console이나 Amazon Kinesis CreateStream API를 사용하여 Amazon Kinesis 스트림을 생성합니다.
  • Amazon Kinesis 스트림에 지속적으로 데이터를 추가하도록 데이터 생산자를 구성합니다.
  • Amazon Kinesis 스트림의 데이터를 읽고 처리하도록 Amazon Kinesis 애플리케이션을 구축합니다.

데이터 생산자는 PutRecord API와 PutRecords API 또는 Amazon Kinesis 생산자 라이브러리(KPL)를 통해 Amazon Kinesis 스트림에 데이터를 추가할 수 있습니다. PutRecord API에서는 API 호출 시 단일 데이터 레코드를 사용할 수 있고 PutRecords API에서는 API 호출 시 여러 데이터 레코드를 사용할 수 있습니다.

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


Amazon Kinesis 애플리케이션은 Amazon Kinesis 스트림의 데이터를 읽고 처리하는 데이터 소비자입니다. Amazon Kinesis API 또는 Amazon Kinesis 클라이언트 라이브러리(KCL)를 사용하여 Amazon Kinesis 애플리케이션을 구축할 수 있습니다.

Amazon Kinesis 클라이언트 라이브러리(KCL)는 Amazon Kinesis 스트림의 데이터를 읽고 처리하는 Amazon Kinesis 애플리케이션을 손쉽게 구축할 수 있도록 지원하는 사전 구축 라이브러리입니다. Amazon Kinesis 클라이언트 라이브러리(KCL)는 스트림 볼륨 변화에 따른 조정, 스트리밍 데이터 로드 밸런싱, 분산 서비스 조직화 및 내결함성 있는 데이터 처리와 같은 복잡한 문제를 처리합니다. 또한 Amazon Kinesis 클라이언트 라이브러리(KCL)를 통해 Amazon Kinesis 애플리케이션을 개발하는 동안 비즈니스 로직에 집중할 수 있습니다.

Amazon Kinesis 커넥터 라이브러리는 Amazon Kinesis를 다른 AWS 서비스 및 타사 도구와 간편하게 통합할 수 있도록 지원하는 사전 구축 라이브러리입니다. Amazon Kinesis 커넥터 라이브러리를 사용하려면 Amazon Kinesis 클라이언트 라이브러리(KCL)가 필요합니다. 현재 라이브러리 버전은 Amazon DynamoDB, Amazon Redshift, Amazon S3, Elasticsearch에 대한 커넥터를 제공합니다. 이 라이브러리에는 각 유형별 샘플 커넥터와 샘플 실행을 위한 Apache Ant 빌드 파일도 포함되어 있습니다.

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


Amazon Kinesis는 Amazon CloudWatch와 통합되므로 Amazon Kinesis 스트림에 대한 CloudWatch 측정치를 수집, 확인, 분석할 수 있습니다. Amazon Kinesis 지표에 대한 자세한 내용은 Monitoring Amazon Kinesis with Amazon CloudWatch를 참조하십시오.

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

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

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