[2023 기능대회 준비] 14. Kinesis란

Yohan_05·2023년 3월 23일
1
post-thumbnail

Kinesis란?

대용량 스트리밍 데이터를 수집하고, 처리 및 분석할 수 있다. 이를 통해, 데이터를 실시간 처리해 S3와 같은 스토리지에 저장한 후, 다양한 일괄 처리를 할 수 있다.

스트리밍 데이터처리 패턴

데이터 생산자 -> 스트리밍 서비스 -> 데이터 소비자의 순으로 데이터 처리가 이루어진다.

데이터 생산자

지속적인 데이터 생성이 가능하며 스트림으로 지속적인 데이터가 쓰여진다. 또한 무엇이든 대상이 될 수 있기에 데이터를 생성하기 유용하다.

스트리밍 서비스

내구성있게 데이터가 저장되어야하며 데이터 준비를 위해 임시적인 버퍼 공간을 제공한다.

데이터 소비자

지속적으로 데이터를 처리하는 것을 말한다. 정리, 준비, 집계 등의 일을 진행하며 데이터를 정보로 전환한다.

Kinesis 특징

4가지의 서비스가 있고 각 특징마다 서비스가 나뉜다.

Kinesis Data Streams

  • 데이터 스트림을 분석하는 사용자 정의 애플리케이션 개발에 사용됨.
  • 데이터를 받으면 일정 기간 동안 내구성 있게 데이터를 저장하기 위한 서비스

Kinesis Data Firehose

  • 데이터 스트림을 aws 데이터 저장소에 적재함.
  • 데이터를 입력받고 s3나 Redshift 등으로 전송
  • 뒷 단의 목적지로 데이터를 전송하기 위한 목적을 가짐.

Kinesis Data Analytics

  • SQL을 사용해 데이터 스트림 분석
  • Kinesis Data Stream 또는 Firehose에 쉽게 연결하고 SQL 검색을 할 수 있음.
  • 수행 결과를 다시 data stream 또는 firehose로 보냄
  • 스트리밍 소스에 연결 -> SQL 코드를 쉽게 작성 -> 지속적으로 SQL 결과를 전달함
  • 데이터를 처리하기 위한 2가지 컨셉 사용 (스트림, 펌프)

Kinesis Video Streams

  • 분석을 위한 비디오 스트림 캡처 및 처리, 저장

Kinesis Data Stream

producer인 웹 페이지, 어플리케이션 등에서 스트리밍 데이터를 data stream으로 실시간으로 게속해서 보내면, 여러 consumer(ec2 인스턴스 등)에서 실시간으로 데이터를 처리하는 아키텍처.

이후 kinesis firehose를 통해 s3와 같은 저장소에 저장할 수도 있음. 그리고 아래의 4가지로 구성된다.

Data recode

Kinesis Stream에 저장되는 단위(시퀀스 번호 + 파티션 키 + 데이터 BLOB(변경 불가능한 바이트 시퀀스)로 구성됨.
Shard : data stream에서 고유하게 식별되는 레코드 시퀀스 -> 스트림은 하나 이상의 샤드로 구성되며 샤드는 고정된 용량을 제공함
Partition Key : 스트림 내의 샤드 별로 데이터를 그룹화 하는 데 사용함 -> 이를 통해 레코드가 보내질 샤드를 구분함.
Sequence Number : 각 데이터 레코드에는 샤드 내에 파티션-키마다 고유한 Sequence number가 있음.

Kinesis Firehose Delivery Stream

  • firehose를 통해 스트리밍 데이터를 S3 버킷과 같은 저장소, 분석 도구, data lake 등으로 안정적인 전달이 가능하다.
  • 스트리밍 데이터를 캡쳐해 로드할 수도 있고 압축,처리,변환 기능도 제공해서 편리한 사용이 가능하다.

그래서 Data Stream 이랑 Firehose 가 뭐가 다른데

  • 실시간 데이터를 처리하는 점은 동일함.
  • Data stream : 수집과 저장, data firehose : 처리 및 전송. 이렇게 기능이 다르다.

마치며

Kinesis 시리즈들을 이용하여 실습 진행할 예정.

profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

0개의 댓글