Amazon SNSとは ~手早く、安価なメッセージ通知プラットフォームの特徴~

今日、サービスを効率的にスケールしていくためにはユーザーとのコミュニケーションは欠かせません。しかし、ユーザーへの通知方法としてスマートフォン、Eメール、SMSなど多様化する配信先を網羅しつつ自前で配信サービスを構築するにはコストが問題になります。それだけでなく、想定負荷を超えた場合にはシステムスケーラビリティの問題も出てきます。Amazon SNSはこれらの問題を一気に解決し、通知の仕組みづくりをスピーディに実現するAWSサービスです。今回は、Amazon SNSの特徴と基本的な仕組み、活用方法などをご紹介していきます。

Amazon SNSとは

Amazon SNS(Simple Notification Service)はそのためだけにサーバーを用意しなくてもアプリケーションからの通知を可能にするサービスです。ユーザーが何かを行ったタイミングで通知する「イベントドリブン」なメッセージングを手軽に実現できます。

通知の例としては、商品が発送されたタイミングでの発送完了通知や、フリマアプリで出品していた商品が購入されたときのプッシュ通知などがあります。これらはすべてあるイベントを起点にして発行されるメッセージです。またそれだけでなく、登録しているユーザーに対してイベント告知を一斉に行いたい、といった用途も考えられます。

こうした機能を持つオンプレミスシステムを自前で組み上げるとなるとかなりの開発コストがかかるだけでなく、サービスがスケールしていくにつれ、メンテナンスやサーバーの増強などに要する管理コストの問題が顕著になります。そこで利用を考えたいのがAmazon SNSです。
Amazon SNSを使えばサーバーレスで通知機能が実装でき、スケーラビリティについては考慮する必要がありません。これにより開発者はサービスを充実することに注力できるのです。これがAmazon SNSの大きな魅力といえます。

次にAmazon SNSにはどのような特徴があるのか、詳しくみていきましょう。

Amazon SNSの特徴

イベントドリブンのメッセージ通知を実現

ユーザーアクションをトリガーにしたメッセージ通知が行えます。商品の購入、アカウント情報の変更、コンテンツ更新の通知などさまざまな用途で利用可能です。

モバイルのプッシュ通知にも対応

iOS、Androidなどのスマートフォンに対してプッシュ通知が行えます。メールと違ったアプローチが可能となり、高いエンゲージメントが期待できるといわれています。

セキュアなメッセージプッシュ

特定のトピックについて対象を絞った(制限した)通知ができます。HTTPS APIによる通信のセキュアな状態を保つことが可能です。

前払い料金・最低料金なし

Amazon SNSは完全な従量課金制で使った分しか支払う必要がありません。前払い料金や最低料金といったものもありません。

導入・開発をサポートする強力なSDKとIDE

導入・開発のための豊富なバリエーションのSDKが用意されています。そのため、プログラミング言語が導入の障害になることは少ないでしょう。また、Eclipse、Visual StudioなどメジャーなIDEが利用できます。

Amazon SQS、SESとの違い

AWSにはAmazon SNSのほかにもSQS(Simple Queue Service)やSES(Simple Email Service)といったサービスがあります。これらの違いは以下のようにまとめられます。

  • Amazon SNS:プッシュ型の通知が得意で、EメールのほかにもSMS、スマートフォンへの通知が可能です。しかし、容量制限があるためEメールで長文コンテンツを届ける用途には向きません。
  • Amazon SES:Eメールの送信が得意で、Eメールで充実したコンテンツを届けたい場合に利用できますが、Eメール以外の通知手段は選択できません。
  • Amazon SQS:プル型のメッセージ処理が得意で、非同期処理で受け取ったメッセージ(キュー)を処理できます。メッセージを送信するというよりも、受け取ったメッセージ(キュー)を処理するサービスです。

注意点

Amazon SNSにはいくつか注意点があります。

  • 決まった時間に送信するといったスケジュール配信ができない
  • メールの開封率やA/Bテストといった解析機能がついていない

いわゆるメールマーケティングやメールマガジン(メルマガ)のような使い方はできないですが、その代わりにマーケティング用メール配信ツールと比べて一般的に安いという特徴があります(料金については後述)。

Amazon SNSの機能

主な機能

Amazon SNSは以下の機能で構成されています。

  • モバイルPUSH通知
  • Pub / Subメッセージング

それぞれみていきましょう。

モバイルPUSH通知

モバイルPUSH通知は、スマートフォンに対して通知ができる機能です。待受中や利用中のユーザーのモバイル端末などに直接通知を送ることができます。Eメールと比べてもエンゲージメント率が高いと言われ、効果的な通知が可能です。

Pub / Subメッセージング

