Frontend

발행 - 구독 패턴(Publisher - Subscriber)

단점이없어지고싶은개발자 2022. 6. 23. 00:51
반응형

Observer패턴은 Observer, Subject가 서로를 인지하지만, Pub - Sub패턴의 경우 서로를 전혀 몰라도 상관없다.

즉, Observer패턴의 경우 Subject에 Observer을 등록하고 Subject가 직접 Observer에 직접 알려주어야 한다.

 

Pub - Sub 패턴의 경우 Publisher가 Subscriber의 위치나 존재를 알 필요없이 Message Queue와 같은 Broker역할을 하는 중간지점에 메시지를 던져 놓기만 하면된다.

 

반대로 보면, Subscriber역시 Publisher의 위치나 존재를 알 필요없이 Broker에 할당된 작업만 모니터링하다 할당 받아 작업하면 되기 때문에 Publisher와 Subscriber가 서로 알 필요가 없다.

 

Observer패턴에 비해 Pub-Sub패턴이 더 결합도가 낮다.

서로 존재를 알 필요가 없기 때문에 당연히 소스코드 역시 겹치거나 의존할 일이 없다.

 

Observer패턴은 대부분 동기방식으로 동작하나, Pub-Sub패턴은 대부분 비동기 방식으로 동작한다 publisher가 연산해야 할 일(task)을 발행(publish)하면 그 task의 범주를 구독(subscribe)한 수신자가 받아 대신 일을 처리한다. 그 시간동안 publisher는 다른 작업을 수행할 수 있다.

 

옵저버 패턴은 단일 도메인(=하나의 앱)에서 동작해야 하며 pub/sub 발행 구독은 크로스 도메인(=다른앱) 상황에서도 동작이 가능하다.

크로스도메인이란, 네이버나 카카오 같은 서로 다른 도메인을 의미.

 

https://gobae.tistory.com/122

 

발행-구독 패턴(Publisher-Subscriber Pattern)이란?

이전 글 옵저버 패턴(Observer Pattern)이란? 옵저버 패턴 옵저버 패턴은, 옵저버들의 목록을 객체(관찰하려는 대상)에 등록하여 객체가 상태 변화가 있을 때 마다 메서드 등을 통해 객체가 직접 목록

gobae.tistory.com

 

반응형