[AWS] Kinesis Data Stream 이란?

김경훈·2023년 10월 23일
1

AWS

목록 보기
10/18
post-custom-banner

aws를 공부하다가 내용을 확실하게 알고 넘어가야겠다 싶어 확실하게 정리하려고 합니다.

application communications의 두가지 패턴

1) synchronous communications (동기 커뮤니케이션)

  • application to application
    애플리케이션이 또 다른 애플리케이션과 직접적으로 연결된 상태를 말합니다. 예를 들면 구매 서비스와 배송 서비스가 직접적으로 연결되어 있어 구매와 동시에 배송 서비스도 작동하도록 하는 것 입니다.
    그러나 이런 동기 커뮤니케이션은 sudden spike of traffic, 즉 구매 서비스가 갑자기 폭등하는 것처럼 한 서비스가 다른 서비스를 압도하게 되는 경우 문제가 발생합니다.
    이런 경우에 서비스끼리 분리(decouple)되어 있는것이 좋겠죠. 이런 분리된 구조를 비동기 커뮤니케이션이라고 합니다.

2) asynchronous communications / Event based (비동기 커뮤니케이션)

  • application to queue to application
    비동기 커뮤니케이션의 경우 애플리케이션과 애플리케이션을 직접 연결하지 않고 중간에 큐를 두어 어플리케이션을 분리(decouple)하는 것을 말합니다. 이렇게 하면 구매 서비스가 폭증하더라도 그 정보가 큐에 저장되고, 배송서비스는 큐에서 감당할 수 있을 만큼 구매 서비스 정보를 가져오면되니 한쪽 서비스의 폭증으로 인한 전체 서비스의 문제를 피할 수 있습니다.

이렇게 분리(decouple)하는 모델은 종류 별로 다음과 같이 있습니다.

  • SQS : queue model
  • SNS : pub/sub model
  • Kinesis : real-time streaming model
    이 중에서 Kinesis, 그 중에서도 Kinesis Data Stream에 대해 알아보겠습니다.

Kinesis 개요

make it easy to collect, process and analyze streaming data in real time.
kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집하고 처리하여 분석할 수 있습니다.
kinesis에는 다양한 서비스가 있습니다.
1. Kinesis Data Stream : capture, process, and store data stream.
2. Kinesis Data Firehose : load data streams into AWS data stores.
kinesis Data Firehose에서는 데이터 스트림을 AWS 내부나 외부의 데이터 저장소로 읽어 들인다.
3. Kinesis Data analytics : analyze data streams with SQL or Apache Flink.
Kinesis Data analytics에서는 SQL 언어나 Apache Flink를 활용하여 데이터 스트림을 분석합니다.
4. Kinesis Video Streams : capture, process, and store video streams.

Kinesis Data Stream


"생산자가 실시간 데이터를 Kinesis Data Stream에 데이터를 전송하고, 데이터는 잠시 그곳에 머물면서 여러 소비자에게 읽힌다."
Kinesis Data Streams을 설명하는 가장 간단한 한 문장입니다.
예를들어 커머스 앱의 경우 동시간대 수많은 이용자가 상품에 좋아요를 누르고, 장바구니에 담고, 결제를 하는 등 굉장히 많은 이벤트가 발생 합니다. 이렇게 실시간으로 물 밀듯이 들어오는 데이터를 받아주는 곳이 Kinesis Data Streams 입니다.

생산자(producers) -> Kinesis Data Streams -> 소비자(consumer)

생산자가 데이터스트림으로 파티션 키(partition key)가 포함된 메세지를 전송하고, 파티션 키(partition key)가 같은 데이터들은 같은 샤드(shard N)에 들어가서 키를 기반으로 데이터를 정렬할 수 있습니다.

Kinesis Data Stream 특징

  • 보존 기간은 1일~365일 사이로 설정할 수 있고, 이 말은 기본적으로 데이터를 다시 처리하거나 확인할 수 있다는 뜻입니다.

  • 일단 데이터가 kinesis로 들어오면 삭제할 수 없습니다. (불변성 immutability)

  • 생산자(producers)는 : AWS SDK, Kinesis Producer Library(KPL), Kinesis Agent를 사용하여 데이터를 전송할 수 있고,

  • 소비자(consumers)는 : Kinesis Client Library(KCL)이나 SDK를 써서 직접 데이터를 작성할 수 있습니다.

  • managed에는 AWS Lambda, Kenesis Data Firehose, Kenesis Data Analytics를 활용할 수 있습니다.

profile
Cloud & DevOps
post-custom-banner

0개의 댓글