출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

다음의 Qwiklabs 과정을 거치면서 모르던 내용들 그리고 배웠던 내용들에 대해 써보았다:

  • Cloud Cloud Pub/Sub - Qwik Start (Console / Command Line / Python)

우선, 저 과정을 거치면서 모르거나 새로 배운 내용들에 대한 정의를 써보도록 하겠다. 나름 나의 해석도 들어가 있는 것이라 정확하지는 않을 수도 있으나, 최대한 찾아본 내용을 토대로 썼다:

  • Google Cloud Pub/Sub: Is an asynchronous global messaging service
  • Topic: Topic in Google Cloud is a shared string that allows applications to connect with one another through a common thread
  • Message in Pub/Sub: Contains a Payload and optional attributes that describe the payload content
  • Publishers push a message to a Cloud Pub/Sub topic. Subscribers will then make a subscription to t hat thread, where they will either pull messages from the topic or configure webhooks for push subscriptions. Every subscriber must acknowledge each message within a configurable window of time

 

※ Publisher-Subscriber Relationship

Publisher과 Subscriber 사이의 관계도는 다음과 같이 표현될 수 있다

출처: <https://cloud.google.com/pubsub/docs/overview>

다수의 Publisher이 한명의 Subscriber에 보내는 Many-to-one (fan-in) 관계가 될 수도 있고, 오른쪽 처럼 한명의 Publisher이 다수의 subscriber에 보내는 one-to-many(fan-out)의 관계가 될 수 있다.

 

 

※ Pub/Sub Message Flow

다음은 Pub/Sub의 구성과 이 사이에 어떻게 메세지가 전달되는지 볼 수 있다:

출처: <https://cloud.google.com/pubsub/docs/overview>

  1. Publisher Application이 Pub/Sub에 topic을 만들고 message를 전송한다.
  2. Subscriber가 message를 제대로 받고 읽기 전까지 message는 저장된다
  3. Pub/Sub가 개별적으로 모든 subscription에 topic으로부터의 message를 전달한다
  4. Subscriber는 1 - Pub/Sub가 message를 push함으로써 message를 받거나 2. Subscriber가 message를 pull하면서 message를 받는다
  5. Subscriber는 Pub/Sub service에 message를 받았다고 전달한다
  6. Pub/Sub service는 저장시켜놓은 message를 제거한다.

출처: <https://cloud.google.com/pubsub/docs/overview>

대부분의 message는 위의 그림과 같은 방식으로 쓰인다. GCP Apps, Mobile web content, IoT devices 같은 곳에서 Cloud Pub/Sub의 Topic에 message를 보내고, 마지막에 존재하는 BigQuery, Cloud Storage, VMS, APp Engine, Cloud Functions 등에 message가 전달된다.

 

따라서, 다음의 diagram을 통해 Google Cloud Pub/Sub가 어떻게 통합되어 쓰일 수 있는지 잘 보여주고 있다:

출처: <https://cloud.google.com/pubsub/docs/overview>