
백엔드
최적의 메시지 브로커를 찾아서
두줄요약
프리즘의 메시지 브로커를 SQS, Kafka, RabbitMQ 순으로 바꾼 이유를 정리했습니다. 요구 사항에 맞는 전달 보장과 스케일링, 분배 특성이 선택의 핵심이었습니다.
핵심 내용
- 프리즘의 마이크로서비스 간 비동기 통신을 위해 메시지 브로커를 SQS, Kafka, RabbitMQ 순으로 검토한 변천사
- 핵심 요구 사항은 최소 한 번 전달, 컨슈머 스케일링 유연성, 처리 시간 편차가 큰 메시지의 효율적 분배
- SQS는 visibility timeout 관리가 복잡했고, Kafka는 리밸런싱 지연과 파티션 편중 문제가 있었음
- RabbitMQ는 ack 기반 전달, 연결 감지, 큐 단위 컨슈머 증감의 용이성, exchange·우선순위 큐 기능으로 요구 사항에 가장 잘 맞았음
적용해볼 점
- 메시지 처리 시간 편차와 운영 환경을 기준으로 브로커를 선택할 필요
- 단순 성능보다 전달 보장, 스케일링, 분배 방식 같은 운영 특성을 함께 검토할 필요
