AWS Kinesis란?
실시간으로 대용량 스트리밍 데이터를 수집하고, 처리 및 분석할 수 있는 서비스
스트리밍 데이터 처리 패턴
스트리밍 데이터 처리의 Usecase 크게 3가지로 나눌 수 있다
1. ELT
- 분석 도구에 신속하게 데이터 전달
ex) S3에 로그 데이터 수집
2. 지속적인 지표 생성
- 데이터가 생성될 때 분석 수행
- 실시간 데이터 출력 가능
ex) 시계열 데이터 분석
3. 반응형 분석
- 분석 결과에 빠르게 반응
ex) 쇼핑몰 사이트의 추천 알고리즘, 이상 행동 감지
AWS Kinesis
Kinesis는 기능에 따라 3개의 서비스로 나뉜다
- Kinesis Data Stream
- Kinesis Data Firehose
- Kinesis Data Analytics
1. Kinesis Data Stream
- 실시간으로 데이터 스트림을 수집 및 저장
- 샤드 수를 조절하여 스트림을 얼마나 받을지 조절 가능
- 구성
- Data record : Kinesis stream에 저장되는 단위(시퀀스 번호 + 파티션 키 + 데이터 BLOB)로 구성
- Shard : Data stream에서 고유하게 식별되는 레코드 시퀀스
- 스트림은 하나 이상의 샤드로 구성되며, 샤드는 고정된 용량 제공
- Partition key : 스트림 내의 샤드 별로 데이터를 그룹화하는 데 사용
- Sequence Number : 데이터 레코드에는 샤드 내에 파티션 - 키 마다 고유한 sequence number 존재
- 목적지
- Kinesis Data Analytics
- Spark on EMR
- EC2
- Lambda
2. Kinesis Firehose
- 미리 정의된 목적지에 데이터를 안전하게 전달하는 것이 주목적
- 스트리밍 데이터를 갭처해 로드할 수 있고, 압축, 처리, 변환 기능을 제공하여 편리하다
- Lambda를 이용하여 가공하는 작업 또한 가능
- 목적지
- S3
- ElasticSearch
- Amazon Redshift
- HTTP Endpoint
Kinesis Data Stream vs Firehose
- Data stream은 Low Latency Streaming Service이고, Firehose는 Data Transfer Service 이다
- Data stream은 길게는 일주일까지 데이터를 잠시 저장할 수 있지만, Firehose는
Transfer
이기 때문에 저장할 수 없다
- Data stream은 수집, Firehose는 전달