Operation/System Architecture

메시징 시스템(Messaging System) 정리!

JaeHoney 2022. 4. 18. 08:07

MSA

요즘 MSA가 대두되면서 Kafka, RabbitMQ, ActiveMQ 등 메시징 시스템도 함께 떠오른다.

 

MSA에서는 시스템 간 호출이 많기 때문에 서비스간 결합도를 낮추기 위해서 + 비동기 요청, 성능, 안정성 등 여러가지 이점이 있어서 메시징 시스템을 많이 사용하게 된다.

 

이 글에서는 MSA에서의 전반적인 메시징 시스템에 대해 다룬다.

 

용어

  • MOM (Message Oriented Middleware, 메시지 지향 미들웨어)
    • 독립된 애플리케이션 간 데이터를 주고받을 수 있는 설계
      • 함수 호출, 메모리 공유가 아닌 메시지 교환을 이용하는 중간 계층 Infra Architecture
      • 분산 컴퓨팅이 가능해지며, 서비스간의 결합도가 낮아진다.
    • 비동기로 메시지를 전달한다.
    • Queue, Broadcast, Multicast 등의 방식으로 메시지를 전달한다.
    • Pub/Sub 구조
      • 메시지를 발행하는 Publisher(Producer), 메시지를 구독하고 받아서 처리하는 Subscribe(Consumer)로 구성된다.

  • Message Broker
    • 메시지 처리 또는 수신자에게 메시지를 전달하는 시스템이며, 일반적으로 MOM을 기반으로 구축된다.
  •  MQ (Message Queue, 메시지 큐)
    • Message Broker와 MOM을 구현한 소프트웨어 (Kafka, RabbitMQ, ActiveMQ, ...)
    •  MOM은 메시지 전송을 보장해야 하므로 AMQP를 구현한다.
  • AMQP
    • 메시지를 안정적으로 주고받기 위한 프로토콜

소프트웨어 RabbitMQ, Kafka 등은 'AMQP를 구현한 MOM 시스템'이라고 생각하면 된다.

물론 설계나 처리방식에 따라 장단점이 존재한다.

 

Messaging system

아래는 메시징 시스템을 잘 표현한 그림이다.

 

MSA에서 각 서비스를 Microservice단위로 분리한다.

 

그리고, 요청을 중앙에서 Messaging system(ex. kafka)가 메시지 형태로 받습니다. 예를 들면, "Member:Regist:01" 형태의 메시지를 받는 것이다.

 

MemberService에서는 Kafka를 구독(Subscribe)하고 있다가, "Member"로 시작하는 메시지가 있으면 가지고 온다.

 

그 후, "Regist"라는 단어를 보고 '회원가입 요청이구나'를 알고 처리를 하게 되는 것이다.

 

이런 구조를 Publish/Subscribe 또는 Producer/Consumer 라고 한다.

 

장단점

  • 장점
    • 서비스간의 결합도가 낮아지므로 비즈니스 로직에만 집중할 수 있다.
    • 메시지 처리 방식은 Message Broker가 담당하고 각 서비스는 메시지만 보내면 된다.
    • 각 서비스가 비동기 방식으로 메시지를 보내기만 하면, Message Broker에서 순서 보장(Queue)과 메시지 전송을 보장한다.
  • 단점
    • Message broker 운영을 위한 자원 더 소모된다.
    • 시스템이 복잡하여 관리가 어렵다.
    • 호출 구간이 늘어나므로 신뢰성이 떨어지고 네트워크 비용이 추가로 발생한다.

 

추가적으로 RPC(Remote Prodcedure call)를 사용해서 원격으로 함수를 호출하는 방법과 Messaging 시스템을 비교하는 좋은 글이 있는데 참고하면 좋을 것 같다.

https://particular.net/blog/rpc-vs-messaging-which-is-faster

 

RPC vs. Messaging – which is faster?

Sometimes developers only care about speed. Ignoring all the other advantages messaging has, they’ll ask us the following question: “But isn’t RPC faster than messaging?” In place of RPC, 1 they may…

particular.net

 


 

 

Reference1: https://www.techartifact.com/blogs/tag/distributed-messaging-system

Reference2: https://victorydntmd.tistory.com/343