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
서비스가 분리되었을 때 프로세스는 다음과 같음
- MemberService에서 회원가입, OrderService에서 주문완료 이벤트가 발생
- Messaging Client로 메일 전송에 필요한 데이터( 받는/보내는 사람 이메일 주소, 메시지 제목/내용 등.. )를 API 호출
- Messaging Client에서 MOM을 구현한 소프트웨어(ex. kafka)로 메시지를 생산
- MailService에서 메시지가 존재하는지 구독하고 있다가 메시지가 존재하면 메시지를 소비
- MailService에서 API 정보들을 통해 User에게 메일 발송
이러한 구조를 Publish/Subscribe 또는 Producer/Consumer라고 함
- 장점
- 서비스간의 결합성이 낮아지므로 각자의 비즈니스 로직에만 집중
- 메시지 처리 방식은 Message Broker에 위임
- 각 서비스는 Client를 통해 메시지를 보내고 받기만 하면 됨
- 각 서비스는 비동기 방식으로 메시지를 보내기만 하면, Message Broker에서 순서 보장, 메시지 전송 보장등을 처리
- 메시징 시스템이 잠깐 다운되어도 각 서비스에는 직접적인 영향을 미치지 않음
- 단점
- Message Broker 구축(Kafka 클러스터 구축에 필요한 금전, 인적자원에 대한 비용)
- 비동기의 양면성 - 정말 메세지가 잘 전달되었는지?
- 함수 호출, 공유 메모리 사용 방식보다 메시징 시스템을 사용했을 때, 호출 구간이 늘어나므로 네트워크 비용 발생
<참고자료>
728x90
반응형
'DevOps > Apache Kafka' 카테고리의 다른 글
kafka UI - CMAK 설치 및 실행 (0) | 2023.01.17 |
---|---|
kafka config 옵션 정리 (2) | 2023.01.08 |
Apache Kafka 개념 정리 (0) | 2022.04.05 |
댓글