by shigemk2

当面は技術的なことしか書かない

Lambda × Mobileの可能性 #LambdaMeetup

アンダースコア (クラスメソッドの子会社)

モバイルから直接使えるAWSサービス

  • Cognito(認証)
  • DynamoDB(データストア)
  • S3(ストレージ)
  • SNS(プッシュ通知)
  • Mobile Analytics(行動分析)
  • Kinesis(データストリーmキング)
  • SQS(分散キュー)

2 Tierではちょっと使いづらい

  • サービスが粗結合
  • 実装がつらい
  • アプリに実装する場合はAndroid iOSのそれぞれの実装が必要
  • サーバーレスでなければSDKの真価が発揮できない

そこでLambda

  • イベントドリブン
  • サービス同士の連携
  • サーバーレス

写真管理

  • モバイルからS3で保存
  • メタデータを抜き出してDynamoDB
  • モバイルからS3オブジェクトとメタデータを取得

構成

Credential取得(顔本尼先生のアカウント) 写真ファイルを保存し取得→イベント発火→ラムダ メタデータ取得→メタデータ保存→ラムダ

Like機能

  • 顔本のいいね的なアレ
  • DynamoDBにToとFromを保存
  • EC2を立てなくても機能が作れる

キャンペーン配信

  • イベント告知やクーポン配信など
  • モバイルからユーザー通信をDynamoDBに送信

Lambdaがモバイルアプリで活用できそう

でも本当にサーバーレスでいけるの?

  • イベントドリブンではあるが、要件によってはイベントが足りない
  • モバイルから実行させたくない処理
  • RDSのデータ読み書き
  • アクセス権限付与(Lambdaを使うことで)

つまり、iOSからLambda FunctionをInvokeAsyncしたい人生だった

でも AWS SDK for iOSは未対応 →Forkして実装を修正する力業

http://aws.amazon.com/jp/sdkforios/

なぜかInvokeAsyncが成功しない

課題

  • 対応しているイベントが少ない(SNSのサポート)
  • Functionの実行結果を受け取れない
  • 非同期で処理が行われている
  • SQSやSNSの併用
  • バッチ処理ができない
  • S3で状態管理などの実装が必要

まとめ

  • Lambdaのモバイル活用は今後に期待
  • AWS Mobile SDKも今後に期待