데브허브 | DEVHUB | System Design: Why is Kafka Popular?System Design: Why is Kafka Popular?
- Kafka는 분산 로그 디자인을 통해 서비스 디커플링, 트래픽 스파이크 흡수, 이벤트 리플레이를 가능하게 하는 고성능 메시지 브로커입니다. 🔗
- 과거 이벤트를 다시 재생하여 디버깅, 복구 및 감사 추적(이벤트 소싱)에 활용할 수 있는 독특한 기능을 제공합니다. ⏪
- 메시지는 브로커의 파티션(추가 전용 로그 파일)에 기록되며, 파티션은 토픽으로 구성되어 메시지를 분류합니다. 🪵
- 올바른 파티셔닝 전략(예: 복합 키 사용)은 핫 파티션을 방지하고 시스템 확장에 필수적입니다. 🔑
- 현대 하드웨어에서 단일 브로커는 초당 수십만 개의 메시지를 처리할 수 있으며, 주로 네트워크 대역폭이 병목 현상이 됩니다. 🚀
- 컨슈머는 오프셋을 사용하여 처리 진행 상황을 추적하고, 컨슈머 그룹은 여러 컨슈머가 협력하여 메시지를 정확히 한 번 처리하도록 보장하며 장애 시 재조정을 통해 복구합니다. 📚
- '최대 한 번', '최소 한 번', '정확히 한 번'의 세 가지 전달 보장 중 선택할 수 있습니다. 🛡️
- 각 파티션은 리더와 여러 팔로워로 복제되어 리더 장애 시 팔로워가 인계받아 데이터 손실 없이 시스템을 유지합니다. 🔄
- Uber의 실시간 위치 업데이트 처리나 시스템의 모든 상태 변경을 이벤트로 기록하는 이벤트 소싱과 같은 강력한 패턴을 가능하게 합니다. 🗺️
- 처리량에 최적화되어 낮은 지연 시간에는 부적합하며, 토픽 전체가 아닌 단일 파티션 내에서만 순서를 보장하고, 운영 복잡성을 증가시킵니다. ⚖️