Pub/Sub 모델

2020. 5. 7. 21:59기타

1. Pub/Sub 모델이란

 Pub/Sub 모델은 Publish/Subscribe의 줄임말로 메시지 기반의 미들웨어 시스템을 말합니다. 일반적으로 메시지를 전송할 때는 publisher(sender)가 subscriber(receiver)에게 직접 메시지를 전송합니다. 하지만 Pub/Sub 모델에서는 publisher는 어떤 subscriber가 있는지 모르는 상태에서 메시지를 전송하고 subscriber는 publisher에 대한 정보 없이 자신의 Interest에 맞는 메시지만을 전송 받는 것을 말합니다.


 위의 그림을 보면 sensor는 어떤 기기가 메시지를 받을지 모르는 상태에서 MQTT로 데이터를 전송합니다. 그리고 MQTT는 temperature가 필요한 기기들에게 메시지를 전송합니다. 이처럼 Pub/Sub 모델은 publisher는 전송 대상은 모르면서 미들웨어로 메시지를 전송하고 이를 통해 subscriber에 전송하는 시스템을 말합니다.

2. Message Filtering

Topic-based system

 Publisher가 먼저 message의 topic을 정의한 후에, topic으로 메시지를 전송합니다. 그러면 Subscriber는 subscribe한 topic으로 전송되는 메시지만을 전송 받습니다.

Content-based system

 Subscriber가 먼저 message에 대해 자신이 원하는 topic을 정의해 둡니다. 이렇게 하면, 이 topic에 맞는 메시지만이 publisher로부터 전송이 됩니다.

Hybrid system

 위의 두 시스템의 형태를 합쳐 놓은 형태로, publisher가 message의 topic을 정해두고 각 topic으로 message를 publish하면, 전송된 메시지 중 그 topic에 subscribe한 subscriber들이 정의해둔 topic에 맞는 메시지만이 subscriber에게 전송되는 형태입니다.

3. 장점

Loosely coupled

 Pub/Sub 모델에서는 미들웨어를 통해 publisher와 subscriber 사이의 연결을 약하게 만들었다는 점이 장점입니다. 기존에는 publisher와 subscriber가 서로와 system topology에 대한 제약이 많았는데 신경 쓸 필요가 없어졌다는 부분이 장점입니다.

Scalable

 Pub/Sub 모델은 상대적으로 적은 설치 비용 및 규모에 비해 연결이 약하기 때문에 뛰어난 확장성을 보여줍니다.

4. 단점

End-to-end 시스템의 강점 상실

 기존의 시스템은 확실하게 전송부와 수신부가 직접 통신하기 때문에 목적지까지 메시지를 확실하게 전송할 수 있었습니다. 하지만, Pub/Sub시스템은 직접 통신하는 것이 아니라 미들웨어를 통하기 때문에 의도한대로 전달하지 못할 수도 있습니다.

728x90

'기타' 카테고리의 다른 글

Kafka  (0) 2020.05.08
Message Queue  (0) 2020.05.08
Git Merge와 Rebase  (0) 2020.04.26
객체 지향 프로그래밍의 5원칙  (0) 2020.04.26
예외 처리  (0) 2020.04.25