인프라/용어
publish-subscribe pattern (pub sub pattern, 발행자 구독자 패턴) 이란?
Jake Seo
2023. 4. 8. 14:29
publish-subscribe pattern 이란?
- 메시징 패턴의 한 종류이다.
- 각각의 컴포넌트가 서로의 identity 를 알 필요 없이 통신하게 해준다.
- 컴포넌트간 느슨한 결합 (loose coupling) 이 가능하게 만들어 유지보수를 쉽게 만든다.
- 주 컴포넌트는 3가지이다.
- 발행자 (publishers)
- 구독자 (subscribers)
- 메세지 브로커 (message broker)
각 개념에 대한 세부 설명
메세지 브로커
- 기본 개념은 메세지 브로커란? 링크에서 확인하면 된다.
- 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 패턴은 컴포넌트간 서로의 신원 확인 없이 커뮤니케이션을 가능하게 하는 메세징 패턴이다.
- 느슨한 결합, 확장성, 유연성 등의 장점이 있다.
반응형