15

긴급 요청: 실시간으로 데이터 처리해줘

Structured Streaming: 배치처럼 쓰는 스트리밍

학습 목표

실시간 데이터 처리가 필요한 비즈니스 상황을 이해한다 Structured Streaming의 필요성을 파악한다

"배치 처리로는 이제 안 돼요"

팀장: "이커머스팀에서 급하게 연락 왔어. 주문 사기 탐지가 1시간 뒤에야 된다고 난리야."

평소처럼 Spark 배치 잡을 돌리고 있었다. 1시간마다 주문 데이터를 가져와서 분석하는 파이프라인. 잘 돌아가고 있었는데... 뭐가 문제지?

"사기범이 1시간 동안 20건을 결제하고 사라졌대. 탐지됐을 땐 이미 늦었어."

아...


왜 배치로는 안 될까?

배치 처리의 한계:

에디터 로딩 중...

실시간 처리가 필요한 상황:

  • 사기 탐지: 이상 거래 즉시 차단
  • 재고 관리: 품절 전에 알림
  • 실시간 대시보드: 경영진 의사결정
  • IoT 센서: 장비 이상 즉시 감지

"그럼 Kafka Consumer 직접 짜야 해요?"

처음에 그렇게 생각했다.

에디터 로딩 중...

문제점:

  • 체크포인트? 직접 구현해야 함
  • 장애 복구? 직접 구현해야 함
  • 윈도우 집계? 직접 구현해야 함
  • 상태 관리? 직접 구현해야 함

"그거 다 Spark가 해줄 수 있어."

그때 처음 들었다. Structured Streaming.


Structured Streaming: 배치처럼 쓰는 스트리밍

Spark 팀의 철학:

"스트리밍도 배치와 같은 API로 처리하면 되지 않을까?"

에디터 로딩 중...

read → readStream write → writeStream

이게 전부다.


이번 Day에서 배울 것

  1. Structured Streaming 개념: 마이크로 배치가 뭔지
  2. Watermark와 Window: 늦은 데이터 어떻게 처리하는지
  3. 실습: Rate Source로 스트리밍 테스트
  4. Kafka 연동: 실무에서 가장 많이 쓰는 조합

시작하자.