이것저것 개발기록

"서버의 병목을 해결하는 해결사" 메시지 큐(Message Queue) 이해하기 본문

IT 이야기

"서버의 병목을 해결하는 해결사" 메시지 큐(Message Queue) 이해하기

Garam Kim 2026. 1. 6. 12:00

"사용자가 몰리면 메일 발송 서버가 죽어버려요."
요청이 너무 많아 서버가 감당하기 힘들 때, 중간에서 완충 작용을 해주는 메시지 큐(MQ)의 도입은 필수적입니다.

1. 메시지 큐(Message Queue)란?

메시지 큐는 프로세스 간의 통신에서 데이터를 임시로 보관하는 보관소입니다. 메시지를 보내는 Producer와 메시지를 가져가 처리하는 Consumer 사이에서 징검다리 역할을 하며, 두 시스템이 비동기적으로 작동할 수 있게 돕습니다.

2. 왜 메시지 큐를 써야 할까?

  • 비동기 처리(Asynchronous): 사용자는 메일이 발송될 때까지 기다릴 필요가 없습니다. 서버는 큐에 "메일 보내줘"라는 메시지만 던지고 바로 응답을 줄 수 있습니다.
  • 애플리케이션 결합도 감소(Decoupling): 송신자와 수신자가 직접 연결되지 않아 한쪽 시스템에 장애가 나도 전체 서비스가 멈추지 않습니다.
  • 부하 분산(Load Balancing): 요청이 폭주해도 큐에 쌓아두었다가 Consumer가 처리할 수 있는 속도로 하나씩 처리할 수 있습니다.

💡 실무 노트

실무에서는 RabbitMQApache Kafka를 주로 사용합니다. 단순한 비동기 처리가 목적이라면 RabbitMQ가 직관적이고 설정이 쉽지만, 대규모 로그 데이터나 실시간 스트리밍 처리가 필요하다면 높은 처리량을 자랑하는 Kafka가 유리합니다.

팁: 메시지 큐를 도입할 때 가장 고민해야 할 지점은 '메시지 누락''중복 처리'입니다. 네트워크 문제로 메시지가 유실되거나, 반대로 두 번 처리되어 중복 결제 같은 사고가 나지 않도록 Ack(Acknowledgement) 설정과 멱등성(Idempotency) 있는 설계를 반드시 챙겨야 합니다.

"복잡한 시스템일수록 메시지 큐는 시스템의 안전을 보장하는 보험과 같습니다."