PUBLIC
CLOUDパブサブ6 MIN READ

TERM 031

Pub / Sub

発行側と購読側を分離して、イベントを配る

Pub/Sub(Publish / Subscribe)は、送信者(Publisher)がトピック(Topic)へメッセージを送信し、そのトピックを購読している複数の受信者(Subscriber)がそれぞれ受け取る非同期通信の仕組みです。送信側は受信側の台数や所在を意識する必要がありません。

01PUBLISHイベントを発行
02FAN OUT購読ごとに配る
03CONSUME独立して処理
OVERVIEW

送信側と受信側を分離してメッセージを配る方式の全体像。

CONTENTSこの記事の目次

01 — DEFINITION

Pub / Subとは
何か

Pub/Sub(Publish / Subscribe)は、送信者(Publisher)がトピック(Topic)へメッセージを送信し、そのトピックを購読している複数の受信者(Subscriber)がそれぞれ受け取る非同期通信の仕組みです。送信側は受信側の台数や所在を意識する必要がありません。

02 — HOW IT WORKS

仕組みを
3段階で見る

細部へ入る前に、入力から結果までの役割を順番に捉えます。

INPUTPROCESSOUTPUT
01PUBLISH

イベントを発行

発生したイベントや事実をトピックへメッセージとして送信する。

02FAN OUT

購読ごとに配る

メッセージ基盤が、登録された各サブスクリプションへメッセージを複製・配送する。

03CONSUME

独立して処理

各サブスクライバーが自身の処理速度や再試行ポリシーに合わせてメッセージを受信する。

PROCESS

Pub / Subを理解するときの、最小の処理単位です。

03 — ESSENTIALS

押さえるべき
3つの要点

名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。

01TOPIC

発行先の名前

Publisherが受け手を知らずにイベントを送る接点です。

02SUBSCRIPTION

購読ごとの設定

未読メッセージの配送位置、再試行間隔、保持期間などを購読者ごとに管理します。

03DELIVERY

配送保証

少なくとも一回などの性質を理解し、受け手を冪等にします。

04 — REAL WORLD EXAMPLE

注文確定イベントを複数サービスへ配る

在庫、メール、分析が同じ注文確定を別々に利用します。

SCENARIO / PUB / SUBSTEP BY STEP
  1. 01

    注文サービスがorder.createdイベントを発行する

  2. 02

    3つのサブスクリプションへイベントメッセージを並行配送する

  3. 03

    在庫・メール・分析の各サービスが独立して処理を行う

RESULT注文サービスを変更せず、後から新しい購読処理を追加できます。

05 — WATCH OUT

理解するときの
注意点

便利な仕組みほど、守備範囲と失敗の前提を明確にします。

01

順序を暗黙に期待しない

必要なら順序キーを使うか、データ側の版で新旧を判断します。

02

イベントスキーマの互換性を管理する

既存の購読サービス(Subscriber)を壊さないよう、フィールドの追加方法やスキーマのバージョニングをあらかじめ計画します。

IN ONE SENTENCE

Pub / Subとは?

送信側と受信側を分離してメッセージを配る方式。

KEEP EXPLORING

CLOUDMessage Queue掲載中WEBWebhook掲載中CLOUDServerless掲載中