인프라/용어

publish-subscribe pattern (pub sub pattern, 발행자 구독자 패턴) 이란?

Jake Seo 2023. 4. 8. 14:29

publish-subscribe pattern 이란?

  • 메시징 패턴의 한 종류이다.
  • 각각의 컴포넌트가 서로의 identity 를 알 필요 없이 통신하게 해준다.
  • 컴포넌트간 느슨한 결합 (loose coupling) 이 가능하게 만들어 유지보수를 쉽게 만든다.
  • 주 컴포넌트는 3가지이다.

각 개념에 대한 세부 설명

메세지 브로커

  • 기본 개념은 메세지 브로커란? 링크에서 확인하면 된다.
  • pub-sub 패턴에서 중심이 되는 컴포넌트이다.
  • pub-sub 통신을 관리하는 책임이 있다.
  • 메세지 (혹은 이벤트) 를 잠시 받아두었다 전달한다.
  • 각 메세지 타입이나 토픽에 대한 구독자 (sub) 리스트를 가지고 있다.

발행자 (Publishers)

  • 메세지나 이벤트를 생성하는 컴포넌트이다.
  • 메세지 브로커로 생성한 이벤트나 메세지를 보낸다.
  • 발행자는 구독자 정보에 대해서 알 필요 없이 메세지 브로커로 이벤트나 메세지를 보낸 후 역할이 끝난다.

구독자 (Subscribers)

  • 메세지나 이벤트를 소비하는 컴포넌트이다.
  • 메세지 브로커를 통해 특정한 토픽이나 메세지 타입을 구독한다.
  • 메세지 브로커를 통해 구독한 메세지를 전달받게 된다.

커뮤니케이션 프로세스

구독 등록 (Subscriber registration)

  • 메세지 브로커를 통해 관심있는 구체적인 메세지 타입이나 토픽을 구독한다.

메세지 발행 (Publishing messages)

  • 메세지 브로커에게 이벤트나 메세지를 발행한다.
  • 이벤트나 메세지가 구체적으로 어떤 타입/토픽을 가지는지 기술한다.

메세지 전송 (Message forwarding)

  • 메세지 브로커가 메세지를 받고 구독자들 (subscribers) 에게 메세지를 보내준다.

메세지 처리 (Message processing)

  • 각 구독자는 메세지를 받고 작성된 로직대로 메세지를 처리한다.

(선택적, Optional) 구독 해제 (Unregistering)

  • 구독자가 더이상 메세지를 받고 싶지 않은 경우 구독을 해제한다.

pub-sub pattern 의 장점

  • 느슨한 결합 (Loose coupling): 발행자와 구독자는 서로에 대한 신원 확인 없이 메세지 브로커만 알면 된다.
  • 확장성 (Scalability): 더 많은 발행자와 구독자를 추가함으로써 쉽게 스케일링이 가능하다. 각 컴포넌트에 대한 세부적인 수정이 필요 없다.
  • 유연성 (Flexibility): 각각 다른 컴포넌트가 메세지를 다양한 방식으로 처리할 수 있게 해준다. 코드 재사용성 상승과 모듈화를 돕는다.

요약

  • pub-sub 패턴은 컴포넌트간 서로의 신원 확인 없이 커뮤니케이션을 가능하게 하는 메세징 패턴이다.
  • 느슨한 결합, 확장성, 유연성 등의 장점이 있다.
반응형