「Pub / Subメッセージング」とは、「パブリッシャー(Publisher)」がメッセージを発行し、「サブスクライバー(Subscriber)」がメッセージを受信することで通知する方式です。「トピック」を定義することで、送信先をグルーピングした一斉配信も可能になります。
トピックを利用すれば、1リクエストでトピックに紐付けられたサブスクライバー全員に送信できるので、複数の送信先に通知するときに有効な方法といえるでしょう。もちろん「エンドポイント」(個別のサブスクライバーのこと)に対して個別に通知を送ることも可能です。
なお、「MQTT」と呼ばれるプロトコルを利用すればPub / Subメッセージングサービスを実現できますが、これを1から構築するのはやはり相応のコストがかかってしまうことでしょう。

Pub / Subメッセージングの概念

その他の機能

対応プロトコル

対応しているプロトコルは多岐に渡ります。モバイルPUSH通知だけでなく、EメールやSMSなど、プロトコルに縛られずに通知できるので、幅広い用途での活用が検討できます。また、Amazon SQSやLambdaと連携すると、より複雑な要件にも対応できるでしょう。

  • HTTP
  • SMS
  • HTTPS
  • Email
  • Email-JSON
  • Amazon SQS
  • AWS Lambda
  • Application
料金

価格は100万件の通知で0.5ドルと、圧倒的な低価格で利用できます。また、最初の100万件は無料で利用可能です。これは運営側としても嬉しいポイントになるでしょう。
なお、最新の料金や料金詳細については公式サイトにてご確認ください。
https://aws.amazon.com/jp/sns/pricing/別ウィンドウで開きます

通知のモニタリング

Amazon SNS自体には配信状況を確認する機能はありませんが、Amazon CloudWatchを利用することで配信状況のモニタリングが可能です。ただし、先にも述べたようにメールマーケティングやメルマガなどの用途を想定したサービスではないため、開封率を調べるなどの分析はできません。

具体的な用途・導入例

大量のユーザーを抱えるスマートフォンアプリ

一番イメージが湧きやすい用途がスマートフォンアプリでの一斉通知でしょう。多ければ数百万人のユーザーを抱えるスマートフォンアプリでは、素早く、確実に通知できることが求められます。そういう場合にAmazon SNSを導入すれば、手軽にモバイルPUSH通知が実装できるでしょう。

オペレーションをリアルタイム監視するシステム

物流管理システムでは常に商品がどこにあるのかをトラッキングできる必要があります。Amazon SNSなら検品・引当・承認などのオペレーションごとに通知を行うなど、リアルタイムでの管理が可能です。

世界中にファンを持つスポーツクラブ

世界中にファンを持つスポーツクラブでは、多言語かつ複数のプラットフォームに対しての通知が必須になります。Amazon SNSはSMSだけでも200カ国に対応しているので、ワールドワイドな通知サービスを安価に構築できるでしょう。

より高度な活用方法も

Amazon SQSとの連携

Amazon SNSをAmazon SQSと連携させることで、分散アプリケーションの統合用途でも活用が可能です。Amazon SQSはシステム間の連携通知で利用されるサービスですが通常は1対1で通知(キューへの通知)が行われます。Amazon SNSとAmazon SQSとを組み合わせることにより、1対Nの連携が可能となり、また、疎結合な構成での並列処理が実現可能となります。

たとえば、サーバーに画像がアップロードされたら、画像サイズを変更して、オリジナルの画像データはバックアップデータとして別のサーバーに保存したい場合には、「画像変更」「バックアップ」という処理の通知(命令)を個別に行うことになりますが、これを並列処理できるようになります。

Amazon SQSと連携することで分散アプリケーションの並列処理を実現できる

Amazon Lambdaとの連携

Amazon Lambdaはサーバーレスで処理を実行できるサービスです。Amazon SNSとAmazon Lambdaを組み合わせることで、より高度なメッセージのカスタマイズ、SNS標準のサポート外のプロトコルへの変換など、Amazon SNSの機能だけでは実現できない要件にも対応できるようになります。

シンプルな要求から高度な処理まで

Amazon SNSは、通知サービスとしてトラッキングやA/Bテストなど苦手な部分はあるものの、シンプルであるがゆえに拡張性も高いことが特徴です。機能が豊富すぎる通知サービスを選択した場合、扱いきれない高度な機能が盛り込まれていて高額なコストが発生してしまうこともあります。複数のプロトコルや多言語などに対応しているAmazon SNSで必要最低限の要件対応を検討し、システム連携など複雑な機能要件については他のAWSサービスとの連携で対応するといったことが可能です。また、長期的な成長戦略を描く場合において、スケーラビリティを気にせずサービスに注力できるという点も見逃せないでしょう。

移行準備段階で知っておくべきAmazon Web Servicesの
サービスを学び、具体的にクラウド検討を考える!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る