モバイル&クラウド開発に最適 AWS Mobile サービスご紹介 ·...

57
モバイル&クラウド開発に最適 AWS Mobile サービスご紹介 Takayuki Shimizu Solutions Architect, Amazon Data Services Japan, K.K. AWS Summit Tokyo 2015 - Developer Conference - 2015. 6. 3

Transcript of モバイル&クラウド開発に最適 AWS Mobile サービスご紹介 ·...

モバイル&クラウド開発に最適AWS Mobile サービスご紹介

Takayuki ShimizuSolutions Architect, Amazon Data Services Japan, K.K.

AWS Summit Tokyo 2015 - Developer Conference - 2015. 6. 3

自己紹介清水 崇之

– アマゾン データ サービス ジャパン 株式会社• ソリューション アーキテクト

– 西日本担当(大阪のお客様にもプライム対応!だけどプライスレス)– ゲーム、モバイル、Web サービス全般– AWS 芸人 (詳しくは http://www.slideshare.net/shimy_net)

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

あなたのモバイルアプリの特徴は?

あなたがもっとも時間をかけている部分は?

質問

あなたのモバイルアプリの特徴は?

あなたがもっとも時間をかけている部分は?

質問

になりましたか?

あなたのモバイルアプリの特徴は?

あなたがもっとも時間をかけている部分は?

質問

時間をかけるべき部分に時間をかけられているかをチェックする質問です

実際は、課題がいっぱい

開発者が直面する課題

複数のプラットフォーム スケーラビリティの確保 高コストな管理や運用 ユーザ体験の阻害 ユーザIDの管理

モバイルアプリのコードユーザID管理、認証

ユーザデータの同期処理非同期通信

アクティブデバイスの分析ユーザ行動の分析

コンバージョンの分析プッシュ通知

イベントトリガープラットフォームごとのはっきりしない仕様

データチェックと変換ファイルやメディアのストレージ共有データベースのストレージ

データコレクションその他さまざま….

AWS Cloud インフラストラクチャ

実際は、課題がいっぱい

開発者が直面する課題

複数のプラットフォーム スケーラビリティの確保 高コストな管理や運用 ユーザ体験の阻害 ユーザIDの管理

モバイルアプリのコードユーザID管理、認証

ユーザデータの同期処理非同期通信

アクティブデバイスの分析ユーザ行動の分析

コンバージョンの分析プッシュ通知

イベントトリガープラットフォームごとのはっきりしない仕様

データチェックと変換ファイルやメディアのストレージ共有データベースのストレージ

データコレクションその他さまざま….

AWS Cloud インフラストラクチャ

時間とお金は有限

クラウドを活用して課題を解決

管理 &セキュリティ

アクセスコントロール

Identity Management

キー管理& ストレージ

モニタリング& ログ

リソース &利用の監査

プラットフォームサービス

分析 アプリケーション 開発者ツール & 運用 モバイル

DataPipelines

データウェアハウス

Hadoop

Real-timeStreaming Data

アプリケーションライフサイクル管理

コンテナ

デプロイ

DevOps

イベント駆動コンピューティング

リソーステンプレート

ユーザ認証

アナリティクス

プッシュ通知

データ同期

App Streaming

Eメール

キュー&通知

検索

トランスコーディング

Workflow

コアサービス CDNコンピュート(VMs, Auto-scaling & Load Balancing)

データベース(Relational, NoSQL, Caching)

ネットワーク(VPC, DX, DNS)

ストレージ(Object, Block and Archival)

インフラストラクチャ アベイラビリティゾーン Points of Presence

リージョン

エンタープライズアプリケーション ビジネスEメー

ル共有&コラボレーション仮想デスクトップ

技術 & ビジネスサポート

アカウントマネージメント

パートナーエコシステムプロサービス セキュリティ

料金レポートソリューションアーキテクトサポート トレーニング

資格

AWS が提供する 40 以上のサービス

AWS Mobile サービス

Amazon Cognito

Kinesis DynamoDB S3 SQS SES

グローバルインフラ

コアとなるサービス群

モバイルに最適化されたコネクタ

モバイルに最適化されたサービス

AWS SDK for Android

ストレージ ネットワーク データベース 分析 コンピュート

AWS Mobile SDK

Amazon Mobile Analytics Amazon SNS Mobile Push

AWS SDK for iOS AWS SDK for Unity

あなたのモバイルアプリ

ゲームアプリ ユーティリティアプリ 家計簿アプリ クーポンアプリ

Lambda

λLambda Functions

λλ

AWS Mobile サービス

Amazon Cognito

Kinesis DynamoDB S3 SQS SES

グローバルインフラ

コアとなるサービス群

モバイルに最適化されたコネクタ

モバイルに最適化されたサービス

AWS SDK for Android

ストレージ ネットワーク データベース 分析 コンピュート

AWS Mobile SDK

Amazon Mobile Analytics Amazon SNS Mobile Push

AWS SDK for iOS AWS SDK for Unity

あなたのモバイルアプリ

ゲームアプリ ユーティリティアプリ 家計簿アプリ クーポンアプリ

Lambda

λLambda Functions

λλ

ユーザアイデンティティデータ同期

アナリティクスレポート プッシュ通知

NoSQLデータベース断続的なネットワークコネクションを処理できるレコーダー

コンテンツのアップロード, ダウンロード

Eメール分散キュー

バックエンドサーバーなしで実行できるステートレスなクラウド関数

AWS Mobile サービス

Amazon Cognito

Kinesis DynamoDB S3 SQS SES

グローバルインフラ

コアとなるサービス群

モバイルに最適化されたコネクタ

モバイルに最適化されたサービス

AWS SDK for Android

ストレージ ネットワーク データベース 分析 コンピュート

AWS Mobile SDK

Amazon Mobile Analytics Amazon SNS Mobile Push

AWS SDK for iOS AWS SDK for Unity

あなたのモバイルアプリ

ゲームアプリ ユーティリティアプリ 家計簿アプリ クーポンアプリ

Lambda

λLambda Functions

λλモバイルプラットフォームに合わせて

AWS SDK を利用

どのようにモバイルアプリを作るか?

ユーザ認証

アクセスの認可

データの同期

ユーザ行動分析

メディアの管理

メディアの配信

プッシュ通知の送信

共有データの保存

モバイル

アプリ

モバイルアプリの課題を AWS サービスで解決

Amazon Cognito(Identity)

AWS Identity and Access Management

Amazon Cognito (Sync)

Amazon Mobile Analytics

AWS Lambda

Amazon CloudFront(Device Detection)

Amazon DynamoDB(Object Mapper)

Amazon Kinesis(Recorder)

Amazon SNS Mobile Push

AWS Mobile SDK

Amazon S3Transfer Manager

ストリームリアルタイムデータビジネスロジックの実行

モバイルサービスと2-Tier アーキテクチャ

仮想サーバー(EC2)を利用せずに、クライアントから直接 AWS のサービスを利用する。2-Tier アーキテクチャとは?

従来 アーキテクチャ 2-Tier アーキテクチャ

・認証API・データ保存API

Amazon Cognito(認証)

Amazon DynamoDB(データ保存)

Web DB

バッチ

プッシュ通知

Amazon SNS Mpbile Push(プッシュ通知)

プッシュ通知

AWS Lambda(ロジック)

LB

Followers

たとえば、写真共有モバイルアプリ

4. メタデータをDynamoDBに登録- タイトル、コメント等

1. 認証・認可・ FBアプリと連携

6. Push通知- フレンドやフォロワーに通知

Cognito

Mobile Analytics

DynamoDB

S3

SNS7. 画像をポストしたことをAnalyticsに登録

3. 画像のリサイズ

2. S3への画像アップロード

5. 結果をSNSへ通知

App with AWS Mobile

SDK

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

AWS Mobile SDK

クロスプラットフォーム– Android, Fire OS, iOS, Unity をサポート

共通の認証– Amazon Cognito により認証機構を迅速に導入可能

ネットワーク状態を自動でハンドリング– 例: ローカルキャッシュによりオフラインでも利用可能

メモリフットプリントの削減– 導入するパッケージをサービス単位で選択可能

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

Amazon Cognito

ユーザIDとアクセス管理の簡略化

クロスデバイス、クロスプラットフォームのデータ同

Guest

独自認証

ID プロバイダゲストアクセス独自認証システム

ユニーク ID

ジョー アンナ ボブ

デバイスプラットフォーム

AWS サービス

独自認証システムID プロバイダによる認証ではなく独自の Username と Password で認証

複数の ID プロバイダID プロバイダと簡単に連携して認証Amazon, Facebook, Twitter, Google, OpenID Connect などに対応

ゲストユーザアクセスアカウント作成やログインを必要とせず、セキュアに AWS サービスを利用でき、アプリの特徴を損なわない。”モノ”の ID として

Amazon Cognito Identity

Mobile Analytics

S3 DynamoDB Kinesis

DynamoDBモバイルアプリ

Amazon CognitoIdentity

Cognito IDTemp Credentials

S3

Access TokenPool ID

Role ARNs

Temp Credentials

Mobile SDK

IDプロバイダ

Kinesis

Cognito による認証のフローID プロバイダや独自認証システムと連携して認証することで、任意のポリシーを持った一時的なクレデンシャルが発行され、AWS リソースを利用する。

Amazon Cognito Identity

ゲストアクセス

独自の認証システム

セキュリティ

細やかなアクセス制御IAM との連携で AWS リソースへの細かなアクセス制御を実現

AWS Credentials の保護必要な権限だけを付与された一時的なクレデンシャルを取得できるので、アプリにクレデンシャルを埋め込まなくてよい

セキュリティのベストプラクティスを支援セキュリティトークンサービスと連携したり、トークンベンディングマシンを構築する必要はないセキュアに AWS サービスを利用

EC2 S3 DynamoDB Kinesis

S3

DynamoDB

Get Delete Put

Amazon Cognito

ユーザIDとアクセス管理の簡略化

クロスデバイス、クロスプラットフォームのデータ同

Guest

独自認証

Amazon Cognito Sync クラウドへのデータ保存と同期

User Data Storage andSync

Any Platform

iOS/Android/FireOS

アプリのデータ、設定、状態などを保存アプリやデバイスのデータをクラウドに保存でき、ログイン後にマージされる

クロスデバイス、クロスプラットフォームで同期ユーサデータや設定をデバイスをまたいで同期

k/v data

Identity pool

ユーザあたり 20MB 各データセットは 1MB までの Key/Value最大 1024 Key まで保存バイナリデータは Base64 でエンコードして保存

SDKローカルデータストア

オフライン動作データはまずローカルのデータストレージに保存されるので、電波が不安定もしくは不通であってもシームレスに動作できる

インテリジェントな同期処理同期メソッドはローカルとクラウドのデータのバージョンを比較して、データをプッシュ/プル

柔軟なコンフリクトの解決同期メソッドは、変更を読み取り後、ローカルの変更をクラウドのデータストアへ書き込む。デフォルトでは、最後の書き込みを有効として保存する。開発者はコンフリクト処理を独自に上書きして実装することもできる。

Amazon Cognito Sync クラウドへのデータ保存と同期

AWS Account

Dataset

IdentityIdentityIdentity

DatasetDataset

IdentityPool

1:n

1:n

1:n

ユーザ情報Dataset

ゲーム状況Dataset

お役立ちアプリ

ゲームアプリ

DatasetDatasetKey/Value

1:n

Amazon Cognito Sync データモデル – 例

モバイルアプリ(デバイス1)

Mobile SDK

Amazon CognitoSync Store

1. データ同期

モバイルアプリ(デバイス2)

Mobile SDK

Amazon SNSMobile Push

2. プッシュ通知

3. データ同期

Amazon SNS Mobile Push との連携Amazon Cognito がデータストアが更新されたタイミングで、Amazon SNS Mobile Push と連携して、各デバイスにプッシュ通知を送信できる。プッシュ通知を受け取ったアプリはデータストアの再同期を行うように実装するなど。

Amazon Cognito Push Sync

Amazon Kinesis との連携Amazon Cognito のデータストアが更新されたタイミングで、Amazon Kinesis ストリームで更新や同期のデータを受け取ることができる。

モバイルアプリ

Mobile SDK

Amazon CognitoSync Store

1. データ同期Amazon Kinesis

2. StreamContent

ストリームの内容

3. 例えば

Amazon Redshift

{"identityPoolId" : "Pool Id”"identityId" : "Identity Id ”"dataSetName" : "Dataset Name”"operation" : "(replace|remove)”"kinesisSyncRecords" : [

{"key" : "Key","value" : "Value","syncCount" : 1,"lastModifiedDate" : 1424801824343,"deviceLastModifiedDate" : 1424801824343,"op": "(replace|remove)" }, ...

],"lastModifiedDate": 1424801824343,"kinesisSyncRecordsURL": "S3Url","payloadType" : "(S3Url|Inline)","syncCount" : 1 }

Amazon Cognito Stream

モバイルアプリ

Mobile SDK Amazon CognitoSync Store

1. データ同期AWS Lambda

2. Sync Trigger

Amazon Lambda との連携

3. 何か処理

Amazon Cognito Events

Key Value住所 大阪市□北区□中之島

Key Value住所 大阪市北区中之島

元データ

修正済みデータ空白を削除

するプログラム

Lambda Function(Node.js)

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

モバイルプッシュ通知とは

1

いいえ はい

キャンペーン情報が届きました。メッセージを閲覧し

ますか?

バッジ サウンド メッセージ

通知は各プラットフォーム独自の仕組みで送信

送信者 モバイルアプリ

モバイルプラットフォーム

(e.g. Apple, Google,

Amazon)

そのため、プラットフォームごとのAPIを抽象化した中間プロバイダを利用するのが一般的

中間プロバイダ

送信者

モバイルアプリ

Apple APNS

Google GCM

Amazon ADM

プラットフォームを抽象化することの メリット/デメリット

どのプラットフォームのアプリに対しても簡単に送信できる

信頼性のある通知の管理ができる

運用の複雑化

スケーラビリティの確保

堅牢性の確保

コスト – プラットフォーム側が無料だとしても

メリット デメリット

けんろうせい

プラットフォームを抽象化することの メリット/デメリット

どのプラットフォームのアプリに対しても簡単に送信できる

信頼性のある通知の管理ができる

運用の複雑化

スケーラビリティの確保

堅牢性の確保

コスト – プラットフォーム側が無料だとしても

メリット デメリット

けんろうせい

Amazon SNS Mobile Push なら 大丈夫

Amazon SNS Mobile Push はプラットフォーム横断型プッシュ通知のための中間マネージドサービス

Amazon SNSMobile Push

Apple iOS

Google Android

Amazon Kindle Fire

送信者Baidu Android

MS Windows Phone

Apple

Kindle Fire

WindowsPhone

Google

Publish

Apple

Kindle Fire

WindowsPhone

Google

Publish

プラットフォーム特有のメッセージペイロードを送ることも可能

一度のPublish指示であらゆる端末へプラットフォームそれぞれに異なるペイロードを送信

デバイスごとに異なるメッセージを送ることも、グループに一斉通知をすることも可能

Publish

Publish

Publish

Publish

デバイスごとに直接通知 トピックによる一斉通知

1トピックあたり最大1,000万サブスクリプション(緩和可)3,000トピックまで作成可

Topic

各プラットフォームからのフィードバックをもとにトークンの入れ替えや無効化を自動実行

Amazon SNSMobile Push

トークンの登録

トークンのフィードバック

送信者 モバイルアプリ

モバイルプラットフォーム

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

Amazon Mobile Analytics

アプリ利用状況に関するデータを収集、可視化• すぐに導入でき高速に集計できる• クロスデバイス/クロスプラットフォーム• 高いスケーラビリティ(100 万ユーザーの 1 億イベントを収集しても問題ない

一般的に利用されるメトリクスは自動的に計測• DAU、MAU、NU、Sticky Factor(DAU÷MAU)、ARPDAU、ARPPDAU • Session数と DAU当たりの平均セッション数• 1, 3, 7日のRetention、1, 2, 3週の Retention

データの所有• 収集したデータは再利用されない

グラフィカルなレポートとCSV形式のデータダウンロード

Key Business Metrics

1. Monthly Active Users (MAU)

2. Daily Active Users (DAU) 3. New Users, 4. Daily Sessions, 5. Sticky Factor, 6. 1-Day Retention, 7. Avg. Revenue per DAU, 8. Daily Paying Users,9. Avg. Paying DAU

重要なビジネス指標の計測

Retention

ユーザー維持率は、マーケティングキャンペーン、新しい機能の追加、UXの変更、アプリアップデートなどによる集客状況を判断するための重要な指標

新規ユーザーが日次/週次でどれだけ再訪問したかを計測するための4つのチャートを提供

ユーザー維持率の計測(Retention)

アプリを特徴づけるような特定のユーザー行動も解析可能

カスタムイベントがどれだけ発火したかをレポートし、それぞれのカスタムイベントに属性とメトリクスをさらにコンテキストを追加可能

ニュースアプリで記事ごとの「いいね数,シェア数」の計測

ゲームアプリでステージごとの「脱落ユーザー数」の計測

ミュージックアプリでユーザセッションごとの「再生曲数」の計測

ショッピングアプリで「人気アイテム」の計測

カスタムイベント

S3/Redshift へデータ連携(CFn でスタックを自動生成)

モバイルアプリ

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

AWS CloudFormation

外部データ例)ユーザーマスタ、商品マスタ

ビジュアリゼーション& カスタムクエリ

Amazon EC2

COPY

EMR や Glacier など他サービスとも連携

Hadoop/SparkAmazon EMR

Amazon Glacier

アーカイブ

バッチ

モバイルアプリ

Amazon S3

Amazon Redshift

Amazon Mobile Analytics

料金

• 月あたり 100 万回の同期オペレーション

• 月あたり 10 GB のデータストア

• 月あたり 100 万リクエストまで

• 月あたり同期オペレーション 10000 回の同期オペレーションあたり $0.15

• 月あたり同期用データストア 1GB あたり$0.15

• 月あたり 100 万リクエストにつき $1

• 月あたり 1 億イベントまで

• 月あたり 100 万イベントにつき $1

Amazon Cognito Amazon SNS Mobile Push

Amazon Mobile Analytics

無料利用枠(最初の

12 ヶ月)

それ以降

アジェンダ

• AWS Mobile サービスの紹介– サービスの概要– AWS Mobile SDK

• モバイルに最適化されたサービス– Amazon Cognito– Amazon SNS Mobile Push– Amazon Mobile Analytics

• まとめ

ユーザ認証

アクセスの認可

データの同期

ユーザ行動分析

メディアの管理

メディアの配信

プッシュ通知の送信

共有データの保存

モバイル

アプリ

まとめ:モバイルアプリの課題を AWS サービスで解決

Amazon Cognito(Identity)

AWS Identity and Access Management

Amazon Cognito (Sync)

Amazon Mobile Analytics

AWS Lambda

Amazon CloudFront(Device Detection)

Amazon DynamoDB(Object Mapper)

Amazon Kinesis(Recorder)

Amazon SNS Mobile Push

AWS Mobile SDK

Amazon S3Transfer Manager

ストリームリアルタイムデータビジネスロジックの実行

まとめ:AWS を活用して本来の業務に集中!!

開発者が直面する課題

複数のプラットフォーム スケーラビリティの確保 高コストな管理や運用 ユーザ体験の阻害 ユーザIDの管理

モバイルアプリのコードユーザID管理、認証

ユーザデータの同期処理非同期通信

アクティブデバイスの分析ユーザ行動の分析

コンバージョンの分析プッシュ通知

イベントトリガープラットフォームごとのはっきりしない仕様

データチェックと変換ファイルやメディアのストレージ共有データベースのストレージ

データコレクションその他さまざま….

AWS Cloud インフラストラクチャ

まとめ:AWS を活用して本来の業務に集中!!

開発者が直面する課題

複数のプラットフォーム スケーラビリティの確保 高コストな管理や運用 ユーザ体験の阻害 ユーザIDの管理

モバイルアプリのコードユーザID管理、認証

ユーザデータの同期処理非同期通信

アクティブデバイスの分析ユーザ行動の分析

コンバージョンの分析プッシュ通知

イベントトリガープラットフォームごとのはっきりしない仕様

データチェックと変換ファイルやメディアのストレージ共有データベースのストレージ

データコレクションその他さまざま….

AWS Cloud インフラストラクチャ

AWS を活用してアプリの差別化

あなたのモバイルアプリの特徴は?

あなたがもっとも時間をかけている部分は?

ゴール