본문 바로가기
DevOps/Apache Kafka

Messaging System 개념 정리

by SeleniumBindingProtein 2022. 4. 5.
728x90
반응형

Messaging System : 로그 데이터, 이벤트 메시지 등 API로 호출할 때 보내는 데이터들을 처리하는 시스템

  • 메시징 시스템의 종류에는 Kafka, RabbitMQ, Active MQ, AWS SQS, JAVA JMS 등이 있음
  • MSA에서는 시스템간의 호출이 많기 때문에 결합도를 낮추기 위해서 메시징 시스템을 사용
  • 어플리케이션 간에 메시지를 교환하기 위해 사용되는 시스템
  • Point to Point 방식, Pub/Sub 방식
    • Point to Point 방식 : 보내는 사람이 큐를 통해서 메시지를 전달하면 받는 사람이 큐에서 하나씩 꺼내 읽는 방식
    • Pub/Sub 방식 : Publisher(게시자)가 topic에 메시지를 보내면, 해당 topic을 구독해놓은 Subscriber(구독자) 모두에게 메시지가 전송되는 방식
  • MOM (Message Oriented Middleware, 메시지 지향 미들웨어)
    • 독립된 애플리케이션 간에 데이터를 주고 받을 수 있도록 하는 시스템 디자인.
    • 비동기로 메시지를 전달 하는 것이 특징.
    • Queue, Broadcast, Multicast 등의 방식으로 메시지 전달.
    • Pub/Sub 구조
  • Message Broker
    • 메시지 처리 또는 메시지 수신자에게 메시지를 전달하는 시스템이며, 일반적으로 MOM을 기반으로 구축
    • MOM의 한 종류
  • MQ (Message Queue, 메시지 큐)
    • Message Broker와 MOM을 구현한 소프트웨어( RabbitMQ, ActiveMQ, kafka 등..)
    • MOM은 메시지 전송 보장을 해야하므로 AMQP를 구현함
  • AMQP ( Advanced Message Queueing Protocol )
    • 메시지를 안정적으로 주고받기 위한 인터넷 프로토콜

예시)

자동 메일을 발송 시스템이 있다고 가정하면,

  • 회원가입을 했을 때, 이메일을 발송하는 MemberService
  • 주문완료가 되었을 때, 이메일을 발송하는 OrderService
  • 메일을 실제 발송하는 MailService

서비스가 분리되었을 때 프로세스는 다음과 같음

  1. MemberService에서 회원가입, OrderService에서 주문완료 이벤트가 발생
  2. Messaging Client로 메일 전송에 필요한 데이터( 받는/보내는 사람 이메일 주소, 메시지 제목/내용 등.. )를 API 호출
  3. Messaging Client에서 MOM을 구현한 소프트웨어(ex. kafka)로 메시지를 생산
  4. MailService에서 메시지가 존재하는지 구독하고 있다가 메시지가 존재하면 메시지를 소비
  5. MailService에서 API 정보들을 통해 User에게 메일 발송

이러한 구조를 Publish/Subscribe 또는 Producer/Consumer라고 함

  • 장점
    • 서비스간의 결합성이 낮아지므로 각자의 비즈니스 로직에만 집중
    • 메시지 처리 방식은 Message Broker에 위임
      • 각 서비스는 Client를 통해 메시지를 보내고 받기만 하면 됨
    • 각 서비스는 비동기 방식으로 메시지를 보내기만 하면, Message Broker에서 순서 보장, 메시지 전송 보장등을 처리
    • 메시징 시스템이 잠깐 다운되어도 각 서비스에는 직접적인 영향을 미치지 않음
  • 단점
    • Message Broker 구축(Kafka 클러스터 구축에 필요한 금전, 인적자원에 대한 비용)
    • 비동기의 양면성 - 정말 메세지가 잘 전달되었는지?
    • 함수 호출, 공유 메모리 사용 방식보다 메시징 시스템을 사용했을 때, 호출 구간이 늘어나므로 네트워크 비용 발생

 

 

 

 

 

 

 

 

<참고자료>

https://goneoneill.tistory.com/48

https://victorydntmd.tistory.com/343

728x90
반응형

'DevOps > Apache Kafka' 카테고리의 다른 글

kafka UI - CMAK 설치 및 실행  (0) 2023.01.17
kafka config 옵션 정리  (2) 2023.01.08
Apache Kafka 개념 정리  (0) 2022.04.05

댓글