Message Queue란?
Message Queue는 애플리케이션 간 메시지를 비동기적으로 전달하기 위한 시스템입니다. 이를 통해 애플리케이션이 서로 독립적으로 작동하면서도 데이터와 명령을 주고받을 수 있습니다.
동기 방식과 비동기 방식의 비교
동기 방식의 음식 준비
- 요리사에게 직접 주문을 전달하는 방식.
- 요리사가 다른 요리를 준비 중이라면 새로운 주문을 받을 수 없습니다.
비동기 방식의 음식 준비
- 주문 박스를 통해 비동기적으로 주문을 전달.
- 요리사가 다른 요리를 준비 중이어도 주문 박스를 통해 새로운 주문을 받을 수 있습니다.
- 주문 메시지는 요리사가 이해할 수 있는 주문 메시지 형식으로 전달됩니다.
메시지 경량화의 필요성
최적화를 위해 최소한의 메시지 크기로 작성 및 전달 방식을 고려해야 합니다.
문제점
- HTTP 요청조차도 작은 메시지임에도 불구하고 상당한 텍스트 크기를 차지할 수 있습니다.

폭발적인 주문량을 대처하는 방법
1. 스케일 아웃 (Scale-Out)
2. 스케일 업 (Scale-Up)
- 여러 요리를 동시에 준비할 수 있는 숙련된 요리사를 고용.
상태 기반 메시지 전달
- 요리사가 조리를 하고 있지 않은 경우에만 메시지를 전달.
새로운 요리 장르 추가 시의 메시지 처리
- 메시지의 종류에 따라 해당 요리를 담당할 수 있는 요리사에게만 메시지를 전달.
예시: 무인 주차 정산 시스템
동기 방식의 요금 책정
- 자동차 한 대의 요금 계산에 10초가 걸린다면, 수많은 차량이 대기하게 됨.
비동기 방식의 요금 책정
- 차량 정보를 큐에 전달하고, 요청을 나중에 처리하여 대기 시간을 줄임.
WAS 내부 비동기 처리의 한계
- Web Server나 WAS에서 비동기 처리를 구현할 수도 있지만, 이는 성능과 안정성에 제약이 따릅니다.
- 메시지 큐를 사용하면 이러한 문제를 해결하고, 더 높은 성능과 안정성을 제공합니다.
비동기 방식의 메시지 처리로 얻는 이점
MSA(Message Service Architecture)에서의 활용
- 마이크로서비스 간 비동기 호출에도 메시지 큐가 활용됩니다.
- 실제로 이를 통해 성능을 5배까지 향상한 사례도 존재합니다.
RabbitMQ와 Kafka 비교
RabbitMQ
- AMQP(Advanced Message Queuing Protocol) 기반.
- 메시지 전달의 신뢰성과 순서 보장이 강점.
- 일반적인 메시지 브로커로 사용.
Apache Kafka
- 분산 이벤트 스트리밍 플랫폼.
- 대규모 데이터 처리에 적합하며, 높은 처리량과 내구성 제공.
- 실시간 데이터 스트리밍과 분석에 적합.
Message Queue는 비동기 처리의 기본이 되는 기술로, 안정성과 성능 향상을 동시에 제공합니다. 이를 통해 애플리케이션 간의 효율적인 통신을 구현할 수 있습니다.