1. Kafka, 도대체 왜 쓰는 걸까?

핵심 요약: Kafka는 '분산 이벤트 스트리밍 플랫폼'입니다. 수많은 데이터(이벤트)를 실시간으로 안정적으로 받아서 순서대로 기록하고, 여러 시스템이 필요할 때마다 안전하게 가져다 쓸 수 있게 해주는 중간 다리 역할을 합니다.

1. 원리: 분산 커밋 로그 (Distributed Commit Log) - 카프카의 심장

Kafka의 본질은 '로그(Log)'입니다. 하지만 그냥 로그가 아니라, '분산되고(Distributed), 추가만 가능한(Append-only), 복제된(Replicated) 로그'라는 점이 핵심입니다. 이를 '커밋 로그(Commit Log)'라고 부릅니다. 이 세 가지 특성은 선택하는 것이 아니라, 카프카를 구성하는 기본 속성입니다.

2. 비유: 무한히 길어지는 마법의 공유 노트

Kafka를 '무한히 길어지는 마법의 공유 노트'에 비유할 수 있습니다.

3. 실무 관점: 시스템 간의 결합도(Coupling) 낮추기

Before Kafka (강한 결합)

주문 시스템이 재고, 결제, 배송, 알림 시스템에 모두 직접 API를 호출해야 합니다.

주문
재고
결제
알림 (장애!)

문제점: '알림' 시스템에 장애가 발생하면 '주문' 시스템의 처리까지 지연되거나, 알림 데이터가 유실될 수 있습니다. 시스템 간의 의존성이 너무 높습니다.


After Kafka (느슨한 결합)

주문 시스템은 Kafka에 이벤트만 발행하고, 나머지 시스템들은 Kafka에서 이벤트를 구독(Subscribe)합니다.

주문
KAFKA
재고
결제
배송
알림

해결: '주문' 시스템은 Kafka에 '주문 발생' 이벤트를 한 번만 보내면 역할이 끝납니다. 다른 시스템들은 각자 필요할 때 Kafka에서 데이터를 가져갑니다. '알림' 시스템이 잠시 다운되어도 Kafka에 데이터가 남아있으므로, 복구 후 밀린 작업을 처리할 수 있습니다. 데이터 유실이 없고 시스템 간의 의존성이 사라져 안정성이 크게 향상됩니다.