개요
- Kinesis는 대용량 스트리밍 데이터를 수집하고, 처리 및 분석 가능한 AWS 서비스.
- 데이터를 실시간 처리해 스토리지에 저장한 후, 다양한 처리가 가능
Kinesis 종류
Kinesis는 데이터 스트림의 실시간 수집, 처리, 분석 작업에 따라 4가지 서비스로 분류 된다.
- Kinesis Data Streams
- 데이터를 수집하여 일정 기간 동안 저장하는 내구성 있는 서비스
- Kinesis Firehose
- S3, redshift, elasticsearch 등의 스토리지로 데이터를 전송
- 데이터 스트림을 저장하고는 있지만 데이터 전송이 주 목적
- Kinesis Data Analytics
- Kinesis Data Stream 또는 Firehose에 연결하여 SQL을 사용해 데이터 스트림 분석
- 수행 결과를 다시 Data Stream 또는 Fireshose로 전송
- Kinesis Video Streams
- 분석을 위한 비디오 스트림 캡쳐 및 처리, 저장
Kinesis Data Stream

- 대용량 데이터를 수집하여 기본 24시간 최대 8760시간(365일) 보존
- 24시간이 기본값이면서 최소값이며, 24시간을 넘게 설정하면 추가 비용이 발생
- 단일 레코드는 최대 1MB 처리 가능
- 저장된 데이터를 애플리케이션에서 polling으로 읽어서 사용
주요 용어
- 샤드
- 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스
- 데이터 레코드를 여러 샤드에 나눠서 저장
- 스트림은 하나 이상의 샤드로 구성되며, 샤드는 고정된 용량을 제공
- 각 샤드는 최대 5TPS 읽기, 최대 2MB/s 읽기 속도 지원
- 각 샤드는 1000개의 레코드, 최대 1MB/s 쓰기 속도 지원
- 샤드의 총 용량 합계는 스트림의 총 용량
- 파티션 키
- 샤드별로 데이터를 그룹화 하기 위한 키
- 각 데이터 레코드와 연결된 파티션 키를 사용하여 해당하는 샤드 확인
- 애플리케이션이 스트림에 데이터를 쓰기 전에 파티션 키 지정 필요
- 시퀀스 번호
Kinesis Firehose

- 스트리밍 데이터를 안정적으로 캡처하고 변환하여 데이터 레이크, 데이터 스토어, 분석 서비스에 전달하는 완전 관리형 ETL서비스
- 스트리밍 데이터를 대상으로 전송하기 전에 특정 크기 또는 일정 기간 동안 버퍼링(Buffer Size, Buffer Interval 설정)
Data Stream과 Firehose 뭘 선택해야 하나
- 실시간 데이터를 수집해서 처리한다는 점에서는 동일
- Data Stream은 수집과 저장에 더 중점을 두고 있으며, Firehose는 처리 및 전송에 중점을 두고 있음
- 이런 차이로 두 서비스의 처리 결과를 전송하는 대상이 달라짐
- Data Stream
- Firehose
- S3
- Redshift
- Elasticsearch
훌륭한 글이네요. 감사합니다.