포스트

발행-구독 모델

발행-구독 모델

사가대학 〈네트워크시스템〉 과목 성적 평가 리포트 제출물

ネットワークの通信モデルである「クライアントサーバモデル」と 「P2Pモデル」について利点・欠点などともに A4 1~2 ページ程度でまとめなさい。
네트워크 통신 모델인 ‘클라이언트 서버 모델’과 ‘P2P 모델’에 대하여 장단점 등을 포함해 A4 용지 1~2매 정도로 정리하시오.

上記のモデル以外も1つ以上取り上げそれについても調べなさい。
위의 모델 이외의 모델도 1개 이상 선택하여 함께 조사하시오.

도입

발행-구독 모델은 메시지를 보내는 ‘발행자(Publisher)’와 받는 ‘구독자(Subscriber)’가 직접 연결되지 않고, ‘브로커’라는 중개자를 통해 특정 주제(토픽)에 따라 메시지를 비동기적으로 주고받는 패턴이다. 1 2

이 모델의 가장 큰 특징은 정보를 생성하여 보내는 발행자와 그 정보를 수신하여 소비하는 구독자가 서로의 존재를 직접적으로 알 필요가 없다는 점에 있다.

브로커

전통적인 클라이언트-서버 모델에서는 송신자가 수신자의 주소를 정확히 알고 직접 요청을 보내야 하지만, 발행-구독 모델에서는 중개자 역할을 수행하는 브로커 또는 이벤트 버스가 그 사이를 연결한다.

이러한 구조 덕분에 발행자는 메시지에 특정 주제를 할당하여 브로커에게 전달하기만 하면 되며, 구독자는 자신이 관심 있는 주제를 브로커에게 미리 등록함으로써 필요한 정보를 전달받는다.


브로커는 크게 주제 기반 필터링과 내용 기반 필터링, 두 전략을 사용하여 메시지를 전달한다. 주제 기반 필터링은 메시지에 논리적인 채널 이름을 부여하고 구독자가 해당 채널을 구독하는 방식인데, 이는 구조가 단순하고 성능이 뛰어나 가장 널리 사용된다. 반면 내용 기반 필터링은 메시지의 실제 데이터 값을 검사하여 구독자가 설정한 특정 조건에 부합할 때만 메시지를 전달하는 방식이다.

후자는 훨씬 정교한 메시지 라우팅이 가능하지만, 브로커가 메시지 내부를 일일이 확인해야 하므로 시스템의 복잡도와 연산 비용이 증가한다는 특성이 있다.

발행-구독 모델의 장점

이 모델의 가장 강력한 점은 공간, 시간, 동기화 세 가지 측면에서의 완전한 분리를 이루었다는 점이다. 발행자와 구독자가 서로의 네트워크 위치나 IP 주소를 몰라도 통신이 가능하게, 즉 공간적으로 분리할 수 있게 했는데, 시스템의 구성 요소가 동적으로 추가되거나 변경되는 환경에서 매우 유리하다.

이 모델에서는 메시지가 브로커를 통해 전달되기 때문에, 두 주체가 동시에 활성화되어 있지 않아도 메시지 전달이 가능하다. 이와 같이 참여자가 시간적으로 분리되어있기 때문에, 발행자가 메시지를 보낸 시점에 구독자가 오프라인 상태이더라도 이후에 브로커를 통해 메시지를 전달받을 수 있다.

이와 같은 비동기적인 구조로, 이 모델을 활용할 때에는 발행자가 메시지를 보낸 직후 수신자의 응답을 기다리지 않고 즉시 자신의 다음 작업을 수행하도록 구현한다. 수신자의 응답을 대기하지 않도록 하여 시스템 전체의 처리량을 높일 수 있다.


이러한 장점에서 기인하여, 발행-구독 모델은 대규모 마이크로서비스 아키텍처나 사물인터넷 환경에서 필수적인 기술로 자리 잡았다.3 수많은 서비스가 독립적으로 운영되면서도 상태 변화를 실시간으로 공유해야 하므로, 발행 구독 모델의 느슨한 결합과 비동기적 메시지 전달은 마이크로서비스 아키텍처의 요구사항을 만족하는 데 결정적인 역할을 하고 있다.

수만 대의 센서가 데이터를 쏟아내는 사물인터넷 환경에서도 이 모델은 효율적인 데이터 브로드캐스팅과 수집을 가능하게 한다. 우리가 일상적으로 사용하는 SNS의 실시간 알림이나 주식 시장의 시세 변동 알림 서비스 등도 모두 이 모델의 원리를 기반으로 구현되어 있다.

발행-구독 모델의 주의점

하지만 발행-구독 모델을 도입할 때는 몇 가지 기술적 도전 과제도 함께 고려해야 한다.

가장 대표적인 문제는 메시지 전달의 신뢰성 보장이다. 발행자는 메시지를 브로커에게 전달하는 것으로 자신의 역할을 마치기 때문에, 실제로 모든 구독자에게 메시지가 정확히 도달했는지 확인하기가 어렵다.

이를 보완하기 위해 메시지 큐 기술과 결합하여 ‘최소 한 번 전달’이나 ‘정확히 한 번 전달’과 같은 복잡한 보장 메커니즘을 적용하기도 한다. 또한 통신의 중심축인 브로커에 장애가 발생할 경우 전체 시스템의 통신이 마비될 수 있는 단일 장애점 문제가 존재하므로, 이를 방지하기 위한 브로커의 클러스터링과 고가용성 확보가 필수적으로 요구된다.

References

  1. Microsoft Learn, “Publisher-Subscriber pattern,” [Online]. Available: https://learn.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber 

  2. Google Cloud, “What is Pub/Sub?,” [Online]. Available: https://docs.cloud.google.com/pubsub/docs/overview 

  3. Amazon AWS, “What is Pub/Sub Messaging?,” [Online]. Available: https://aws.amazon.com/what-is/pub-sub-messaging/