Apache Kafka를 대신할 수 있는 완전 관리형 솔루션이다. 다음의 특징을 가진다.
- Kafka처럼 IoT, metrics, application log에 적합하다
- "실시간" 빅데이터에 유용하다
- 스트리밍 형태의 프로세스 프레임워크에 적합하다.(Spark, NiFi..)
- 데이타는 자동으로 3개의 AZ로 복제된다.
Kinesis 솔루션 패밀리
- Kinesis Stream : Low Latency streaming ingest at scale
- Kinesis Analytics : perform real-time analytics on streams using SQL
- Kinesis Firehose : load stream into S3, Redshift, ElasticSearch
Kinesis Stream 이란?
- Stream은 샤드로 분산 저장된다.
- 데이타 보유주기는 짧다.(1~7일(최대))
- 데이타를 Reprocess/Replay 할 수 있다.
- 다양한 어플리케이션이 같은 Stream의 데이터를 소비할 수 있다.
- Shard가 많아질수록 처리량이 증가한다.
- 데이터가 Kinesis에 Insert되면 삭제불가
Stream의 샤딩에 대해
- 한개의 Stream은 다양한 Shard로 이루어져 있다.
- Shard당 비용이 발생한다.
- Messaging과 Batch로 사용할 수 있다.
- 운영되는 동안에도 Shard를 Merge하거나 증가시킬 수 있다.
- Shard당 Record가 전송된다.
Stream의 Record에 대해
- 1MB까지 저장가능한 Blob(Byte 형식의 lob데이터) 형태의 데이터 Record
- 같은 Record Key는 같은 Shard에 저장된다. 즉 Shard에 저장하는 그룹단위를 뜻함
- Kinesis가 데이터를 가공하고 나서 부여하는 Unique한 구분자이다.
Kinesis 의 제약사항 들
Kinesis 데이타 Stream의 제약사항
Producer의 제약사항
1MB/s or 1000 messages/s at write PER SHARD
Consumer의 제약사항
2MB/s at read PER SHARD across all consumers
5 API calls per second PER SHARD across all consumers
= if 3 different applications are consuming, possibility of throttling
Data Retention 제약사항
24 hours data retention by default
Can be extended to 7 days
Kinesis Producer로는 다음의 것들이 있을 수 있다.
- Kinesis SDK
- Kinesis Producer Library (KPL)
- Kinesis Agent
- CloudWatch Logs
- 3rd party libraries :
Spark
Log4J
Appenders
Flume
kafka Connect
NiFi
Kinesis Consumer로는 다음의 것들이 있을 수 있다.
- Kinesis SDK
- Kinesis Client Library (KCL)
- Kinesis Connector Library
- Kinesis Firehose
- AWS Lambda
- 3rd party libraries:
Spark
Log4J Appenders
Flume
Kafka Connect
AWS Kinesis KCL 이란?
KCL은 offset으로 DynamoDB를 사용한다.
KCL은 다른 Worker들을 추적하고, Shard간 공유하기 위해 DynamoDB를 사용한다.
분산처리 방식의 데이터를 읽는데 적합한 구조를 띄고 있다.
Kinesis Data Firehose란?
Administration이 없는 완전관리형 서비스
준실시간(Latency발생)
데이터를 Redshift, S3, ElasticSearch, Splunk로 불러오는데 사용
자동 Scaling 지원
Lambda를 통해 Data 변형 지원(예: CSV → JSON)
Target이 S3일 경우 압축 지원
Firehose를 통해 흐르는 데이터 양 만큼 비용발생
Kinesis 데이타 Stream과 Firehose 비교
Streams
- Producer와 Consumer를 설정하는데 있어 Custom 코드 작성
- 실시간 (~200 ms latency for classic)
- Shard Scale 관리를 수동으로 수행
- 1~7일간 데이터 저장(재전송가능, Multi-Consumer시)
- Data를 실시간으로 Elastic Search에 Insert할 경우 Lambda 사용
Firehose
- S3, Splunk, Redshift, ElasticSearch 전송시 완전관리형 지원
- Lambda를 통해 데이터 형변환 지원
- 준실시간 (lowest buffer time is 1 minute)
- Auto Scaling
- 데이터 저장 역할 없음
Kinesis 데이타 Analytics 란?
SQL을 이용하여 Kinesis Stream을 실시간 분석
Auto Scaling지원
Analytics 를 위한 서버 불필요
소모율에 따른 비용발생
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) CloudWatch Alarm에 대해서 (0) | 2022.03.12 |
---|---|
(AWS) CloudWatch Metric에 대해서 (0) | 2022.03.12 |
(AWS) CloudTrail 이란? (0) | 2022.03.04 |
(AWS) Opsworks 란? (0) | 2022.03.04 |
(AWS) ECR/ECS를 활용한 CI/CD 파이프라인 (0) | 2022.03.03 |