IaaS/퍼블릭클라우드

(AWS) Kinesis란?

armyost 2022. 3. 7. 10:25
728x90

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