はじめに
自分の勉強したことの記録も兼ねて書いていきます。例のごとくいつ飽きるかわからないのになぜかシリーズものにしてしまいましたが、頑張って続けます。
中身としては以下を想定しています。
- 公式ドキュメントからの引用8割
- 理解しにくい所の補足1割
- ネットの海から見つけてきた面白いと思った実装パターン1割
シリーズ1回目はAmazon SNS(Simple Notification Service)です。
それでは早速やっていきます。
Amazon SNSの概要
Amazon Simple Notification Service (Amazon SNS) は、配信者から受信者 (または生産者から消費者) へのメッセージ配信を提供するマネージドサービスです。発行者は、論理アクセスポイントおよび通信チャネルであるトピックにメッセージを送信することで、受信者と非同期的に通信します。クライアントは SNS トピックをサブスクライブし、Amazon Data Firehose、Amazon SQS、HTTP、E メール AWS Lambda、モバイルプッシュ通知、モバイルテキストメッセージ (SMS) など、サポートされているエンドポイントタイプを使用して公開されたメッセージを受信できます。
基本概念・用語の整理
メッセージ
Amazon SNSで扱う「メッセージ」とは、配信者が受信者に送信する情報の単位を指します。具体的な内容はユースケースによって異なりますが、以下のようなものが含まれます。
- テキストメッセージ
SMSやEメールの本文として送信されるシンプルなテキストデータ。 - JSONペイロード
APIやサービス間でデータをやり取りするための構造化されたJSON形式のデータ。 - 通知メッセージ
モバイルアプリにプッシュ通知として送信される短いメッセージ。 - イベント情報
システムイベントやアラート情報を通知するためのデータ。
トピック(Topic)
メッセージの配信を管理するための論理的なアクセスポイントおよび通信チャネルです。配信者はトピックにメッセージを送信し、受信者はそのトピックをサブスクライブすることでメッセージを受信します。各トピックは一意の名前を持ち、特定のメッセージ配信ルールやポリシーが設定できます。
サブスクライブ
特定のトピックに対して受信者(サブスクライバー)がメッセージを受信するように登録することです。
配信者(Publisher, Producer)
メッセージを作成し、SNSトピックに送信する役割を担うエンティティを指します。具体的には、アプリケーションやシステムコンポーネント、あるいは特定のイベントに応じてメッセージを生成する自動化されたスクリプトやサービスが該当します。
受信者(Subscriber, Consumer)
SNSトピックにサブスクライブし、送信されたメッセージを受け取るエンティティを指します。具体的には、Amazon SQSキュー、AWS Lambda関数、HTTPエンドポイント、Eメールアドレス、モバイルデバイス(プッシュ通知やSMS)などが含まれます。受信者は、トピックに配信されたメッセージを処理したり、ユーザーに通知を送ったりする役割を担います。
Amazon SNSを使うと何が嬉しいのか
Amazon SNSを使うと、メッセージの配信がとても簡単かつ効率的になります。これがなぜ嬉しいのかを理解するために、まずSNSがない場合の問題点をいくつか見てみましょう。
-
自前実装の手間とコスト
メッセージ配信システムを自前で実装するには、多くの時間とコストがかかります。特に、信頼性の高い配信を実現するためには、メッセージのキューイングや再試行、エラー処理などの機能を自分で作り込む必要があります。 -
スケーラビリティの問題
大量のメッセージを効率よく配信するためには、システムのスケーラビリティを確保する必要があります。自前で実装した場合、このスケーラビリティを確保するのは非常に難しいです。 -
多様な配信方法のサポート
メールやSMS、モバイルプッシュ通知など、さまざまな配信方法をサポートするには、それぞれの方法に対応した実装が必要です。これも非常に手間がかかります。
これらをはじめとした、メッセージ送受信周りの色々を一挙に担ってくれるのが、Amazon SNSというわけです。
おわりに
次回下記参考にしつつ、より詳細な機能について見ていきます。
参考資料