2021/04/26

AWSのpub/sub機能の仕組みを解説!特徴から設定方法までご紹介します

 
  

AWS pub/sub とは


AWS(Amazon Web Service)のpub/subメッセージングとは、AWSが提供しているSNSサービス:Amazon Simple Notification Service(SNS)上で稼働するメッセージングの通信方式です。

pub(パブリッシャー)/sub(サブスクライバー)自体はメッセージング機能を発動させるためのコンポーネント(部品)です。

本記事では、このpub/subメッセージングの概要・特徴・使い方についてご紹介いたします。

そもそもpub/subとは?

pubとは「Publish:パブリッシュ(出版)」の略で、subとは「Subscribe:サブスクライブ(購読)」の略です。

この仕組みは、例えば「メールマガジンの出版と購読」を想像してみるとわかりやすいです。

メールマガジンを送る側が「パブリッシュ(出版)」、メールマガジンを受け取る側が「サブスクライブ(購読)」と考えることができます。

このように「pub/sub」の仕組みは日常で利用されている仕組みと言えます。

AWS pub/subメッセージングとは?

AWSにおけるpub/subメッセージングとは​​、サーバーレス&マイクロサービスアーキテクチャ(複数のビジネスロジックを組み合わせるシステム設計)で使用される通信の形式で、主にAmazon Simple Notification Serviceで使われています。

AWS pub/subメッセージング機能は、「トピック」と呼ばれる論理アクセスポイントにメッセージがパブリッシュされると、そのトピックと紐づくすべてのサブスクライバーへパブリッシュされたメッセージが発信される機能です。サブスクライバーは、すぐにそのメッセージを受信することができます。

pub/subメッセージングが実装されるトピックとは?

「トピック」とは、論理アクセスポイント(通信チャネルとして機能するもの)です。

パブリッシャーのメッセージ送信先/各サブスクライバーへメッセージをプッシュするアクセスポイント、と捉えるとイメージしやすいでしょう。

このトピックという概念は、pub/subの特徴を知る上で抑えておくと理解が進みやすいでしょう。例えば、1通のSMSメッセージを複数の電話番号に送信したいとき、トピックに複数の電話番号を登録することで、全員に通知を送信することができます。

1リクエスト(pub/パブリッシュ)でトピックに紐付けられた購読者(sub/サブスクライバー)全員に通知をするイメージです。

さらに「エンドポイント」と呼ばれる個別のサブスクライバーへ個別に通知を送ることも可能です。

Amazon Simple Notification Serviceとは?

pub/subメッセージングが使われているAWSのAmazon Simple Notification Service(SNS)とは、アプリケーションから各種通知ができるメッセージ通知プラットフォームのことです。

ユーザーが何かを行ったタイミング/イベントで通知を発信することができます。

例えば、イベント駆動型アーキテクチャ上でのpub/subメッセージングを想像するとわかりやすいでしょう。

イベント駆動型アーキテクチャとは、通販Webサイトのショッピングカートに商品が追加されたり、決済されたときなど、何らかのイベントによってステータスが変化・更新されたことをトリガーに発動するシステム設計です。

商品が発送されたタイミングや自動車保険の見積りがリクエストされたタイミング・フリマアプリで商品が購入されたタイミングなどさまざまなイベントをトリガーに、通知・一斉告知をすることが可能です。

AWS pub/subメッセージングの特徴とは?


AWSでのpub/subメッセージングは、サービスの1機能として提供されているため設定ベースで通知機能を手軽に実装できる点が特徴です。

例えば、前述の「トピック」を定義し、送信先(購読者)をグルーピングすることで、一斉送信することが可能です。

以下では、その特徴の詳細をご紹介いたします。

AWS pub/subの特徴

AWSのpub(パブリッシャー)とsub(サブスクライバー)は切り離されており、互いの存在を認識していません。

パブリッシャーはトピックにメッセージを送信するのみで完結しており、後続のサブスクライバーに影響を及ぼしません。またサブスクライバーも、自身が紐づけられた特定のトピックからメッセージを受信するため、パブリッシャーを認識していません。

メッセージはすぐに配信されるか、トピックに紐づくすべてのサブスクライバーにプッシュされます。

以下ではさらに細かい特徴について解説いたします。

プッシュ配信

プッシュ配信とは、パブリッシュされたメッセージが即座にサブスクライバーへ通知される機能のことです。

pub(パブリッシャー)が発行したメッセージがトピックに公開されると、非同期イベント通知を即座にプッシュします。メッセージが利用可能になると、サブスクライバーに通知されます。

複数の配信プロトコルに対応

AWSのpub/subは、HTTP、HTTPS、Amazon SQSキューなど、Eメール以外のプロトコルをサポートしています。

これにより、モバイルへのPUSH通知だけでなく、Eメール/SMSへの通知など、各プロトコルに縛られない通知が可能です。

ファンアウト

AWSのpub/subにおけるファンアウト(非同期イベント通知)とは、メッセージがトピックに送信され、このとき複製されたメッセージを複数のエンドポイントにプッシュすることで発生します。

これにより並列処理が可能になります。

フィルタリング機能

AWSのpub/subでは、フィルタリング機能により、メッセージフィルタリングポリシーを作成できます。

これにより、sub(サブスクライバー)は、トピックに投稿されたすべてメッセージを受信するのではなく、関心のある通知のみを受信することができるようになります。

セキュリティの高さ

転送中のメッセージは暗号化され、セキュリティが確保されています。

メッセージトピックは、コンテンツを発行(発信)しようとするアプリケーションを認証&暗号化されたエンドポイントを使用し、メッセージを発信します。

AWS pub/subの実装の仕方


AWS pub/subの実装はトピックに設定していきます。

以下では、トピックでの実装イメージについて簡単に説明いたします。

トピックへの実装は2つの方法があります。
・トピックへのメッセージの送信(コンソール):開発コンソールより設定
・トピックへのメッセージの送信(AWS SDKs):コードに実装

以下はコンソールを使った設定方法の概要を説明いたします。

トピックへのメッセージの送信 (コンソール)より実装する方法

1.まずはパブリッシュされたメッセージの発信先となるトピック(アクセスポイント)を作成します。

【設定方法】
コンソールのナビゲーションパネルで「トピック」を選択し、[Topics] ページの[Create new topic] より作成します。

2.SMS のサブスクリプションをトピックに追加し、トピックから発信されるサブスクライバー(受信先)を設定します。

【設定方法】
実際のサブスクリプション先(電話番号やEメールアドレス)を実装します。[Topics] ページで、トピック ARN(Amazon Resource Name)を選択し、トピックの詳細ページで、[サブスクリプションの作成] を選択します。

[Protocol] で、[SMS] を選択し、[エンドポイント] に、メッセージを送信する電話番号を入力します。

3.実際にメッセージをパブリッシュしてみましょう

トピックにメッセージを発行することで、サブスクライブされているすべての電話番号やEメールアドレスにメッセージが配信されることを確認してみましょう。

AWS pub/subの仕組みを活用しよう!


クラウドサービスにおいて、各アプリケーションは、開発、展開、保守を容易にするため分散されています。pub/subメッセージングは​​、これらの分散アプリケーションにイベント通知を非同期で行える機能です。

pub/subモデルは、各アプリのパフォーマンス・拡張性を向上させながら、イベント駆動型アーキテクチャにてメッセージングの並列処理を可能にします。

是非ともこの機能を使い、SNSの活用にお役立てください。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】