Pub/Subメッセージングとは
Pub/Subメッセージングは、メッセージの発行者(パブリッシャー)と購読者(サブスクライバー)を分離する分散システムのメッセージングパラダイムです(※仕組みについては後述)。
Amazon Simple Notification Service(以下、SNS)では、このPub/Subメッセージングパラダイムに従いプッシュメカニズムを使って配信を行うことができます。
Pub/Subメッセージングの主要コンポーネント
Pub/Subメッセージングを理解するためには、以下の4つのコンポーネントを理解しておく必要があります。
- パブリッシャー: トピックにメッセージを発行するエンティティ
- メッセージ: 発行者から購読者に送信される情報
- トピック: メッセージが発行される論理的アクセスポイント
- サブスクライバー: トピックからメッセージを受信するエンドポイント
パブリッシャーが情報(メッセージ)をトピックという送信先に登録し、
登録されたメッセージはそのトピックに対して配信を申し込んでいたサブスクライバーに配信される、という流れですね。
※図:Pub/Sub メッセージングとは何ですか?より引用
Pub/Subメッセージングの主な特徴
主要コンポーネントを理解した上で、次はPub/Subメッセージングの特徴を見ていきます。
1. 即時性(リアルタイム性)
Pub/Subモデルでは、メッセージは発行されるとすぐに購読者に配信されます。
SNSのプッシュメカニズムはこの特性を活かし、高いリアルタイム性を実現しています。
2. 多様な配信先
SNSを使用したPub/Subシステムでは、メッセージを様々な種類のエンドポイントに接続できます。
- メッセージキュー
- サーバーレス機能
- HTTP サーバー
- メールアドレス
など、複数のタイプのエンドポイントに接続が可能です。
3. ファンアウト
Pub/Subモデルの大きな特徴として、1つのメッセージを複数の購読者に同時に配信できる点があります。これはSNSのプッシュメカニズムで効率的に実現されています。
4. フィルタリング
Pub/Subシステムでは、メッセージ属性に基づいて、関心のある(=特定の条件を満たす)メッセージのみを受信するようにフィルタリングできます。
5. 多重化
同じエンティティがパブリッシャーとサブスクライバーの両方の役割を果たすことができます。
これにより、例えばあるサービスがメッセージを受信し、それを処理した後に新しいメッセージとして別のトピックに発行することなどもできます。
相互にリンクするようなシステムで有効です。
Pub/Subメッセージングのメリット
1. ポーリングの排除
- メッセージトピックを使用し、プッシュベースの即時配信を実現
- コンシューマーが新しい情報や更新を定期的にチェック(ポーリング)する必要がなくなる
- 応答時間の短縮と配信レイテンシーの低減
2. 動的ターゲティング
- サービスの検出が容易になり、エラーが発生しにくくなる
- パブリッシャーはトピックにメッセージを投稿するだけでよい
- サブスクライバーはエンドポイントでトピックにサブスクライブし、メッセージを受信
- システムが動的に調整可能
3. 独立した分離とスケーリング
- パブリッシャーとサブスクライバーが分離され、独立して動作
- 個別に開発およびスケールが可能
- 機能の追加や変更による波及効果を最小限に抑える
4. 通信の簡素化
- メッセージトピックへの1つの接続で、ポイントツーポイント接続を削減
- トピックがサブスクリプションを管理し、メッセージの配信を決定
- コードのメンテナンスと拡張が容易になる
5. 耐久性
- 多くの場合、同じメッセージのコピーを複数のサーバーに保存
- 高い耐久性と少なくとも1回の配信を保証
6. セキュリティ
- メッセージトピックでアプリケーションの認証が可能
- 暗号化されたエンドポイントを使用し、転送中のメッセージを保護
最後に
ポーリングについては知っていましたが、いまいちPub/Subについて特徴やメリットなどを把握できていなかったので整理する良い機会になりました。
それでは、最後までお読みいただきありがとうございました!
参考記事