MicrosoftとAmazon Web Services (AWS)が相次いで、モバイル向けの通知サービスを発表した。両社のサービスとも素早くかつ安価に大量のメッセージを一斉送信できる。表面的には同じようなサービスだが、両社のサービスはそれぞれ独自の機能を提供している。
プッシュ通知はモバイル開発者のツールキットとして次第に重要になってきている。しかし、多くのデバイス向けにプッシュ通知を実装するのは難しい。ブログで発表されたAmazon SNSはプッシュ通知をサポートする。AWSチームはモバイル開発者が直面している問題について説明している。
プッシュ通知を実装するのは難しく、iOS、Android、Kindle Fireなどさまざまなプラットフォーム向けに実装するのは困難を極めます。これを実現するのに多くの開発者はAmazon、Apple、Googleが各社のデバイス向けに提供しているプッシュ通知の中継サービスを直接統合しています。これらのサービスはそれぞれ使い方もAPIも違い、トークンのアップデートやトークンの無効化のようなことも管理しなければならないです。また、モバイルアプリは一晩で大人気になる場合があります。0から数百万デバイスまで素早くスケールアウトし、日に数百万のメッセージを送信するのはとても難しいです。
この難題を解決するため、AWSはAmazon SNSを拡張し、Amazon Kindle Fire、iOS、Androidにメッセージを一斉送信する単一のAPIを提供する。このMobile Pushという機能はAmazon(ADM経由)、Google(GCM経由)、Apple(APN経由)の通知サービスのインターフェイスを抽象化する。接続されたすべてのデバイスにメッセージを一斉送信することも、個別のデバイスにメッセージを送ることも可能だ。また、プラットフォーム固有のメッセージを送ることもできる。しかし、新しいサービスを作るのではなく、Amazon SNSを拡張したのはなぜか。AWSのCTOであるWerner Vogels氏はブログで次のように説明する。
新しくモバイル通知サービスを作るのではなく、Amazon SNSを拡張したのは、Amazon SNSは最初からさまざまなプロトコルとデリバリ方法(メール、SMS、 SQS、HTTP)をサポートしており、すでに毎日、大量のメッセージ送信を行っているという実績があったからです。
AWSとSNSの既存の技術を利用することで、Amazon SNSと同等の費用効果で、Mobile Pushを提供できます。
いつものAWSの流儀通り、ドキュメントとSDKはすでに新しいSNSを反映している。
MicrosoftもWindows Azure Notification Hubsを発表してモバイル通知の世界を騒がしている。今年1月にプレビューが公開されたNotification HubsサービスはWindows 8、Windows Phone 8、iOS、Android向けにプッシュ通知機能を提供する。MicrosoftのバイスプレジデントであるScott Guthrie氏はAWSの発表でも取り上げられていたモバイル開発の世界の難しさを説明している。
プッシュ通知はモバイルアプリケーションにとって重要なコンポーネントです。モバイルアプリケーション開発者にとっては顧客をつなぎ止めるための最も強力な仕組みです。ひとりのモバイルユーザ宛てにメッセージをプッシュ送信するのは比較的単純(でWindows Azure Mobile Servicesを使えば現時点でも簡単に実現できる)ですが、数百万のユーザに遅延を少なくしつつ、同時にプッシュ通知して、さらにユーザがいる場所や利用しているプラットフォーム、パーソナライゼーションなどの現実世界の要件を満たすのはとても難しいことです。
Notification Hubsはプラットフォーム固有の通知テンプレートとサポートし、受信者は興味のあるトピックに“タグ”を付けることができる。スケーリングはWindows Azure Management Portalで“ユニット”の数を定義することで実現する。ひとつのユニットで100,000デバイスをサポートする。Microsoftはドキュメントと各プラットフォーム向けにSDKを提供している。
AWSもMicrosoftも新しいプラットフォームを使ったケーススタディを発表している。Werner Vogels氏はモバイルアプリケーションのパフォーマンス管理を行っているCrittercismがどのようにMobile Pushを使っているか説明する。
開発者は大規模なプッシュ通知を管理するのが大変で良いアプリケーションが作れないと言います。確かに、プッシュ通知の難しさが原因で提供したいと思っている機能を制限しなければならない場合もあります。例えば、Crittercismは6億台ものデバイスを管理するようになってタイムリーなプッシュ通知を行うのがとても大変になり、過去にはプッシュ通知を提供すること自体を辞めたこともあった、と言います。現在彼らは、Amazon SNSを使って顧客にプッシュ通知を提供しており、アプリの致命的な性能問題について数秒で通知しています。
Scott Guthrie氏もすべてのWindows 8デバイスに搭載されているBing NewsアプリがどのようにWindows Azure Notification Hubsを使っているか説明する。
Bing Newsアプリはユーザに新しいニュースを素早く通知する機能が必要です。この機能を実現するのはいくつかの理由でとても難しいです。
- 超大規模: すべてのWindows 8ユーザがこのアプリを利用します。したがってバックエンドは大量のニュース通知をしなければならない。
- トピックベースのメッセージ送信: 個々のユーザの興味に合わせたプッシュ通知には効率的なルーティングとトピックベースのメッセージ通知が必要。
- クロスプラットフォームデリバリ: 各プラットフォームで通知のフォーマットが異なり、すべてのプラットフォームのチャンネルやトークンを追跡するのはとても複雑になる。
Windows Azure Notification HubsはBing Newsに最適であり、Bing Newsアプリの最新の更新で、Notification Hubsを使って毎日、Windowsと Windows Phoneに大量のメッセージを通知するようになりました。
このふたつのサービスはどのような特徴を持っているか。次の表では簡単に両社のサービスを比較している。
Amazon SNS |
Windows Azure Notification Hubs |
|
サポートするプラットフォーム |
Amazon, iOS, Android | Windows 8, Windows Phone 8, iOS, Android |
メッセージ量の上限 |
ひとつのアカウントで3000トピックが上限。ひとつのトピックには10,000サブスクリプションが含まれるので、3000万のエンドポイントにメッセージを送信できる。これ以上のエンドポイントにメッセージを送信するにはダイレクトアドレッシングをする必要がある。 | サブスクリプション当たり、2,500ユニットが上限。 |
メッセージのカスタマイズ |
プラットフォーム固有のテンプレートをサポートする。 | ローカルの言語とデバイス固有のテンプレートを構成できる。 |
個別のデバイスへの送信 |
個別のデバイスへ送信できる。トピックスを使って特定の領域に関心のある人に送信することもできる | “タグ”付きメッセージを使って一部のデバイスにメッセージを送れる。個別のデバイスに送信することもできる。構成の必要はない。 |
キャパシティの監視 |
Amazon CloudWatchでさまざまなメトリクスを確認できる。 | 50近くのメトリクスが利用できる。 |
価格 |
100万のモバイル通知(64キロバイト)は無料、それ以降は100万当たり0.50ドル。 | 月間、500デバイスへの100000の通知が無料。ベーシック、スタンダードプランを使えばさらにスケールできる。 |