Message Queue란

박세건·2024년 8월 16일
0

기술 학습

목록 보기
4/11
post-thumbnail

Message Queue란?

Message Queue는 애플리케이션 간 메시지를 비동기적으로 전달하기 위한 시스템입니다. 이를 통해 애플리케이션이 서로 독립적으로 작동하면서도 데이터와 명령을 주고받을 수 있습니다.


동기 방식과 비동기 방식의 비교

동기 방식의 음식 준비

  • 요리사에게 직접 주문을 전달하는 방식.
  • 요리사가 다른 요리를 준비 중이라면 새로운 주문을 받을 수 없습니다.

비동기 방식의 음식 준비

  • 주문 박스를 통해 비동기적으로 주문을 전달.
  • 요리사가 다른 요리를 준비 중이어도 주문 박스를 통해 새로운 주문을 받을 수 있습니다.
  • 주문 메시지는 요리사가 이해할 수 있는 주문 메시지 형식으로 전달됩니다.

메시지 경량화의 필요성

최적화를 위해 최소한의 메시지 크기로 작성 및 전달 방식을 고려해야 합니다.

문제점

  • HTTP 요청조차도 작은 메시지임에도 불구하고 상당한 텍스트 크기를 차지할 수 있습니다.

Message Optimization


폭발적인 주문량을 대처하는 방법

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는 비동기 처리의 기본이 되는 기술로, 안정성과 성능 향상을 동시에 제공합니다. 이를 통해 애플리케이션 간의 효율적인 통신을 구현할 수 있습니다.

profile
멋있는 사람 - 일단 하자

0개의 댓글