モバイルバックエンドとしての AWS Lambda まとめ #アドカレ2015

2015.12.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Lambda as a MBaaS

6a00d8341c534853ef01b8d12f93d8970c

今年は AWS Lambda に大きなアップデートがありました。また AWS Mobile Hub が発表されるなど、AWS モバイルにとっても大きな躍進の一年だったと思います。

いま、 AWS Lambda はコンテナベースのアーキテクチャの一歩先を進んでいます。マイクロサービス単位から関数 (Lambda function) 単位へのパラダイムシフトが起こりつつある、と言っても過言ではないでしょう。

そんな世界中の注目を浴びている AWS Lambda ですが、このサービスはモバイルバックエンドとしての側面も持っています。弊社ブログでは、AWS Lambda 発表当初からモバイルアプリと Lambda function を用いた 2-Tier アプリケーションの開発手法についてお伝えしてきました
そこで今回は AWS Lambda の モバイルバックエンドとしての利用方法 に絞って情報をまとめてみました。

目次

  1. AWS SDK を介した利用
  2. Amazon API Gateway を介した利用
  3. AWS Mobile Hub での利用
  4. まとめ

AWS SDK を介した利用

AWS Lambda function は AWS Mobile SDK から直接呼び出すことができます。
AWS Mobile SDK を使えば、モバイルアプリと AWS Lambda が直接やり取りをする 2-Tier アプリケーションを簡単に構築することが可能です。

Android-logo_t

また、 AWS Lambda function をモバイルアプリから直接叩く以外にも、AWS Mobile SDK から Amazon S3 や Amazon DynamoDB を操作して、発生したイベントを AWS Lambda でフックする方法があります。
この方法は AWS Mobile SDK が AWS Lambda に対応する前から使われていました。以下に紹介する記事は、まさにその時代に書かれたものです。

Lambda function を直接叩かないこの手法は現在でも利用されます。
MBaaS という観点から見ると、AWS Lambda はモバイルバックエンド API としての役割を持っています。一方で、各種 AWS リソースからのイベント駆動によるクラウドロジックの実行者としての AWS Lambda の役割も健在です。両者を使いこなせば、複雑な業務ロジックを持つモバイルバックエンドアプリケーションを構築することが可能です。

Amazon API Gateway を介した利用

今年(2015年)の7月に Amazon API Gateway が登場したのは記憶に新しいと思います。
これによって、Amazon API Gateway を使って AWS Lambda function を API 化して、モバイルアプリから AWS Mobile SDK のインクルードなしに叩くことができるようになりました。

モバイルバックエンドとして AWS Lambda を利用すること自体には変わりありませんが、 モバイルアプリからはオーソドックスな REST-API に見える点が異なります。

6a00d8341c534853ef01b8d136e31b970c-320wi

これらのサービスを使ってモバイルバックエンド API を構築したとします。モバイルバックエンドの利用者であるモバイルアプリから見ると、その API は HTTPS で提供される普通の REST-API にしか見えませんが、そこに EC2 などのコンピューティングシステムを介在させず AWS Lambda のみで構築することが可能です。

また上記の例では、モバイルアプリに AWS Mobile SDK を組み込む必要がありません。これはアプリケーション開発において非常に大きな意味を持ちます。
一般に、クライアントの実装(今回はモバイルアプリ)と サーバーの実装(今回は AWS Lambda )を疎結合にすることはクライアント・サーバ型アプリケーション開発のベストプラクティスの一つとされます。
更に掘り下げると、既知の小規模な開発チーム向け (Small Set of Know Developers) か未知の大規模な開発者向け (Large Set of Unknown Developers) かでプラクティスは異なりますが、最低限の疎さを保つ必要性は両者に共通して言えます。ここでいう「最低限の疎さ」とは 実装の隠蔽 を指します。 提供される API がどのような実装になっているのか(あるいは、どのようなアーキテクチャに依存しているのか)をクライアントが知っているべきではありません。 Amazon API Gateway の登場によって、1. AWS SDK を介した利用 では対処できなかったこの問題を正攻法で攻略可能になりました。

この他にも、Amazon API Gateway の登場によって達成可能になったことが多くあります。モバイルアプリ用のコード自動生成、API の一部を Proxy とする実装、HTML 形式のレスポンスなど挙げ始めればきりがないため、興味のある方は以下の特集カテゴリを参照下さい。

最後にもうひとつ、Amazon API Gateway の登場によって今まさに起こりつつある新たな潮流の JAWS Framework を紹介します。

jaws_icon

JAWS Framework は、 Amazon API Gateway と AWS Lambda を利用して API を作成するためのフレームワークです。JAWS では、Amazon API Gateway 登場時から課題となっていた AWS への API デプロイが自動化されています。興味のある方は、ぜひ上の記事を読んでみてください。

AWS Mobile Hub での利用

今年(2015年)の re:Invent で AWS Mobile Hub が発表されました
認証 (Cognito)、プッシュ通知 (Amazon SNS)、コンテンツ配信 (CloudFront, S3)、データストア (Cognito Sync, S3)、モニタリング (Mobile Analytics)、クラウドロジック (Lambda) などを包括したサービスです。現在のところ公開ベータですが、今後 AWS を MBaaS として利用する際の主流になっていく 可能性は非常に高いです。

aws-mobile-hub-5-638

AWS Mobile Hub の特徴は、利用するのに特別な知識を必要としない点です。Web 上の GUI でアプリケーションを設定・構築し、モバイルアプリ(iOS, Android それぞれの)プロジェクトを自動生成してダウンロードすることができます。

AWS Mobile Hub が包括する機能 (Cognito, CF, MA, SNS, Lambda……) を自ら利用して実装しようとすると、それぞれのサービスに対する深い理解が必要になり、開発者にとっては大きな負担になりかねません。AWS Mobile Hub を利用すると、その負担を大幅に軽減させることができます。

どうやって使うのか、GUI の画面がどんな感じになっているのか、なども含めて上の記事が非常に詳しいです!
AWS Mobile Hub に興味を持った方は、ぜひ読んでみてください。

ちなみに、今回のアドベントカレンダー2015:AWSモバイルにはすでに複数の AWS Mobile Hub に関する投稿があります。興味のある方はぜひ!

まとめ

今回は AWS Lambda のモバイルバックエンドとしての側面についてまとめました。

さて、アドベントカレンダー2015:AWSモバイルはまだまだ続きます。
ちなみに明日(12/11)もまた AWS Lambda ネタです!
田中孝明の AWS Lambda に関する記事にバトンタッチします。ではまた!