iot 실습하다가 Kinesis Data Streams와 Kinesis Data Firehose 차이가 와닿지 않아 개념을 좀 정리해보려 한다..


Amazon Kinesis

  • 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석 가능
  • 모든 규모의 스트리밍 데이터를 비용 효율적으로 처리할 수 있는 핵심 기능, 애플리케이션 요구 사항에 가장 적합한 도구를 선택할 수 있는 유연성 제공
  • 실시간 데이터: (비디오, 오디오, 애플리케이션 로그, 웹 사이트 클릭 스트림, IoT 텔레메트리 등)

Kinesis Video Streams

  • 분석, ML(기계 학습), 재생 및 기타 처리를 위해 커넥티드 디바이스에서 AWS로 비디오를 쉽고 안전하게 스트리밍
  • 수백만 대의 디바이스의 스트리밍 비디오 데이터 수집하는 데 필요한 인프라 자동으로 프로비저닝, 탄력적 스케일링

Kinesis Data Analytics

Kinesis Data Streams

  • 데이터 스트림
  • 기능: https://aws.amazon.com/ko/kinesis/data-streams/features/?nc=sn&loc=2

Kinesis Data Firehose

  • 전송 스트림
  • 기능: https://aws.amazon.com/ko/kinesis/data-firehose/?nc=sn&loc=2&dn=3

 

여기서 문제가 되는 건... Data Streams와 Data Firehose의 차이다!

Video Stream 과 Data Analytics는 이름만 봐도 알 수 있을 정도로 역할이 명확히 나뉘는데...😑


Kinesis Data Stream Console

 

Kinesis Data Firehose Console

소스: Kinesis Data Streams, Direct PUT

대상: OpenSearch Service, Redshift, S3, Coralogix, Datadog, Dynatrace, HTTP 엔드포인트 등... 

Kinesis Data Stream은 실시간으로 data들을 받아들일 수 있는 입구이자 저장소의 역할을 한다.

한 시스템이 실시간으로 데이터를 전송하면 해당 Data Stream을 듣고 있던 다른 시스템이 해당 데이터를 받아 처리

약간 pipeline이자 메시지 큐와 같은 느낌? 

 

Kinesis Data Firehose의 목적은 미리 정의된 대상(Destination)에 데이터를 안전하게 전달하는 것이다.

대상의 경우 S3 bucket, ElasticSearch, Amazon Redshift 등 데이터레이크의 역할을 할 수 있는 다양한 저장소를 의미한다.

중간에 lambda를 이용해 가공하는 작업도 가능!

 

 

❗ 다시 한번 더 정리를 해보면 ❗

  • Data Stream - low latency streaming service / Firehose - data transfer service
  • Data Stream은 길게는 일주일 까지 데이터를 잠시 저장할 수 있지만, Firehose의 경우 데이터 저장의 기능이 없음
  • Data Stream은 Stream에서 데이터를 꺼내와 작업하는 느낌이라면 Firehose는 데이터를 직접 Destination에 전달
  • Data Stream은 여러개의 Consumer를 지정할 수 있지만 Firehose는 단일 Destination을 가짐
  • Data Stream은 샤드 수를 조정하여 수동으로 Scailing, but Firehose는 데이터 요청에 따라 Scailing이 자동으로

sample

이걸 보면 알 수 있을 듯?!

Data Streams의 경우 바로 lambda로 가공을 시작하지만, Data Firehose의 경우 S3의 저장을 한 뒤에 가공을 하네?!

+ Recent posts