Share
Sign In

Kinesis

Apache Kafka를 대체해 실시간 스트림을 처리하는 서비스이다.
Kinesis Streams : 적은 레이턴시로 스트림을 처리
Kinesis Analytics : SQL로 실시간 분석을 수행
Kinesis Firehose : 스트림을 S3 등에 저장
1. Kinesis Data Streams
ProvisionedThroughputException 옵션이 없으면 샤드당 1MB/s나 1000 messages/s의 쓰기 속도를 가진다.
샤드당 2MB/s나 5 API/s의 읽기 속도를 가진다.
샤드 개수로 비용을 청구하고, 샤드를 통합하는 것도 가능하다.
기본 24시간, 최대 365일까지 데이터를 보관한다.
들어온 데이터는 지울 수 없다. (불변성)
Streams Records
Data Blob : Kinesis로 보내지는, 최대 1MB의 직렬화된 데이터
Record Key : 레코드를 묶는 키값. 같은 key = 같은 샤드
Sequence Number : 샤드에 들어온 순서대로 매긴 번호
Kinesis Client Library (KCL)
Kinesis Streams을 처리하는 어플리케이션을 위한 라이브러리다. 여러 대의 KCL이 동시에 stream을 읽으면 서로 어디를 읽고 있는지 알 수가 없다. 그래서 KCL은 strem을 읽으면 DynamoDB에 checkpoint progress를 작성해 서로의 진행상황을 공유한다.
2. Kinesis Data Firehose
거의 실시간으로 스트림을 S3 등의 서비스에 저장하는 완전 관리형 서비스이다.
최소 60초 혹은 최소 32MB가 될 때까지 기다린다.
Lambda를 통해 데이터 변환을 지원한다. (CSV → JSON)
통과한 데이터의 양만큼 지불한다.
Redshift, S3, ElasticSearch, Splunk에 데이터를 저장한다.
Kinesis Data Streams vs Firehose
Kinesis Data Streams
데이터를 소비할 수 있게 변환함
직접 코드 작성, 실시간(~200ms)
확장 가능
하루에서 365일까지 데이터 보관
Kinesis Data Firehose
스트리밍 데이터를 받아 다른 스토리지에 저장
완전 관리, 거의 실시간
자동 확장
데이터 보관 X
3. Kinesis Data Analytics
SQL 문법을 이용해 실시간 데이터를 분석하는 완전 관리형 서비스이다. 자동 확장이 가능하고 시간 연속적인 분석이나 실시간 랭킹 등에 사용된다.