home
SAA-C03

[analytics] Data Firehose

스트리밍 데이터를 S3나 Redshift로 그냥 흘려보내고 싶을 때. 서버 없이 알아서 실어 나르는 Firehose.

One-Line Summary

Data Firehose(구 Kinesis Data Firehose)는 스트리밍 데이터를 S3·Redshift·OpenSearch 등 목적지에 서버 없이 자동으로 적재(load) 해주는 완전관리형 전송 서비스다. 시험에서는 서버리스 스트리밍 적재 / 관리 불필요 / 근실시간(near real-time, 버퍼링) / 도중 Lambda 변환·포맷 변환(Parquet) 이 핵심이다. "스트리밍 데이터를 그냥 저장소로 흘려보내면 된다"면 Firehose다.

Why It Exists

Kinesis Data Streams로 데이터를 받으면, 그것을 S3나 Redshift에 넣는 소비자 코드와 인프라를 직접 만들고 운영해야 한다. 대부분의 경우 목표는 "그냥 안정적으로 적재"인데 이건 낭비다.

Data Firehose는 이 적재 파이프라인 자체를 완전관리형으로 대신해준다. 샤드도, 소비자 서버도 없다.

직접 구성
  소스 -> KDS -> (직접 만든 소비자 EC2/Lambda) -> S3/Redshift  (운영 부담)

Data Firehose
  소스 -> Firehose -> S3 / Redshift / OpenSearch / Splunk / HTTP
        (서버리스, 버퍼링·재시도·확장 자동, 코드 최소)

시험 감각:

"스트리밍 데이터를 서버 관리 없이 S3/Redshift/OpenSearch로 적재" = Data Firehose.

Abbreviations

약어풀네임의미
FirehoseAmazon Data Firehose스트리밍 데이터를 목적지로 자동 적재하는 완전관리형 서비스
BufferBuffer (size/interval)데이터를 모았다가 한 번에 보내는 크기/시간 기준
Delivery StreamDelivery StreamFirehose의 전송 단위(소스→목적지 연결)
Parquet/ORCColumnar format분석에 유리한 열 기반 저장 포맷

동작 방식과 버퍼링

Firehose는 데이터를 버퍼(크기 또는 시간) 만큼 모았다가 목적지로 보낸다. 그래서 완전 실시간이 아니라 근실시간(near real-time) 이다.

소스(KDS / 직접 PUT / CloudWatch Logs 등)
  -> Firehose가 버퍼에 모음
     (버퍼 크기 도달 or 버퍼 시간 경과 중 먼저 오는 것)
  -> 필요 시 Lambda로 변환, 포맷 변환(JSON->Parquet)
  -> 목적지로 전송(+ 실패분은 S3로 백업)
항목내용
버퍼 기준버퍼 크기(MB) 또는 버퍼 시간(초) 중 먼저 충족되는 쪽
지연 특성근실시간(최소 버퍼 시간만큼 지연, 완전 실시간 아님)
확장/운영서버리스, 자동 확장, 샤드 개념 없음

시험 감각:

"완전 실시간(초 미만)"이 아니라 "몇 초~분 단위로 모아서 적재해도 된다" = Firehose로 충분.

지원 목적지 (Destinations)

유형
AWS 저장/분석Amazon S3, Amazon Redshift, Amazon OpenSearch Service
서드파티Splunk, Datadog, New Relic 등 HTTP 엔드포인트
가장 흔한 시험 패턴
  스트리밍 로그 -> Firehose -> S3 (데이터 레이크)
  스트리밍 로그 -> Firehose -> OpenSearch (검색/대시보드)
  스트리밍 데이터 -> Firehose -> Redshift (S3 경유 COPY)

시험 감각:

"실시간 로그를 검색·시각화" = Firehose → OpenSearch. "스트리밍 데이터를 데이터 레이크에" = Firehose → S3.

도중 변환·포맷 변환 (빈출)

Firehose는 적재 전에 데이터를 가공할 수 있다.

기능설명
Lambda 변환레코드를 Lambda로 실시간 정제/필터/포맷 변경
포맷 변환JSON → Parquet/ORC (열 기반, Athena/분석 비용·성능 개선)
압축·암호화GZIP 등 압축, KMS 암호화
동적 파티셔닝키(예: 날짜)별로 S3 경로를 나눠 저장

시험 감각:

"적재 전에 데이터를 변환/필터/Parquet로 변환" = Firehose + Lambda 변환 / 포맷 변환.

Firehose vs Kinesis Data Streams (핵심 비교, 빈출)

구분Data FirehoseKinesis Data Streams
주 목적목적지로 적재(load)실시간 수집·처리(다중 소비)
관리완전관리형, 서버리스, 샤드 없음샤드/용량 모드 관리
지연근실시간(버퍼링)실시간(밀리초)
데이터 보존/replay없음(적재 후 저장 안 함)최대 365일, replay 가능
다중 소비자목적지로 보낼 뿐여러 소비자 동시 소비
커스텀 처리Lambda 변환 정도Flink/Lambda 등 자유로운 처리

시험 감각:

"저장·적재가 목적, 서버 관리 싫다" = Firehose. "실시간 다중 소비·되감기·커스텀 처리" = KDS(필요 시 KDS→Firehose 조합).

Common Wrong Directions

오답 방향왜 부족한가
완전 실시간(초 미만) 처리가 필요한데 FirehoseFirehose는 버퍼링 기반 근실시간 → 실시간은 KDS/Flink
데이터를 나중에 다시 읽어야(replay) 하는데 FirehoseFirehose는 보존/replay 없음 → KDS
여러 소비자가 동시에 처리해야 하는데 FirehoseFirehose는 적재 전용 → 다중 소비는 KDS
단순 S3 적재인데 KDS+소비자 EC2 직접 구성적재만이면 서버리스 Firehose가 운영 부담 최소
적재 전 변환을 위해 별도 파이프라인 구축Firehose 내장 Lambda 변환/Parquet 변환으로 충분

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"load streaming data into S3/Redshift/OpenSearch"Data Firehose
"fully managed, no servers, minimal operations"Data Firehose
"near real-time delivery / buffer then deliver"Data Firehose
"transform records before loading / convert to Parquet"Firehose + Lambda 변환 / 포맷 변환
"stream logs to a search & visualization service"Firehose → OpenSearch
"need to replay / multiple real-time consumers"Data Firehose 아님 → KDS

Memory Sentence

Data Firehose는 스트리밍 데이터를 S3·Redshift·OpenSearch로 서버 없이 자동 적재하는 근실시간 전송 서비스다. 버퍼링 기반이라 완전 실시간이 아니고, 보존·replay·다중 소비는 없다. 적재 전 Lambda 변환·Parquet 변환 가능. 실시간·다중 소비·되감기가 필요하면 KDS.

References

댓글

아직 댓글이 없습니다.