메시지 큐, 용량을 미리 계산해야 장애를 막는다
메시지 큐를 도입할 때 가장 흔히 하는 실수는 평소 트래픽만 보고 용량을 산정하는 것입니다. 실제 운영에서는 이벤트성 트래픽 급증, 컨슈머 장애, 배포 중 처리 중단 같은 상황이 반복적으로 발생하고, 이때마다 메시지가 큐 안에 계속 쌓입니다. 필요한 저장 용량은 피크 시 초당 메시지 수와 평균 메시지 크기, 그리고 얼마나 오래 메시지를 보관해야 하는지(retention)를 곱해서 계산할 수 있습니다. 보관 기간이 길거나 피크 처리량이 클수록 필요한 디스크 용량은 기하급수적으로 늘어납니다.
컨슈머 수를 정하는 기준도 중요합니다. 컨슈머 1개가 처리할 수 있는 초당 메시지 수로 피크 유입량을 나누면 최소 필요 컨슈머 수가 나오는데, 이 값보다 파티션(또는 샤드) 수가 적으면 컨슈머를 늘려도 병렬 처리 효과를 볼 수 없습니다. 따라서 파티션 수는 최소 필요 컨슈머 수보다 여유 있게, 보통 20% 이상 더 크게 설계하는 것이 안전합니다.
이 계산기는 이런 기준들을 바탕으로 필요한 저장 용량과 최소 컨슈머 수, 권장 파티션 수를 한 번에 보여줍니다. 다만 실제 설계 시에는 메시지 압축률, 복제(replication) 배수, 브로커의 오버헤드도 함께 고려해야 더 정확한 용량 산정이 가능합니다.
자주 묻는 질문
컨슈머 장애나 처리 지연이 발생하면 메시지가 큐에 쌓이므로, 피크 트래픽과 장애 상황을 고려해 여유 용량을 확보해야 합니다.
파티션 수는 최소 필요 컨슈머 수 이상으로 설정해야 병렬 처리가 가능하며, 향후 트래픽 증가를 고려해 여유를 두는 것이 좋습니다.
컨슈머 처리 속도가 유입 속도를 따라가지 못하면 큐에 메시지가 계속 쌓여 지연이 커지고 저장 용량도 초과될 수 있습니다.