Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

モバイル開発を支えるAWS Mobile Services

21,519 views

Published on

JAWS DAYS 2015で登壇した際のスライドです。

Published in: Engineering
  • Be the first to comment

モバイル開発を支えるAWS Mobile Services

  1. 1. モバイル開発を⽀支える AWS  Mobile  Services   2015.03.22   Amazon  Data  Service  Japan,      Solutions  Architect      Keisuke  Nishitani(@Keisuke69)
  2. 2. Twi$erでJaws  Daysに参加しよう!   たくさんリツイートされた⼈人にプレゼント!   @jawsdays 参加⽅方法は簡単!3ステップ   @awscloud_jp + #jawsdaysをつけてツイート投稿! 1番リツイート数を集めた⼈人が   優勝者です! AWS公式Twi0erとJAWS  DAYS公式Twi0erをフォロー ?? 17:00〜~の懇親会で優勝者発表です。   ※9:00〜~16:50のTweetが対象です。 + Kindle JAWS  Tシャツ + ウェアラブル   Moff  Band JAWS  Tシャツ Step  1   (参加条件になります) Step  2   Step  3   (Jaws  Daysに関する投稿なら何でもOK!) JAWS  Tシャツ
  3. 3. ⾃自⼰己紹介 !   名前 •  ⻄西⾕谷圭介 •  @Keisuke69 !   ロール •  ソリューションアーキテクト •  WebサービスやEC、スタートアッ プを担当 •  モバイルなどアプリ寄りなプロダ クトを担当
  4. 4. モバイル開発における課題
  5. 5. モバイル開発における課題 デベロッパーが直⾯面している課題 複数プラットフォームの利利⽤用 スケーラブルな同期処理理の実装 運⽤用管理理コスト ユーザエクスペリエンスの喪失 ユニークなユーザIDの管理理 アプリケーションごとに決められた予算 Undifferentiated  Heavy  Lifting モバイルアプリケーション ID管理理 ユーザの認可 データ同期 ⾮非同期通信 アクティブなデバイスの分析 ユーザの⾏行行動分析 エンゲージメントの分析 Push通知 ファイル/メディア保管⽤用ストレージ データベース データの収集   And  More…. AWS  Cloud  Infrastructure
  6. 6. AWS Mobile Services Amazon  Cognito Kinesis  Connector DynamoDB  Mapper S3  Transfer  Mgr SQS  Client SES  Client グローバルインフラ (リージョン、アベイラビリティゾーン、エッジロケーション) コアとなるサービス群 モバイルに最適化 されたコネクタ モバイルに最適化 されたサービス お客様のモバイルアプリ、ゲーム、デバイス AWS  Mobile  SDK,  API  Endpoints,  Management  Console コンピュート ストレージ ネットワーク 分析 データベース 統合されたSDK Amazon  Mobile  Analytics Amazon  SNS  Mobile  Push AWS  Lambda
  7. 7. ユーザ認証 ユーザの管理理や IDプロバイダとの連携 アクセスの認可 クラウドリソースへの セキュアなアクセス データの同期 ユーザ設定等の複数 デバイス間での同期 ユーザの⾏行行動分析 アクティブユーザや エンゲージメントの追跡 保持率率率の追跡 ファンネルやキャペーン 効果の管理理 メディアの管理理 ユーザが投稿した写真やその他 メディアの保存と共有 メディアの配信 モバイルデバイスの⾃自動識識別と 素早く、グローバルなコンテンツの配信 プッシュ通知の送信 ユーザをアクティブに保つための信頼性の⾼高い メッセージ送信 共有データの保存 複数ユーザ、デバイス間における共有データの 保存と⾼高速な検索索 データのリアルタイム解析 リアルタイムなクリックストリームやログ等の 収集とそれに対する素早いアクションの実施 Your   Mobile   App
  8. 8. ユーザ認証 アクセスの認可 データの同期 ユーザの⾏行行動分析 保持率率率の追跡 メディアの管理理 メディアの配信 プッシュ通知の送信 共有データの保存 データのリアルタイム解析 Amazon  Cognito (Identity  Broker) AWS  Identity  and   Access  Management Amazon  Cognito   (Sync) Amazon  Mobile   Analytics Amazon  Mobile   Analytics Amazon  S3 Transfer  Manager Amazon  CloudFront (Device  Detection) Amazon  DynamoDB (Object  Mapper) Amazon  Kinesis (Recorder) Amazon  SNS   Mobile  Push Your   Mobile   App AWS  Mobile  SDK
  9. 9. ユーザ認証 アクセスの認可 データの同期 ユーザの⾏行行動分析 保持率率率の追跡 メディアの管理理 メディアの配信 プッシュ通知の送信 共有データの保存 データのリアルタイム解析 Amazon  Cognito (Identity  Broker) AWS  Identity  and   Access  Management Amazon  Cognito   (Sync) Amazon  Mobile   Analytics Amazon  Mobile   Analytics Amazon  S3 Transfer  Manager Amazon  CloudFront (Device  Detection) Amazon  DynamoDB (Object  Mapper) Amazon  Kinesis (Recorder) Amazon  SNS   Mobile  Push Your   Mobile   App AWS  Mobile  SDK
  10. 10. Amazon  Cognito !   シンプルなアイデンティティの管理理 •  複数のIDプロバイダや独⾃自認証基盤との連携 •  パブリックなIDプロバイダを利利⽤用することで認証基盤の実装が不不要 •  ユニークIDの作成と管理理、識識別 •  クロスプラットフォーム、クロスデバイスで⼀一意のIDとして識識別 •  AWS  SDKを利利⽤用する際のセキュリティのベスト・プラクティス実装が簡単に !   デバイスをまたいだデータ同期 •  ローカルに保存したデータのクラウドへのセキュアな同期 •  クロスプラットフォーム、クロスデバイスでデータを同期 •  あらゆるデータをKey/Value形式で保存可能 •  アプリケーションはオフラインでも機能
  11. 11. Cognito  Identity: AWSサービスへのゲートウェイ Amazon Cognito (AWS IAM / STS) Java Python (boto) PHP .NET Ruby iOS Android JavaScript JavaScript
  12. 12. ユーザ認証 アクセスの認可 データの同期 ユーザの⾏行行動分析 保持率率率の追跡 メディアの管理理 メディアの配信 プッシュ通知の送信 共有データの保存 データのリアルタイム解析 Amazon  Cognito (Identity  Broker) AWS  Identity  and   Access  Management Amazon  Cognito   (Sync) Amazon  Mobile   Analytics Amazon  Mobile   Analytics Amazon  S3 Transfer  Manager Amazon  CloudFront (Device  Detection) Amazon  DynamoDB (Object  Mapper) Amazon  Kinesis (Recorder) Amazon  SNS   Mobile  Push Your   Mobile   App AWS  Mobile  SDK
  13. 13. Amazon  SNS Cross-‐‑‒ platform   Mobile  Push   Internet Apple  APNS Google  GCM Amazon  ADM Windows  WNS   and  MPNS Baidu  CP 業界初! Amazon  SNS  Mobile  Push !   世界中のクロスプラットフォームのユーザにプッシュ通知を送信可能 !   標準で1000万デバイスまでの同報通知 Android  Phones  and  Tablets Apple  iPhones  and  iPads Kindle  Fire  Devices Android  Phones  and  Tablets  in  China iOS Windows  Desktop  and  Windows  Phone  Devices
  14. 14. ユーザ認証 アクセスの認可 データの同期 ユーザの⾏行行動分析 保持率率率の追跡 メディアの管理理 メディアの配信 プッシュ通知の送信 共有データの保存 データのリアルタイム解析 Amazon  Cognito (Identity  Broker) AWS  Identity  and   Access  Management Amazon  Cognito   (Sync) Amazon  Mobile   Analytics Amazon  Mobile   Analytics Amazon  S3 Transfer  Manager Amazon  CloudFront (Device  Detection) Amazon  DynamoDB (Object  Mapper) Amazon  Kinesis (Recorder) Amazon  SNS   Mobile  Push Your   Mobile   App AWS  Mobile  SDK
  15. 15. Amazon  Mobile  Analytics !   利利⽤用状況に関するデータを⼤大規模に収集、可視化して把握することが可能 !   グラフィカルなレポートとデータを提供 •  アプリケーション側はAmazon  Mobile  SDKを組み込むだけ •  CSVでのダウンロード以外に⽣生データのS3/Redshiftへの⾃自動エクスポートも可能 !   ⾼高速かつスケーラブル •  データを受け取ったら60分以内にレポート反映 •  数百万のユーザーからの数⼗十億イベント/⽇日を収集・処理理可能 !   クロスプラットフォーム •  各種デバイス、OS(Android,  iOS,  FireOS)からデータを送信可能 •  AWS  SDK  for  JavaScriptでもサポート
  16. 16. ユーザ認証 アクセスの認可 データの同期 ユーザの⾏行行動分析 保持率率率の追跡 メディアの管理理 メディアの配信 プッシュ通知の送信 共有データの保存 データのリアルタイム解析 Amazon  Cognito (Identity  Broker) AWS  Identity  and   Access  Management Amazon  Cognito   (Sync) Amazon  Mobile   Analytics Amazon  Mobile   Analytics Amazon  S3 Transfer  Manager Amazon  CloudFront (Device  Detection) Amazon  DynamoDB (Object  Mapper) Amazon  Kinesis (Recorder) Amazon  SNS   Mobile  Push Your   Mobile   App AWS  Mobile  SDK
  17. 17. AWS  Mobile  SDK !   全てのサービスに共通の認証機構 !   オンライン・オフラインを⾃自動でハンドリング !   クロスプラットフォームのサポート: Android,  iOS,  Fire  OS,  Unity,  Xamarin !   Mobile  OSへの最適化   •  例例:  ローカルオフラインキャッシュを利利⽤用するアーキテクチャ !   モバイルに最適化されたクライアントライブラリ •  Amazon  DynamoDB  Object  Mapper •  Amazon  S3  Transfer  Manager •  Amazon  Kinesis  Recorder !   メモリフットプリントの削減 •  導⼊入するパッケージをサービス単位で選択することが可能
  18. 18. DynamoDB  Clientの初期化(Android) AWSCredentials credentials = AmazonSharedPreferencesWrapper .getCredentialsFromSharedPreferences(this.sharedPrefe rences); AmazonDynamoDBClient ddb = new AmazonDynamoDBClient(credentials); DynamoDBMapper mapper = new DynamoDBMapper(ddb);
  19. 19. マッピングクラスの⽤用意(Android) @DynamoDBTable(tableName = "TestUserPereference") public static class UserPreference { private int userNo; private String firstName;       ・・・省省略略・・・ @DynamoDBHashKey(attributeName = "userNo") public int getUserNo() { return userNo; } public void setUserNo(int userNo) { this.userNo = userNo; } @DynamoDBAttribute(attributeName = "firstName") public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } ・・・省省略略・・・ }
  20. 20. データの保存/リスト(Android) //保存 UserPreference userPreference = new UserPreference(); userPreference.setUserNo(i); userPreference.setFirstName(Constants.getRandomName()); userPreference.setLastName(Constants.getRandomName()); mapper.save(userPreference); //リスト化 DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); PaginatedScanList result = mapper.scan( UserPreference.class, scanExpression);
  21. 21. S3へのダウンロード/アップロード(Android) //S3 TransferManagerの初期化 TransferManager transferManager = new TransferManager(getCredProvider(this)); //ダウンロード Download download = transferManager.download(BUCKET_NAME, mKey, file); //アップロード Upload upload = transferManager.upload(BUCKET_NAME, fileName, file);
  22. 22. AWS Mobile SDK for Unity !   クロスプラットフォームなゲーム開発環境として⼈人気の⾼高いUnityのPlugin •  .NETベースのクラス群で構成 !   現在はDeveloper Previewでありサポートするサービスは限定的 •  Amazon Cognito •  Amazon S3 •  Amazon DynamoDB •  Amazon Mobile Analytics !   Unity4.0以降降をサポート
  23. 23. AWS Mobile SDK for Xamarin !   クロスプラットフォームの開発環境であるXamarinのPlugin •  評価⽤用のベータ版として提供中 •  https://github.com/awslabs/aws-sdk-xamarin !   サポートするサービス •  Amazon Cognito •  Amazon S3 •  Amazon DynamoDB •  Amazon SNS Mobile Push
  24. 24. AWS  Lambda !   イベントをトリガーに独⾃自のコードを稼働させるComputeサービス •  Lambda実⾏行行環境はAWSが管理理 •  EC2インスタンスやOS等インフラの管理理作業が不不要 •  イベントに対して即座に応答するアプリケーションを、特別な仕組みなく簡単に実装できる •  毎⽇日数件から毎秒数千件のリクエストまで⾃自動的にスケール •  実際にコードが稼働した時間に対してのお⽀支払であり、EC2インスタンス費⽤用が不不要 •  サポートするAWSサービス •  S3上のオブジェクト作成/更更新時 •  DynamoDB  Table更更新時 •  Kinesisへのストリーム⼊入⼒力力時 !   Lambda  function •  JavaScript(Node.js)で記述 •  サードパーティライブラリも利利⽤用可能
  25. 25. もっと楽をしよう
  26. 26. 2-‐‑‒Tier  Architecture
  27. 27. 2-‐‑‒Tier  Architectureとは? !   いわゆるサーバレスな、クライアントとバックエンドだけのアーキテクチャ •  AWS  SDKとマネージドサービスを積極的に利利⽤用 •  モバイルアプリやブラウザから直接AWSサービスを呼ぶ !   特にモバイルにおすすめ 直接呼び出し
  28. 28. モバイルアプリの差別化をするものは何か? もっとも時間を費やすべき箇所はどこか? なぜ、2-‐‑‒Tier  Architectureなのか?
  29. 29. モバイルアプリの差別化をするものは何か? もっとも時間を費やすべき箇所はどこか? なぜ、2-‐‑‒Tier  Architectureなのか?
  30. 30. 2-‐‑‒Tier  Architectureのメリット !   アプリの開発に多くのメリット: •  バックエンド側の開発コストを最⼩小化 •  バックエンド側の運⽤用コストを最⼩小化 •  スケーラビリティの⼼心配なし •  バックエンドのEC2を減らせるため⾦金金額⾯面でもローコスト(当社⽐比*) !   必要に応じてEC2も導⼊入できる安⼼心感 •  後からバックエンド側にロジックを⼊入れてシステムの最適化ことも可能 !   よりビジネスに集中することが可能 *  EC2で同規模のサーバを⽴立立てる場合に⽐比べ
  31. 31. 例例えば、静的ファイル だけで動的サイト
  32. 32. 例例えば、ブラウザ/モバイル両対応 のRSSリーダサービス
  33. 33. 例例えば、⼝口コミアプリ
  34. 34. 例例えば、写真共有アプリ
  35. 35. サーバレスで 全部できます
  36. 36. 例例1:静的ファイルだけで動的サイト !   DynamoDBやS3などをデータの保存先とするHTML+JSをS3に置けばWeb サーバ無しで動的サイトを構築可 3.  認証・認可 ・  FBアプリと連携 Cognito DynamoDB S3 1.  HTTP(S)アクセス 2.  HTMLとJSをレスポンス JavaScript SDK 4.  データの読み書き
  37. 37. 例例2:  RSSリーダサービス !   ブラウザとモバイルアプリ間でシームレスにデータ連携 !   サーバサイドのコードなし、この程度度であればDynamoDBすら不不要 App  with   AWS  Mobile   SDK JavaScript SDK S3 1.  HTTP(S)アクセス 2.  HTMLとJSをレスポンス Cognito  Identity 3.  認証・認可 ・  FBやGoogleのIDでログイン Cognito  Sync 4.  データの同期 ・  MobileSDK、ブラウザ間でデータ同期 5.  データのPush/Pull
  38. 38. 例例3:  ⼝口コミアプリ !   投稿の書き込み/表⽰示はDynamoDBと直接 !   レートの計算はモバイルアプリから直接Lambdaを実⾏行行し⾮非同期で実⾏行行 1.  認証・認可 ・  FBアプリと連携 Cognito DynamoDBApp  with   AWS  Mobile   SDK 2.  ⼝口コミの投稿 ・  投稿内容とレーティング 4.  過去の全データを元に平均値の計算と     結果のDynamoDBへの登録等 3.  Lambda  functionの起動 Lambda
  39. 39. Followers 例例4:  写真共有アプリ 4.  メタデータをDynamoDBに登録 -‐‑‒  タイトル、コメント等 1.  認証・認可 ・  FBアプリと連携 6.  Push通知 -‐‑‒  フレンドやフォロワーに通知 Cognito Mobile  Analytics DynamoDB S3 SNS7.  画像をポストしたことをAnalyticsに登録 3.  画像のリサイズ 2.  S3への画像アップロード 5.  結果をSNSへ通知 App  with   AWS  Mobile   SDK
  40. 40. ベストプラクティス !   まずはサーバレスで実装することを検討 •  マネージドサービスを積極的に利利⽤用 •  ビジネスの差別化に繋がりにくいにも関わらず⼿手 間ヒマのかかる箇所はサービスを利利⽤用してオフ ロード !   マネージドサービスだけでは難しい箇所のみ EC2を使って実装 !   限りあるエンジニアリングリソースはビジネ スの差別化に集中
  41. 41. 2015.06.02-03 Save the Date

×