본문 바로가기
SA/Architecting

메시지 큐

by okms1017 2024. 11. 10.
728x90

✍ Posted by Immersive Builder  Seong

 

메시지 큐(Message Queue)

메시지 큐는 서비스 또는 서버 간 통신 시 메시지를 큐에 보관하여 비동기 통신을 지원하는 컴포넌트입니다. 메시지 큐 아키텍처에는 3가지 중요한 컴포넌트가 있습니다. 생산자(producer/publisher)는 메시지를 생성하여 메시지 큐에 전달하는 역할을 합니다. 메시지 큐(Message Queue)는 생산자로부터 메시지를 전달받아 소비자가 사용할 때까지 보관하는 역할을 합니다. 소비자(consumer/subscriber)는 메시지 큐에서 순차적으로 메시지를 가져와 처리하는 역할을 합니다. 메시지 큐를 이용하면 생산자와 소비자 간의 결합도를 낮추어 안정적인 서비스를 구성하기 용이합니다. 생산자 프로세스와 소비자 프로세스는 서로의 가용 상태와 관계없이 각각 독립적으로 메시지를 발행하고 수신할 수 있습니다. 

 

동작 원리

메시지 큐가 동작하는 원리는 아래와 같습니다. 

 

  1. 생산자가 메시지를 생성하여 큐에 추가합니다. 
  2. 큐는 소비자가 사용할 때까지 메시지를 안전하게 보관합니다. 
  3. 소비자가 큐에 쌓인 메시지를 순차적으로 꺼내어 처리합니다. 

 

큐의 크기가 커질수록 더 많은 소비자 프로세스를 병렬로 실행하여 처리 시간을 줄일 수 있습니다. 그러나 큐가 거의 비어 있는 상태라면 소비자 프로세스의 수를 줄여도 될 것입니다. 

 

활용 사례

메시지 큐를 제공하는 서비스로는 Apache Kafka, RabbitMQ, Amazon SQS 등이 대표적입니다. 그 중에 Apache Kafka는 대규모 메시지 데이터를 큐를 활용해서 분산 처리하는 플랫폼입니다.

 

Apache Kafka의 아키텍처와 구성 요소는 아래와 같습니다. 

 

 

  • Producer : Pub/Sub 모델의 Publisher에 해당하는 클라이언트 어플리케이션으로, Kafka Cluster에 이벤트를 게시하는 역할을 합니다. 
  • Broker : Kafka Cluster를 구성하는 인스턴스를 의미합니다. 
  • Topic : Broker 인스턴스 내의 메시지 큐에 해당하며, 주제별로 메시지를 분류하는 논리적인 단위가 됩니다. 
  • Partition : Topic을 세부적으로 나눈 단위로 독립적인 로그 파일로 저장됩니다. Partition을 통해 동일 Topic의 데이터를 여러 Broker 인스턴스에 분산 저장할 수 있습니다. 각 Partition은 하나의 리더(Leader)와 여러 개의 팔로워(Follower)로 구성됩니다. 리더는 주로 읽기/쓰기 연산을 처리하며, 팔로워는 데이터를 복제하여 장애 복구에 대비합니다. 
  • Consumer : Pub/Sub 모델의 Subscriber에 해당하는 클라이언트 어플리케이션으로, Kafka Cluster의 Topic을 구독하여 이벤트를 얻어내 처리하는 역할을 합니다. 
  • Consumer Group : 동일 Topic으로부터 메시지를 수신하는 Consumer들의 그룹입니다. 다만 Consumer 마다 참조하는 Partition이 다릅니다. 
  • Zookeeper : Topic, Partition 등 분산 메시징 처리에 관련된 정보를 보존하고 관리하기 위한 도구입니다. 

 

 

728x90

'SA > Architecting' 카테고리의 다른 글

확장성을 고려한 데이터베이스 설계 방안  (1) 2024.11.11
콘텐츠 전송 네트워크 설계  (1) 2024.11.09
캐싱 전략  (0) 2024.11.08
확장성을 고려한 시스템 설계 방안  (0) 2024.11.07