백엔드 데이터 인프라 81편 — Kafka 활용 영역 7가지 (메시징·활동 추적·로그·이벤트 소싱)

2026-05-17백엔드 데이터 인프라

백엔드 데이터 인프라 81편. Kafka 활용 7가지 — 메시징·웹사이트 활동 추적·메트릭·로그 집계·스트림 처리·이벤트 소싱·Commit Log. 각 영역에서 왜 Kafka 가 자연스러운지, 어떤 회사가 어떻게 쓰는지 예제까지 풀어쓴 학습 노트.

📚 백엔드 데이터 인프라 · 81편 — Kafka 활용 영역 7가지 (메시징·활동 추적·로그·이벤트 소싱)

이 글은 백엔드 데이터 인프라 시리즈 130편 중 81편이에요. 80편 에서 Kafka 의 정체성 큰 그림을 잡았다면, 이번 81편은 7가지 핵심 활용 영역왜 이런 영역에서 Kafka 가 표준이 됐는지 구체적 예제로 풀어 가요.

Kafka 활용 영역이 어렵게 느껴지는 이유

Kafka 가 "이벤트 스트리밍" 이라는 추상적 개념을 푸는 도구라, 구체적 사용처가 모호 한 경우가 많아요.

첫째, 이름이 다양. 메시지 큐·이벤트 버스·로그 시스템·스트림 처리 — 다 같은 Kafka 인스턴스에서 가능하지만 어느 패턴인지 구분이 안 됨.

둘째, 회사마다 사용 패턴 다름. Netflix 는 모니터링, LinkedIn 은 활동 추적, Uber 는 위치 처리 — 비슷한 회사 안에서도 팀마다 다른 패턴.

이 글에서 7가지 클래식 활용 영역구체적 예제와 함께 풀어요.

1. 메시징 (Messaging)

패턴

Service A → Kafka Topic → Service B
                       → Service C (병렬)

마이크로서비스 간 비동기 메시지. RabbitMQ (전통 메시지 broker)·ActiveMQ (자바 진영 표준 broker) 같은 기존 시스템 대체.

Kafka 가 자연스러운 이유

초당 수만~수십만 건의 대량 메시지 에 강하고, 디스크에 1급으로 적재돼 내구성 이 보장돼요. Consumer 가 여러 명 — 같은 메시지를 여러 서비스가 동시에 처리하고, consumer 가 실수로 잘못 처리해도 offset (consumer 의 읽기 위치 포인터) 되감기재처리 가 가능해요.

구체적 예제

주문이 들어오면 orders 토픽에 publish 하고, 결제 서비스·재고 서비스·알림 서비스가 각자 같은 메시지를 처리 해요. 한 서비스에 문제가 생겨도 나머지는 정상 처리.

vs RabbitMQ — 언제 Kafka?

초당 만 건 이상 대량 처리재처리·과거 메시지 분석 이 핵심이면 Kafka, header·topic exchange 같은 복잡한 라우팅 이나 동기적 RPC 비슷한 흐름 이 핵심이면 RabbitMQ.

2. 웹사이트 활동 추적 (Activity Tracking)

Kafka 의 원래 use case. LinkedIn 이 수많은 사용자 활동 (페이지 뷰·검색·클릭) 을 처리하려고 만든 시스템.

패턴

Web App → Kafka Topic "user-clicks" → Real-time Analytics
                                    → Batch (Hadoop) Analytics
                                    → ML 추천 시스템

활동 타입별 별도 topicpage-views·searches·clicks·form-submits. 하나의 활동이 여러 시스템 에서 처리돼요. 위 그림에서 등장하는 Hadoop 은 분산 배치 처리 프레임워크예요.

Kafka 가 자연스러운 이유

사용자 1억 × 페이지 N 개 = 수십억 이벤트/일 규모의 매우 대용량 트래픽을 받고, 실시간 분석 + batch + 추천 처럼 여러 consumer 가 동시에 붙어요. 영구 보존 덕에 과거 데이터로 재분석하거나 새 ML 모델을 학습시키기도 좋아요.

구체적 예제

사용자가 페이지를 본 순간 page-views topic 에 이벤트가 들어가요. 실시간 시스템 은 추천 모델에 즉시 입력하고, Batch 시스템 은 매일 밤 Hadoop 으로 옮겨 통계를 돌리고, 모니터링 은 인기 페이지 trending 을 잡아요.

3. 메트릭 (Metrics) — 운영 모니터링

패턴

Server 1 → metrics → Kafka Topic "server-metrics" → Aggregator → Grafana
Server 2 → metrics →
Server N → metrics →

