본문 바로가기
기타 학습

이벤트 기반 아키텍처 개념 정리 (EDA / MOM / Message Queue / Event Streaming)

by 비전공자 기록광 2024. 3. 18.
반응형

회사에서 특정 API를 서버리스로 전환할지에 대해 여러 이야기가 오가면서 이벤트 기반 아키텍처가 언급됐다. 일단 결정난 부분은 없고 어떤 기술을 도입하면 좋을지 정리를 좀 해보라고 하셨다.

나는 사실 EDA에 대해, Message Queue에 대해 아주 기본적인 정의만 알아 일단 각각의 개념 정리가 시급했다.


📍 이벤트 기반 아키텍처 EDA (Event Driven Architecture)

: 이벤트를 중심으로 시스템을 구성해 결합도를 낮춘 아키텍처

 

🔗 느슨한 결합 (Loose Coupling)

MSA(Microservices Architecture)환경의 핵심은 바로 느슨한 결합이다. 

각각의 마이크로서비스는 독립적으로 배포, 운영된다. 그들은 서로에 대한 의존과 영향을 줄이고 서비스 목적에 집중하며 오히려 응집력 있는 시스템을 구축한다는게 MSA의 키포인트이다.

 

EDA는 이 MSA  시스템에서 느슨한 결합을 도와주는 아키텍처 패턴 중 하나이다.

이벤트 중심의 통신을 통해 각각의 마이크로서비스가 서로의 상태 변화를 감지하고 반응하고 상호작용할 수 있게 한다.

 

 

EDA를 사용하게 되면 얻는 이점

  • 관심사 분리 : 이벤트에 따라 로직 처리 → 역할, 책임 분리
    • 유지보수성
    • 확장성
  • 의존성 역전 : 이벤트 발행-구독 사이의 중개자 역할을 하는 브로커를 통해 간접적으로 통신
  • 확장성
  • 비동기식 메시징

 

EDA 메시징 모델

EDA에서 이벤트를 전송하는데 기본적으로 2가지 모델이 있다.

둘다 기본적으로 발행-구독 형태의 전송 모델을 가지고 있지만 전송되는 이벤트에 차이가 있다.

 

이벤트 메시징 Event Messaging

: 단일 사건 이벤트 전달

→ 메시지 브로커

 

이벤트 스트리밍 Event Streaming

:  실시간, 대규모, 연속적인 이벤트 스트림 전달

→ 이벤트 브로커

 

이벤트 메시징은 일반적으로 메시지 브로커 형식을 말하는데 메시지 브로거를 이해하기 위해서는 MOM의 개념을 알아야 한다.

 

 

📍 메시지 지향 미들웨어 MOM (Message Oriented Middleware)

: 애플리케이션 간의 비동기적 통신을 위해 메시지를 중간에서 관리해주는 시스템

 

AMQP (Advanced Message Queue Protocol)

: MOM을 위한 표준 응용 계층 프로토콜 ⇒ MOM 시스템의 효율적인 동작 지원

 

주요기능

  • 메시지 전송
  • 라우팅
  • 큐 관리

 

메시지 전송 방식

  • 큐 Queue : FIFO 방식으로 메시지 처리
  • 브로드캐스트 Broadcast : 메시지를 여러 수신자에게 동시에 전송
  • 멀티 캐스트 Multicast : 특정 그룹 수신자들에게만 메시지 전송
    • Topic

 

메시지 큐 Message Queue (MQ)

: 큐 구조를 가진 메시지 전송 시스템 ⇒ 통신의 통로 역할

 

기본 구조

  • 메시지 송신자 : 메시지 보내는 쪽
  • 메시지 수신자 : 메시지 받는 쪽
  • 중간 매개자 

 

메시지 브로커 Message Broker & 이벤트 브로커 Event Broker

: 메시지 큐에 메시지 & 이벤트를 전달해주고 중개해주는 역할

 

메시지 브로커

: 메시지 큐, 토픽 사용해 메시지 관리, 중개

→ 일반적으로 Producer-Consumer 구조

 

🔧 도구 

  • RabbitMQ
  • ActiveMQ
  • AWS SQS
  • Redis

 

이벤트 브로커

: 토픽, 이벤트 스트림 등 사용해 이벤트 관리, 중개

→ 일반적으로 Publisher-Subscriber 구조

 

🔧 도구 

  • Apache Kafka
  • AWS Kinesis

 

이렇게 개념을 좀 정리해봤는데 과연 어떤 기술을 사용하게 될진 모른다.

그래도 덕분에 진짜 미뤄뒀던 카프카를 이어 공부해보려고 함. 일단 RabbitMQ부터 가보자고~ 

 

 


참고

 

이벤트 기반 아키텍처 | IBM

이벤트 기반 아키텍처는 애플리케이션이나 서비스 이벤트를 발행, 캡처, 처리, 저장하는 활동을 중심으로 하는 통합 모델입니다.

www.ibm.com

 

회원시스템 이벤트기반 아키텍처 구축하기 | 우아한형제들 기술블로그

{{item.name}} 최초의 배달의민족은 하나의 프로젝트로 만들어졌습니다. 배달의민족의 주문수는 J 커브를 그리는 빠른 속도로 성장했고, 주문수가 커지면서 자연스럽게 트래픽 또한 매우 커졌습니

techblog.woowahan.com

 

[서버] 메세지 큐(Message Queue) 을 알아보자

안녕하세요 오늘은 메세지 큐(Message Queue) 에 대해 전반적인 이해와 대표적인 종류을 알아보겠습니다.메세지 큐 를 본격적으로 알아보기 전에 메세지 지향 미들웨어(MOM) 에 대해 알아보겠습니다.

velog.io

반응형

댓글