プログラマでありたい

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

AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える

 今年の夏に発表されたAmazon API Gatewayから、モバイルアプリのバックエンドについてのアーキテクチャのあるべき形を検討しておりました。自分の中ではある程度の結論が出ていて、幾つか実験的に構築して満足する結果は出ております。ところが、先日のreInventでAWS Mobile Hubが発表されたことにより少し混乱することになりました。AWSが勧めるアーキテクチャはどんな形なんだと。ということで、一旦整理してみます。まずは、API Gateway・Mobile Hubを使ったパターンのそれぞれの比較です。

Amazon API Gateway



 API Gatewayを利用した場合は、モバイルアプリからのAWSリソースの利用はAPI Gatewayを経由することになります。また実際にはAPI Gateway⇒Lambda or API Gateway⇒Lambda⇒他のAWSリソースという形になります。
f:id:dkfj:20151014011737p:plain

 この形式のメリットは、モバイルアプリ側はAWS側を全く意識しないでよいところです。APIを通じているので、モバイルアプリとしては通信先がAWSであろうが別のサーバであろうと意味がないからです。また逆にAPI側としては、クライアント側はモバイルアプリであろうがJavaScriptなど複数のプラットフォーム&アプリから呼び出しても問題ありません。
 またAPI GatewayからAWSリソースの呼び出しを制御するため、ロジックがAWS側に集中することになります。このため、iOSやAndroidの2つのOSに対応した場合でも、実装の段階でのロジックの差異が入り込みにくいというメリットがあります。また、アプリリリース後にもサーバ側の変更でロジックが変更できるというのもメリットかもしれません。

AWS Mobile Hub



 Mobile Hubは、利用するサービスを選択すると、iOS・Android向けのソースコードをそれぞれ生成してくれます。開発者は、そのコードを元にアプリ特有のロジック部分を実装します。そして、アプリのデプロイを行います。AWSのリソースは、モバイルアプリから直接コントロールすることになります。
f:id:dkfj:20151014011748p:plain

 この形式のメリットは、モバイルアプリ側でほぼ完結して開発できることになります。またAPI Gatewayであげたように、複数のプラットフォームをサポートしないでよい場合は、こちらの方が効率的です。それ以外にも直接AWSのリソースを扱うため、オーバヘッドが少なくAPI Gatewayより通信効率・レスポンス性は高くできる可能性はあります。

関係するセッション



 この辺り、どちらを使えばよいか解説しているセッションないかなぁと探したのですが、今見た限りあまりないです。下記のスライドで少し触れているくらいです。 www.slideshare.net

どちらを利用すべきか



 今のところ、前提条件次第だと思います。下記のような観点で検討すべきかと思います。

  • 複数のプラットフォームをサポートする必要があるか
  • ロジックは、複雑か?
  • ロジック変更の頻度
  • レスポンス性が最重要の項目か

 私が担当するアプリでは、クロスプラットフォームで、かつサーバ側からのレスポンスについてもそこまで求められないものが多いので、API Gatewayに利点を感じています。複数人で開発することが多いので、ロジック部分を集約しやすいのもメリットですね。

感想



 今回、AWS内で設計思想が異なるサービスが出てきたので少しびっくりしました。考えてみると、前提条件が異なると最適なアーキテクチャが変わってきます。それをサポート出来る多様性が増したのだな思います。サーバレスアーキテクチャも色々なパターンが出てきそうな予感ですね。楽しみです。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る