분산된 수많은 서버·서비스에서 메트릭을 수집중앙에서 집계. 여기 등장하는 Grafana 는 메트릭 시각화 대시보드예요.

Kafka 가 자연스러운 이유

수만 대 서버 의 메트릭을 한 곳에 손실 없이 모으고, Grafana·Prometheus 변환·알림·장기 보관처럼 다양한 후속 처리 로 흘려보낼 수 있어요.

Kafka vs Prometheus

Prometheus (메트릭 수집·저장 시스템) 는 pull 모델로 직접 메트릭을 저장하고 쿼리 까지 해요. 반면 Kafka 는 push 모델로 메트릭 transport (전달) 만 담당하고 저장은 별도 시스템에 맡겨요.

일반적 패턴은 Prometheus + Kafka 조합이거나, Kafka → Elasticsearch (검색·분석 엔진) / InfluxDB·TimescaleDB (시계열 DB).

4. 로그 집계 (Log Aggregation)

패턴

App Server logs → Kafka Topic "app-logs" → Elasticsearch / S3 / HDFS

분산된 모든 서버의 로그 파일 을 중앙에 모아요. Scribe·Flume (페이스북·아파치의 전통 로그 수집 도구) 같은 기존 로그 시스템 대체.

Kafka 가 자연스러운 이유

대량 로그 를 안정적으로 처리하고, 로그 발생부터 검색 가능 시점까지 수 초~수 분 의 낮은 지연이에요. 재처리 가능 덕에 분석 도구를 바꿔도 과거 로그를 재인덱싱 할 수 있어요.

구체적 흐름

[App] → Filebeat → Kafka "logs-prod" → Logstash → Elasticsearch → Kibana
                                     → S3 (장기 보관)
                                     → 알림 시스템

여기서 Filebeat 은 로그 파일을 수집해 보내는 경량 agent, Logstash 는 로그 가공·라우팅 엔진, Kibana 는 Elasticsearch 위의 시각화 UI 예요. 셋을 묶은 ELK (Elasticsearch·Logstash·Kibana) + Kafka 가 운영 로그 인프라의 표준 패턴.

5. 스트림 처리 (Stream Processing)

패턴

Raw 이벤트 → Kafka "input" → Kafka Streams (또는 Flink) → Kafka "output" → ...

여러 단계 처리 파이프라인 — 변환·필터·집계·조인.

Kafka 가 자연스러운 이유

Kafka Streams 는 Kafka 안에 내장된 경량 스트림 처리 라이브러리 (121~129편) 라 Topic-to-Topic 흐름이 자연스럽고, 상태 저장·윈도우·조인 같은 복잡한 패턴 도 지원해요. 외부 도구인 Flink (분산 스트림·배치 처리 엔진)·Spark Streaming (Spark 의 스트림 처리 모듈) 과의 통합도 매끄러워요.

구체적 예제 — 뉴스 추천 파이프라인

RSS 크롤 → "articles-raw"
         → 중복 제거·정규화 → "articles-clean"
         → 카테고리 분류 → "articles-categorized"
         → 사용자 매칭 → "recommendations"
         → 알림 발송

각 단계가 독립 서비스 고 Kafka 가 중간 buffer 역할을 해요. 한 단계가 느려져도 전체가 멈추지 않아요 — Kafka 가 받아 두니까.

6. 이벤트 소싱 (Event Sourcing)

패턴

도메인 이벤트 → Kafka "events" → ...
                              → 현재 상태 재계산
                              → 다른 시스템 sync

"상태를 직접 저장하지 않고, 상태 변화 이벤트만 저장" — Martin Fowler 의 Event Sourcing 패턴.

Kafka 가 자연스러운 이유

대규모 이벤트 로그 를 영구 저장하는 게 Kafka 의 본질이고, partition 안에서 순서 보장 이 돼요. 과거 이벤트로 상태를 재계산 하는 재처리 가 가능하고, 여러 consumer 가 한 이벤트 stream 을 DB·검색·캐시·외부 시스템 으로 동시에 동기화할 수 있어요.

구체적 예제 — 은행 계좌

"이체 +100" "이체 -50" "이자 +5" → Kafka "account-events"
                                  → 현재 잔액 = 모든 이벤트 재계산
                                  → 거래 내역 검색 (Elasticsearch)
                                  → 사기 탐지 (실시간 분석)
                                  → 회계 시스템 (배치)

