Kinesis - Kinesis Data Streams

Jihun Kim·2022년 4월 19일
0

aws solutions architect

목록 보기
53/57
post-thumbnail

Kinesis

Kinesis를 이용하면 스트리밍 데이터를 실시간으로 쉽게 수집/처리/분석할 수 있다.

  • Kinesis를 이용해 Application logs, Metrics, Website clickstreams 등을 처리할 수 있다.
  • Kinesis는 네 가지 요소로 이루어져 있다.
    - Kinesis Data Streams
    - Kinesis Data Firehose
    - Kinesis Data Analytics
    - Kinesis Video Streams

kinesis Data Streams

  • Kinesis Data Streams는 Stream으로 이루어져 있다.
    - Stream은 N개의 샤드로 구성되며 이 샤드 개수는 스케일링할 수 있다(즉, 원하는 개수 만큼의 샤드를 가질 수 있다).
  • Kinesis Data Streams에 샤드가 많을수록 스트림을 통과할 수 있는 처리량이 증가하게 된다.
  • 만약 생산자가 동일한 partition key를 사용하면 동일한 샤드로 데이터가 이동한다.
  • 요금은 프로비저닝 된 샤드 마다 부과된다.
  • Retention은 1일 ~ 365일까지 가능하다.
    - 1일이 기본값이다.
  • 만약 데이터가 한 번 Kinesis로 들어가면 해당 데이터는 삭제할 수 없다(immutability).
  • 데이터끼리 서로 같은 partition key를 가지면 해당 데이터들은 같은 샤드로 들어간다(ordering).

구조

생산자 -> Kinesis Data Streams -> 소비자의 구조로 이루어져 있다.


생산자

  • Kinesis Data Streams에 데이터를 보내기 위해서는 생산자가 필요하다.
  • 생산자는 애플리케이션, 클라이언트 등이 될 수 있으며 생산자는 실시간으로 데이터를 스트림에 전송할 수 있다.
    - AWS SDK, Kinesis Producer Library (KPL), Kinesis Agent
  • 가령, 생산자에 해당하는 애플리케이션이 스트림에 레코드를 보내면 Kinesis Data Streams에서 해당 데이터를 처리한다.

생산자의 레코드

  • 레코드는 Partition key와 최대 1MB의 Data Blob으로 구성된다.
  • 각 샤드는 초 당 1MB 또는 1000개의 메시지를 제공할 수 있다.
    - 만약 샤드가 30개라면 초 당 30MB 또는 3000개의 메시지를 전달할 수 있다.

소비자

  • 소비자는 Kinesis Data Streams에서 데이터를 소비한다.
  • 소비자로는 Kinesis Client Library (KCL), AWS SDK, 앱, 람다, Kinesis Data Firehose, Kinesis Data Analytics 등이 될 수 있다.

소비자의 레코드

  • 소비자가 받게 되는 레코드는 Partition Key + Sequence number + Data Blob으로 구성 된다.
  • 샤드에 데이터가 추가되었기 때문에 데이터는 sequence number를 갖게 된다.
  • Kinesis Data Streams를 지원하는 소비자는 여러 개일 수 있기 때문에 여기서 Pub/Sub 패턴이 생길 수 있다.
  • 소비 메커니즘은 크게 2가지가 있다.
    - 공유(Shared) 메커니즘: 모든 소비자 애플리케이션에 걸쳐 샤드 마다 초 당 2MB(2MB/shard)를 얻게 된다.
    - 향상된(Enhanced) 메커니즘: 향상된 소비자를 사용하면 소비자마다 샤드 당 초 당 2MB(2MB/shard)를 얻게 된다(공유 메커니즘 보다 처리량이 더 많다).
profile
쿄쿄

0개의 댓글