過去にAmazon SNS(Simple Notification Service)単体について、まともに取り上げたことが無かったのでまとめてみました。概要を理解する一助になればと思います。
Amazon SNSとは?
Amazon SNSを表現すると、「マルチプロトコルで一斉送信可能なプッシュ型通知サービス」となります。まずマルチプロトコルという点ですが、2013年6月現在では、HTTP/HTTPS、Eメール、SMSとSQSをサポートしています。一斉配信可能というところですが、先ほどの複数のプロトコルを使い任意の宛先に一斉にメッセージを送ることが可能です。最後のプッシュ型ですが、通知する人(Publish)のトリガーによりメッセージが送られることになります。
Amazon SNSの使い方
使い方は名前の通りに非常にシンプルです。
基本的な動作は、4つのアクションのみです。
- Topicの作成
- Topicの削除
- (Topicの)購読
- メッセージの配信(Publish)
Amazon SNSのコスト
気になるSNSの料金ですが、びっくりするくらい安く、かつ無料枠も大きいです。数あるAWSのサービスの中でも、最もお得感のあるサービスの1つなのではないでしょうか?見てください。この太っ腹ぶりを!!
- APIリクエスト ・・・ 毎月最初の100万リクエストは無料。それ以降は、100万リクエストごとに$0.50
- HTTP/HTTPS ・・・ 毎月最初の10万 HTTP/HTTPS通知は無料。それ以降は、10万通知ごとに$0.06
- Email/Email-JSON ・・・ 毎月最初の1,000 Email通知は無料。それ以降は、10万通知ごとに$2.00
- SMS ・・・ 毎月最初の100 SMS通知は無料。それ以降は、100通知ごとに$0.75
- SQS ・・・ SQSへの通知は無料
Amazon SNSのメリット
SNSを使うメリットは幾つもありますが、代表すると次の3つに集約出来ると思います。
- マルチプロトコル
- 疎結合
- 低コスト
まずマルチプロトコルについてです。先述の通り、SNSは複数のプロトコルをサポートしています。また今後もサポートする恐らく増えていくでしょう。配信側(Publish)は受けてのプロトコルを意識せず、単純にメッセージの配信だけすれば良いです。そして受信側(Subscriber)が自分が必要とするプロトコルで購読(Subscribe)出来るようになっています。つまり将来的に新しいプロトコルがサポートされても、Subscriberの登録のみで対応できるということです。これが次の疎結合につながります。最後に低コストについてですが、SNSのメッセージは冗長化されロストされにくいように設計されています。これを自前で構築しようとすると、非常に重厚な構成を用意する必要があります。SNSは従量課金型の利用料型で、かつ極めて低価格で提供されています。
まとめ
改めて確認すると、こんな凄いサービスをこの低価格で提供出来るAmazonは凄いと思います。私もシステムの構築上でメッセージサービスのようなものを組んだことがありますが、冗長性や可用性を考えるとコストがどんどん上がっていきます。AWSは高性能・高可用性を確保した上で、非常にシンプルなAPIで使えるようになっています。
SNSを使える環境であれば、積極的に使わないと損ですね。またSWF,SQSを始め他のサービスとの組み合わせも非常にしやすいサービスです。疎結合なシステムを目指す場合は、SNSをピースの1つに組み込んでみては如何でしょうか? Let's Enjoy!!
See Also:
Amazon SNSとSQSの素敵な関係。或いは、Jenkinsからパトライトを光らせる
マイナー三兄弟なAmazon SNS,SQS,SESを激しくお勧めする
参照:
Amazon Simple Notification Service(メッセージ通知サービス Amazon SNS) | アマゾン ウェブ サービス(AWS 日本語)
20120303 jaws summit-meister-06_sns-sqs