구글의 GCM(이전엔 FCM으로 불렸음)을 사용면서 GCM이 가진 많은 기능 중 Topic 메세지를 사용할 케이스가 있었다. Topic 메세지는 publish/subscribe model에 기반을 둔 push service인데, 그 과정은 아래와 같다.
서버 혹은 메세지를 보내는 주체가 메세지를 publish 하면 메세지의 발송 성공 여부는 확인하지 않는다. 그냥 publish 할 뿐이다. 한편, 해당 토픽에 대해 subscribe를 한 subscriber들은 메세지가 publish 되면 해당 메세지를 수신 할 수 있게 된다. 결국 publish/subscribe 모델에서는 publisher와 subscriber들은 서로를 알필요가 없다. 각자의 역활(메세지를 publish/메세지를 수신)만을 수행하면 되는 모델인 것이다.
publish/subscribe 모델이 작동하기 위해서는 publish 된 메세지가 해당 토픽을 선택한 subscriber에게 메세지가 발송 되도록 중간에서 브로커 역활을 하는 모듈이 존재한다.
이렇게 publish/subscribe 모델 기반의 시스템의 경우 publisher와 subscriber 간에 낮은 결합도를 가진 시스템을 구축 할 수 있으며 이를 통해 시스템 확장성에 있어 큰 장점을 가질 수 있게 된다.
그러나, 메세지 전송에 대한 정확한 피드백을 받기가 어렵고 악의적인 메세지가 publish 되었을때 브로커가 그것을 필터링하는데 어려움이 존재한다.
참고: http://blog.naver.com/PostView.nhn?blogId=hisukdory&logNo=50109265674 , https://developers.google.com/cloud-messaging/topic-messaging