전통 RDBMS 는 현재 잔액만 저장해요. Event Sourcing 은 모든 변화 를 저장해서 시간 여행·감사·디버깅 이 모두 가능해져요.

7. Commit Log

패턴

분산 시스템의 내부 commit log 로 Kafka 를 써요. 노드 간 상태 복제복구 메커니즘 역할.

Kafka 가 자연스러운 이유

Log Compaction (107편) 으로 키별 최신 값만 유지 하면 infinite retention 이 가능하고, 내구성과 복제 도 자체 분산으로 보장돼요. Apache BookKeeper (전문 분산 로그 저장 시스템) 같은 도구를 대체할 수 있어요.

구체적 예제

분산 캐시 시스템의 write-ahead log, 마이크로서비스 outbox pattern (트랜잭션과 메시지 발행의 일관성을 보장하는 패턴) 의 메시지 저장소, Database CDC (Change Data Capture) 의 sink 등.

영역별 선택 요약

활용 영역 Kafka 적합도 대안
대량 메시징 (>10K msg/sec) ★★★★★ RabbitMQ (소량+복잡 라우팅)
활동 추적·로그 (대용량) ★★★★★ — (사실상 표준)
메트릭 transport ★★★★ Prometheus pull (자체 저장 시)
로그 집계 ★★★★★ Fluentd·Logstash (Kafka 보완)
스트림 처리 ★★★★★ Flink·Spark Streaming (더 풍부)
이벤트 소싱 ★★★★★ EventStoreDB (전문 도구)
Commit Log ★★★★ BookKeeper, etcd

도입 시점 — 언제 Kafka?

여기서 정말 중요한 자리. "Kafka 가 좋다""내 시스템에 필요하다" 는 다른 질문.

Kafka 가 필요한 신호

메시징 처리량이 초당 1만 건 이상 이거나, 재처리·과거 분석 이 자주 일어나거나, 여러 시스템이 같은 데이터 stream 을 처리해야 하거나, 데이터 영구 보존 이 필요하거나, 이벤트 기반 아키텍처 로 가는 길목.

Kafka 가 과한 신호

메시징이 초당 100 건 미만에 간단한 작업 큐 면 과해요. 복잡한 라우팅 이 핵심이면 RabbitMQ 가 낫고, 운영 인력 부담이 결정적이거나 단순 큐 만 필요하면 Redis Stream 또는 SQS (AWS 의 관리형 메시지 큐) 가 충분해요.

회사 단계별

  • 스타트업 초기 (1~5명) — Redis Stream / SQS 충분
  • 중간 규모 (100명) — Kafka 도입 고려, Cloud Managed (MSK (AWS 관리형 Kafka)·Confluent Cloud (Kafka 창시자들이 만든 관리형 플랫폼))
  • 대규모 (1000명+) — Kafka 자체 운영 또는 Managed 적극 활용
  • 데이터 중심 기업 (LinkedIn·Netflix·Uber) — Kafka 인프라 핵심

시험 직전 한 번 더 — Kafka 활용 함정 압축 노트

  • 7가지 활용 = 메시징·활동 추적·메트릭·로그 집계·스트림 처리·이벤트 소싱·Commit Log
  • Kafka 원래 use case = 활동 추적 (LinkedIn)
  • vs RabbitMQ — 대량·재처리·여러 consumer 면 Kafka / 복잡 라우팅이면 RabbitMQ
  • vs Prometheus — Prometheus 는 메트릭 자체 저장+쿼리 / Kafka 는 transport
  • 일반 패턴 = Prometheus + Kafka 조합
  • 로그 집계 = ELK + Kafka 표준
  • 스트림 처리 = Kafka Streams (내장) + 외부 Flink·Spark
  • 이벤트 소싱 = 상태 저장 X, 상태 변화 이벤트만
  • 비유 — 은행 계좌 (모든 거래 = 이벤트, 잔액 = 재계산)
  • Commit Log = Log Compaction 으로 infinite retention
  • 도입 신호 — 대량 메시징·재처리·여러 consumer·영구 보존·이벤트 기반
  • 과한 신호 — 소규모·복잡 라우팅·단순 큐
  • 스타트업 = Redis Stream/SQS, 중간 = Cloud Managed, 대규모 = 자체+Managed
  • 운영 부담 = Kafka 도입의 가장 큰 비용
  • 처음 도입 환경 = Cloud Managed (AWS MSK·Confluent Cloud) 권장

공식 문서: Apache Kafka Uses 에서 자세한 활용 사례를 확인할 수 있어요.

시리즈 다른 편 (앞뒤 글 모음)

이전 글:

다음 글:

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!