Kafka 도입 검토 사례
기술 의사결정 과정을 문서화한 실전 사례입니다.
배경
문제 상황
- API 간 동기 호출로 인한 병목
- 주문 완료까지 500ms 소요
- 서비스 장애 전파
해결 방안 모색
- 방안 1: 기존 RPC 개선
- 방안 2: RabbitMQ 도입
- 방안 3: Kafka 도입
검토 과정
1. 요구사항 정의
## 비기능 요구사항
- 처리량: 1000 TPS
- 레이턴시: 100ms 이하
- 순서 보장: 필요
- 정확성: Exactly-Once
2. 기술 비교
| 항목 | RabbitMQ | Kafka |
|---|---|---|
| 처리량 | 10K TPS | 100K+ TPS |
| 순서 보장 | 큐 내 | 파티션 내 |
| 확장성 | 중간 | 높음 |
| 운영 복잡도 | 낮음 | 높음 |
3. PoC 결과
## Kafka PoC
### 성능
- 800 TPS 달성
- 평균 레이턴시: 80ms
### 순서 보장
- 키 기반 파티셔닝으로 해결
### 운영
- UI 도구로 모니터링 가능
결정
선택: Kafka
사유
- 높은 처리량 요구
- 미래 확장성 고려
- 생태계 성숙도
위험 완화
- 팀 교육
- 전담 인원 배정
- 모니터링 강화
결과
도입 후
- 주문 처리: 500 TPS → 1000 TPS
- 응답 시간: 500ms → 150ms
- 서비스 결합도 감소
문서
---
title: "Kafka 도입 의사결정"
date: 2024-12-01
---
| → [[27-case-virtual-threads | Virtual Threads 학습]] |