데이터가 쏟아지는 요즘, “어떻게 다 모으고, 어떻게 잘 써먹을까?” 하는 고민이 많다.
이에, Kafka랑 Spark를 활용해서 실시간 데이터레이크(Realtime Datalake)를 어떻게 구성하는지 정리해본다.
이걸 원본 그대로 저장하고, 필요할 때 꺼내 쓰는 구조다.

최근엔 두 장점을 합친 Lakehouse라는 개념도 많이 언급된다.
옛날 DW 기반 리포팅은 하루 단위로 데이터 뽑아도 충분했다.
근데 요즘은 다르다.
실시간 분석 없이는 경쟁력이 떨어진다.
그래서 Kafka + Spark 조합이 나온다.
Kafka는 분산 메시징 플랫폼이다.
수많은 데이터 소스(웹 로그, IoT 기기, DB 변경 로그 등)에서 데이터를 받아서, 브로커에 실시간으로 쌓는다.
👉 데이터레이크로 들어오는 데이터 파이프라인의 관문 역할을 한다고 보면 된다.
Spark는 원래 배치 처리용으로 유명했지만, Structured Streaming 덕분에 실시간 데이터 처리도 가능하다.
👉 Spark는 단순히 “저장”이 아니라 “데이터에서 인사이트 뽑아내는 엔진”이다.
실시간이라고 해서 구조가 크게 달라지진 않는다. 데이터레이크는 보통 이렇게 구성된다:
[데이터 소스]
↓ (로그/이벤트/센서)
Kafka (실시간 수집)
↓
Spark Structured Streaming (실시간 처리/분석)
↓
데이터레이크 저장소 (S3, GCS 등)
↓
쿼리 엔진 (Athena, BigQuery 등)
↓
BI & Dashboard (Tableau, Power BI)
강의[Kafka & Spark 활용한 Realtime Datalake] 중에 작성한 글