[F-Lab 멘토링 학습]

이벤트 브로커와 메세지 브로커와 관련해서 메세지와 이벤트 특징과 장단점과 목적

everydeveloper 2023. 9. 19. 20:38

이벤트 브로커와 메세지 브로커와 관련해서 메세지와 이벤트 특징과 장단점과 목적

이벤트 브로커와 메시지 브로커의 주요 차이점은 처리하는 데이터 유형과 그 데이터의 의도에 있습니다. 이들 각각은 "이벤트"와 "메시지"라는 용어와 관련되어 있습니다.

메시지 (Message):

  1. 정의: 메시지는 일반적으로 애플리케이션 간에 전송되는 데이터 또는 정보의 패킷입니다.
  2. 특징:
    • 대부분의 경우 명확한 대상 (receiver)이 있습니다.
    • 요청과 응답 패턴을 자주 사용합니다.
  3. 목적: 서로 다른 시스템 간에 데이터를 안전하게 전송하는 것입니다.
  4. 장점:
    • 안정성: 메시지 전송이 보증됩니다.
    • 복잡한 시스템 간 통신의 단순화.
  5. 단점:
    • 높은 볼륨의 데이터에는 최적화되지 않았을 수 있습니다.
    • 타이트 커플링의 위험이 있을 수 있습니다.

이벤트 (Event):

  1. 정의: 이벤트는 시스템에서 특정 사건이 발생했음을 나타내는 신호나 알림입니다.
  2. 특징:
    • 대부분의 경우 특정 수신자에게 보내지는 것이 아니라, 관심이 있는 수신자에게 전파됩니다.
    • 이벤트는 시스템의 상태 변경을 나타냅니다.
  3. 목적: 다른 시스템에 어떤 사건이 발생했음을 알리는 것입니다.
  4. 장점:
    • 유연성: 이벤트를 생성하는 시스템과 이벤트를 수신하는 시스템 간의 느슨한 연결.
    • 확장성: 새로운 수신자를 쉽게 추가할 수 있습니다.
  5. 단점:
    • 복잡한 의존성 관리가 필요할 수 있습니다.
    • 이벤트 오버헤드: 높은 볼륨의 이벤트 처리가 필요할 수 있습니다.

메시지 브로커 vs 이벤트 브로커:

  • 메시지 브로커: 주로 메시지를 안전하게 전송하는 데 중점을 둡니다. 예로 RabbitMQ나 ActiveMQ가 있습니다.
  • 이벤트 브로커: 이벤트의 전파와 스트리밍 처리에 중점을 둡니다. 예로 Apache Kafka나 Event Grid가 있습니다.

이들의 선택은 사용 사례와 요구 사항에 따라 다를 수 있습니다. 특정 애플리케이션에서 안정적인 메시지 전송이 필요한 경우 메시지 브로커를 선택할 수 있습니다. 반면에 이벤트 기반 아키텍처나 데이터 스트리밍이 중요한 경우 이벤트 브로커를 사용할 수 있습니다.

메세지 위주 vs 이벤트 위주

메시지 기반 시스템과 이벤트 기반 시스템 사이에서 선택할 때 고려해야 할 몇 가지 주요 요인과 특징에 대해 설명하겠습니다. 이를 바탕으로 두 방식 간의 주요 차이점을 이해하고, 당신의 특정 요구 사항과 상황에 어떤 접근 방식이 더 적합한지 판단할 수 있습니다.

메시지 기반 시스템:

1. 특징:

  • 메시지는 보통 명령 또는 요청을 나타냅니다.
  • 일반적으로 요청자는 응답을 기대하며, 이에 따라 동기 또는 비동기식으로 통신할 수 있습니다.

2. 장점:

  • 특정 작업의 완료에 대한 확실성이 요구될 때 유용합니다.
  • 메시지 소비자가 처리할 작업을 명확하게 지정할 수 있습니다.

3. 단점:

  • 타이트한 결합: 메시지 생산자와 소비자 간의 강한 종속성이 발생할 수 있습니다.
  • 확장성과 유연성이 제한적일 수 있습니다.

이벤트 기반 시스템:

1. 특징:

  • 이벤트는 특정 상태 변경을 나타냅니다.
  • 이벤트 생산자는 누가 이 이벤트를 수신하거나 반응할지 알지 못합니다.

2. 장점:

  • 느슨한 결합: 시스템 간의 의존성이 줄어들며, 독립적으로 확장 및 개발이 가능합니다.
  • 확장성: 새로운 컴포넌트나 서비스를 쉽게 추가하거나 제거할 수 있습니다.
  • 유연성: 동일한 이벤트에 대해 다양한 반응이나 행동을 쉽게 구현할 수 있습니다.

3. 단점:

  • 이벤트 중복 또는 손실에 대한 처리가 필요할 수 있습니다.
  • 이벤트 순서를 보장하기 위한 추가 로직이 필요할 수 있습니다.

결론:

두 방식 간의 선택은 특정 요구 사항, 문제 영역, 기존 시스템의 복잡성 및 향후 확장 계획에 따라 달라집니다.

  • 타이트한 결합이 문제가 되지 않고, 명확한 요청 및 응답 패턴이 필요한 경우 메시지 기반 시스템을 고려할 수 있습니다.
  • 반면, 시스템의 느슨한 결합, 유연성, 확장성이 중요한 경우 이벤트 기반 아키텍처를 선택하는 것이 좋습니다.

언제나 그렇듯, 정답은 없습니다. 여러 가지 요인을 고려하여 당신의 상황에 가장 적합한 선택을 하는 것이 중요합니다.