プログラマでありたい

おっさんになっても、プログラマでありつづけたい

マルチプロトコルの凄いやつ。Amazon SNS(Simple Notification Service)

 過去にAmazon SNS(Simple Notification Service)単体について、まともに取り上げたことが無かったのでまとめてみました。概要を理解する一助になればと思います。

Amazon SNSとは?



 Amazon SNSを表現すると、「マルチプロトコルで一斉送信可能なプッシュ型通知サービス」となります。まずマルチプロトコルという点ですが、2013年6月現在では、HTTP/HTTPS、Eメール、SMSとSQSをサポートしています。一斉配信可能というところですが、先ほどの複数のプロトコルを使い任意の宛先に一斉にメッセージを送ることが可能です。最後のプッシュ型ですが、通知する人(Publish)のトリガーによりメッセージが送られることになります。

Amazon SNSの使い方



 使い方は名前の通りに非常にシンプルです。
基本的な動作は、4つのアクションのみです。

  • Topicの作成
  • Topicの削除
  • (Topicの)購読
  • メッセージの配信(Publish)

この中で日常的に使うのは、メッセージの配信(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