Migrating Apps from Parse to AWS ·...
Transcript of Migrating Apps from Parse to AWS ·...
Migrating Apps from Parse to AWS
Keisuke Nishitani (@Keisuke69)
Amazon Web Services Japan K.K.
Jul 05, 2016
Profile
Keisuke NishitaniSolutions Architect, Amazon Web Service Japan K.K
@Keisuke69 Keisuke69
✤ ソリューションアーキテクト✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくします
✤ モバイルニンジャ1号機✤ RESTおじさん✤ Lambda Wizards
✤ 餃子の王将エヴァンジェリスト(自称)✤ 音楽が好きです、フジロッカーです、今年も行きます
✤ でもサマソニも毎年行きます✤ 小説大好き、マンガ大好き、空想好き✤ ブログ: http://keisuke69.hatenablog.jp/
Keisuke69 Keisuke69Keisuke69x
AWS Black Belt Online Seminer へようこそ!
✤質問を投げることができます!
✤Adobe Connect のチャット機能を使って、質問を書き込んでください。(書き込んだ質問は、主催者にしか見えません)
✤Twitterへツイートする際はハッシュタグ #awsblackbelt をご利用ください。
①画面右下のチャットボックスに質問を書き込ん
でください
②吹き出しマークで送信してくださ
い
内容についての注意点
✤本資料では2016年7月5日時点のサービス内容および価格についてご説明しています。最新の情報は AWS 公式ウェブサイト(http://aws.amazon.com) にてご確認ください。
✤資料作成には十分注意しておりますが、資料内の価格と AWS 公式ウェブサイト記載の価格に相違があった場合、AWS 公式ウェブサイトの価格を優先とさせていただきます。
✤価格は税抜表記となっています。日本居住者のお客様がサービスを使用する場合、別途消費税をご請求させていただきます。
AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with
the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this
document is provided only as an estimate of usage charges for AWS services based on certain information that you have
provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
will shutdown Jan 28, 2017
Recommended timeline by Parse
✤April 28, 2016
✤Data migrated to a self-hosted MongoDB.
✤July 28, 2016
✤Finish setting up your self-hosted Parse Server and release a new app pointing
to it.
✤January 28, 2017
✤Parse shutdown.
AWSに移行するメリット
✤モバイルアプリ開発に利用可能なサービスが提供されている
✤Amazon SNSなどParseが提供している機能相当のサービスを提供
✤その他にも、実デバイスでのテストを可能にするAWS Device FarmやAPIの提供・管理を容易にするAmazon API Gateway / AWS Lambdaなどのサービスも提供
✤自前で構築した場合でも運用の効率化・自動化ができる
✤オートスケーリング
✤APIを利用した運用作業の自動化
✤Elastic BeanstalkやCloudFormationを利用した構築作業の自動化
マイグレーションの選択肢
✤Parse ServerとMongoDBをAWS上でセットアップし、稼働させる
✤Parse ServerはAWS Elastic Beanstalkを利用してセットアップすることも可能
✤MongoDBは自前で用意するだけでなくmLabなどのサービス利用も可能
✤Parse PushはAmazon SNS mobile pushへ
✤Parse AnalyticsはAmazon Mobile Analyticsへ
✤Parse UsersはAWS Cognito User Poolsへ
Parse Server
✤Parse終了に伴い、ParseがサービスのバックエンドをOSSとして公開したもの
✤Node.js 4.3とMongoDBの2.6.X/3.0.Xが必要
✤サービス版と全く同一のものが利用できるわけではない
✤AnalyticsやJobsなどが未サポート
✤Cloud Codeが同一ホスト上で稼働
✤Push通知ではスケジュール機能やレポート機能が未サポート
✤詳細はコンパチビリティガイドを参照
✤可用性やスケーラビリティは自身で考えて確保する必要がある
移行のステップ
✤ Parse DBから用意したMongoDBへデータ移行
✤ローカルでParse Serverをセットアップし移行したDBを使ってテスト
✤ AWS上でParse Serverをセットアップしテスト
✤アクセス先を切り替えたアプリをリリース
✤詳細は以下のリンク先を参照https://parse.com/migration
AWS Elastic Beanstalkを使用したParse Serverのセットアップ
AWS Elastic Beanstalk
✤特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)
✤速く簡単にアプリケーションをデプロイ可能
✤インフラストラクチャの準備&運営からアプリケーションスタックの管理まで自動化
✤Auto Scaling によりコストを抑えながらスケーラビリティを確保
✤Java, PHP, Ruby, Python, Node.js, .NET, Docker などに対応
✤価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/)
✤追加料金なし✤アプリケーションの保存、実行に必要
なAWSリソース (EC2, S3, RDS, DynamoDB など) に対してのみ課金
インフラ構成の構築・アプリデプロイの自動化サービス
Elastic Beanstalkを利用したParse Serverの実行
✤ 以下のリンク先をクリックし、Parse ServerをElastic Beastalkで起動https://console.aws.amazon.com/elasticbeanstalk/home?region=us-east-
1#/newApplication?applicationName=ParseServer&solutionStackName=Node.js&tierName=WebS
erver&instanceType=t2.small&sourceBundleUrl=https://s3.amazonaws.com/elasticbeanstalk-
samples-us-east-1/eb-parse-server-sample/parse-server-example.zip
✤ アプリケーション名を設定し、「Review & Launch」をクリックするだけ
✤ Parse Server用のEC2インスタンスが設定されデプロイされる
MongoDBのセットアップ(mLab利用)
✤mLabはAWS上で動かすMongoDBをサービスとして提供
✤もちろん、MongoDBインスタンスを手動でセットアップするのも問題なし※MongoDB on AWSに関する参考資料http://www.slideshare.net/AmazonWebServicesJapan/black-belt-online-seminar-awsmongodb
✤データ移行にはParse DashboardのMigrateオプションを利用すると簡単
MongoDBのセットアップ(mLab利用)
✤ mLabにサインアップ
✤ 「Create new」をクリックし、新規データベースを作成
✤ 「Cloud Provider」としてAWSを選択し、自身の環境にあわせてPlanを選択
✤ Single-nodeの0.5GBが無償枠として提供されている
✤ 任意の名前をつけ「Create new MongoDB deployment」をクリック
MongoDBのセットアップ(mLab利用)
✤作成したデータベースをクリックし、ユーザを追加
Elastic Beanstalkの設定
✤「Configuration」から「Software Configuration」を選択
✤Environment Propertiesの各値を自身の値に変更する
AWS Mobileサービス
AWS Mobile サービス
Cognito
Kinesis DynamoDB S3 SQS SES
グローバルインフラ
コアとなるサービス群
モバイルに最適化されたコネクタ
モバイルに最適化されたサービス
AWS SDK for Android
ストレージ データベース キュー メールコンピュートネットワーク
AWS Mobile SDK
Mobile Analytics SNS Mobile Push
AWS SDK for iOS AWS SDK for Unity
あなたのモバイルアプリ
ゲーム ユーティリティ ファイナンス エンターテインメント
Lambda
Device Farm API Gateway
AWS SDK for JavaScript
ソーシャル
Cognito SNS Mobile Push
S3
Mobile Analytics
Device Farm
Lambda
CloudFront
AWS Mobile Hub
AWS Mobile Hub
✤ AWS上でモバイルアプリを作成する最も簡単な方法
✤ ユーザサインインといった典型的なユースケースの選択と設定
✤ 自動で必要なAWSサービスをプロビジョニング
✤ iOSとAndroid向けにプロビジョニングされたサービスを使って実際に機能するクイックスタートアプリを生成
✤ AWS Mobile Hub自体のご利用は無料※利用する各サービスの費用はかかります
プロジェクトの作成と機能の追加
例:User Sign-in
✤ユーザがどのようにサインインするか設定:
✤サインインなし、オプショナルもしくは必須
✤サインインプロバイダを設定:
✤ Facebook (Google, Twitter, Amazon etc)
✤独自のシステム(認証基盤)
✤クイックスタート用アプリにサインイン画面を追加
Powered by Amazon Cognito Identity
例:Push通知
✤アプリへのプッシュ通知
✤iOS/Android
✤1:1 もしくはトピック
✤クイックスタートアプリでは以下の機能が含まれる
✤通知のEnable/Disable
✤SNSを使ったトークンの自動登録
✤サブスクライブするトピックの選択
Powered by Amazon SNS
例:Cloud Logic
✤バックエンドのコードを実行
✤モバイルアプリから直接呼び出し
✤ JavaScript、Python、Javaに対応
✤コードを書くだけでよく、インフラの管理不要
Powered by AWS Lambda
スターターアプリのダウンロード
AWS Mobile SDK
✤Mobile OS へ最適化されたAWS SDK
✤オンライン・オフラインを自動でハンドリング✤ローカルオフラインキャシュを利用するアーキ
テクチャ
✤メモリフットプリントの削減
✤各プラットフォームのエンハンスに追従
iOS Android Fire OS Unity
Xamarin
Parse PushからAmazon SNSへの移行
Amazon SNSMobile Push
Internet
Apple APNS
Google GCM
Amazon ADM
Windows WNS and MPNS
Baidu CP
Amazon SNS Mobile Push
✤世界中のユーザにクロスプラットフォームでプッシュ通知
✤個々の通知だけでなく多数の受信者への同報通知も可能
Android Phones and Tablets
Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
Windows Desktop and Windows Phone Devices
Step 1: Parse Pushデータのエクスポート
✤Parseのコンソールにログインし、アプリケーションを選択
✤Core > Browserと進み、Installationを選択
✤右上のEditをクリック
✤Export this dataを選択
Step 1: Parse Pushデータのエクスポート
✤Exportをクリック
✤しばらくするとJSON形式でエクスポートされたデータ(Zipファイル)のダウンロードリンクがメールで届く
Step 1: Parse Pushデータのエクスポート
✤ エクスポートされたJSONファイルをダウンロードし、保存
✤ エクスポートされたデータには以下が含まれる
- deviceToken
- deviceType
- channels
Step 2: APNSとGCMのクレデンシャル取得
✤Parseを利用する際に作成したAPNSとGCM(もしくはどちらか)のクレデンシャルを取得する
✤iOSアプリケーション向け(APNS): Amazon SNSは.p12 push certificateを使用するが、これは自身のMacのKeychainからエクスポート可能。もし.p12を持っていないならこちらのチュートリアルのStep1を参照
✤Androidアプリケーション向け(GCM): Parseのアプリに紐付けているGoogle
Developers ProjectのAPI(Server)Keyを使う必要あり
✤Windowsアプリケーション向け(WNS): こちらの手順に従ってClient secret
とPackage Security Identifier (SID)を渡す必要あり
✤AWS Mobile Hubを利用してSNSリソースを作成するのに利用するため、これらのクレデンシャルを保存しておく
Step 3: AWSリソースの作成
✤マネージメントコンソール上でAWS Mobile Hubを選択する
✤「Get Started」を選択
Step 3: AWSリソースの作成
✤「First things first…」の内容を確認
✤パーミッションを許可するため「Yes, grant permissions」をクリック
Step 3: AWSリソースの作成
✤「Create new mobile project」を選択し、プロジェクト名を入力(例:Parse Migration)
✤プロジェクトが作成された後、「Push Notifications」のfeatureを追加
Step 3: AWSリソースの作成
✤「Click Enable push」をクリックし、プラットフォームを選択
✤各プラットフォームのクレデンシャルをアップロードし、「Save
changes」をクリック
Step 3: AWSリソースの作成
✤Mobile Hubのコンソールの左パネルでResourcesをクリック
✤Amazon SNS Platform Applicationsで、ハイライトされた名前をコピーしテンポラリの場所に保存
✤Amazon SNS Topicsで、トピック名をコピーしテンポラリの場所に保存
Step 3: AWSリソースの作成
✤完全修飾なSNSのplatform application名は以下のようになり、ハイライトされた箇所がStep 4で移行ツールに渡すアプリケーション名になる
arn:aws:sns:us-east-
1:xxxxxxxxxxxx:app/APNS/parse_MOBILEHUB_1768078787
Step 3: AWSリソースの作成
✤移行ツールの利用にはAWSクレデンシャルが必要なため、事前に取得する
✤以下のリンクからAWSクレデンシャルコンソールにアクセス
https://console.aws.amazon.com/iam/home?region=us-east-
1#security_credential
✤「Continue to Security Credentials」をクリック
Step 3: AWSリソースの作成
✤「Access Keys (Access Key and Secret Access Key)」をクリック
✤「Create New Access Key」をクリック
Step 3: AWSリソースの作成
✤「Create Access Key」で「Show Access Key」を選択
✤「Access Key ID」と「Secret Access Key」の両方をコピーし保存
Step 4: Parse Pushデータのインポート
✤ 以下のリンクからParse Push migration toolをダウンロードhttps://s3.amazonaws.com/sns.region/SNSImportTool.jar
✤ 移行ツールは自分のMac/PCから実行可能なスタンドアロンjarファイル✤ 前のステップで集めた情報をパラメータ形式でツールに渡す✤ Javaの実行環境が必要
✤ 以下のように必要なオプションに適切な値を指定してコマンド実行java -jar SNSImportTool.jar -s -f <PATH_TO_EXPORTED_PARSE_INSTALLATION_.JSON_FILE>
--apnsName <APNS_PLATFORM_APP_NAME_STEP>
--gcmName <GCM_PLATFORM_APP_NAME_STEP>
--wnsName <WNS_PLATFORM_APP_NAME_STEP>
--topicName <SNS_TOPIC_NAME_STEP>
--awsaccess <AWS_KEY_ID_STEP>
--awssecret <SECRET_ACCESS_KEY_STEP>
移行ツール
✤指定されたPlatformApplicationを検証
✤PlatformEndpointをエクスポートされたJSONファイル内のユニークなトークンごとに作成
✤ユニークなchannelごとにSNS Topicを作成し、これらのTopicに対してPlatformEndpointを登録
✤「parse_alldevices」というTopicを作成し、全てのPlatformEndpointを登録
機能 Parse Push Amazon SNS
サブスクリプション Yes - channel Yes - topic
高度なターゲティング Yes – オブジェクト、ユーザ、クエリ、ジオポイント No
カスタムセグメント Yes – Saved Audiences No
スケジュール通知 Yes (Android/Windowsのみ) No
A/B テスト Yes – Push Experiments No
Pushのローカライズ Yes No
バッジインクリメント Yes – (iOSのみ) No
期限設定 Yes Yes
バックグラウンド/サイレントPush Yes Yes
サウンド Yes Yes
キャンペーン Yes No
Token Feedback No Yes
Token/Endpoint イベントトリガー Yes Yes
Delivery Success/Failureの100%ログ出力 No (“Generic” Push Delivery Reportのみ)
Yes (ターゲットしたendpointごとにsuccess/failureを100%ログ出力)
Parse Pushとの対応
Parse AnalyticsからAmazonMobile Analyticsへの移行
Amazon Mobile Analytics
利用状況に関するデータを大規模に収集、自動的に可視化アプリケーション側はAmazon Mobile SDKを組み込むだけ
生データをS3/Redshiftへ自動エクスポート可能既存のユーザマスタの突き合わせ等によるより深い分析が可能CSVでのダウンロードも可能
高速かつスケーラブルデータを受け取ったら60分以内にレポート反映数百万のユーザーからの数十億イベント/日を収集・処理可能
クロスプラットフォーム各種デバイス、OS(Android, iOS, FireOS)からデータを送信可能AWS SDK for JavaScriptでもサポート
ビジネス上重要な指標
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
継続率のトラッキング
ユーザの継続率はマーケティング、新機能、UI変更やアプリ更新の効果を測る際の重要な指標
日次/週次でユーザ再訪率に関する4つのチャートを提供
アプリ固有のアクションに関して行動分析が可能
特定イベントの発生頻度に関するレポートを提供。各イベントに属性やメトリックを追加可能。
サンプル
Track the number of Likes/Shares, per article, in a news app
Understand player abort rates per level, in a game
Number of songs played, per user session, in a music app
In-app item popularity in a shopping app
カスタムイベントのトラッキング
Amazon Mobile Analyticsの利用
✤Amazon SNSと同様の手順でAWS Mobile Hubを利用してプロジェクトを作成
✤「App Analytics」のfeatureを追加
Amazon Mobile Analyticsの利用
✤「Add analytics」を選択し、「Save changes」をクリック
Amazon Mobile Analyticsの利用
✤左パネルから「Build」を選択し、対象プラットフォームを選択する
Parse Analyticsとの対応Feature Parse Analytics (Client-side) Amazon Mobile Analytics
Active UsersYes - Daily Active Users (DAU), Weekly Active Users (WAU), Monthly Active Users (MAU), and Installations
Yes - Daily Active Users (DAU), Monthly Active Users (MAU), and Installations
Sessions Yes – App OpensYes - Session Count and Average Sessions per Daily Active User
Custom Events Yes Yes
Revenue NoYes - Average Revenue per Daily Active User (ARPDAU) and Average Revenue per Paying Daily Active User (ARPPDAU)
Retention YesYes - Day 1, 3, and 7 Retention and Week 1, 2, and 3 Retention
Sticky Factor No Yes - DAU divided by MAU
Console ReportsYes - Overview, Audience, Events, Saved/Recent Queries
Yes - Overview, Active Users, Sessions, Retention, Revenue, and Custom Events
Download Reports Yes - CSV format Yes - CSV format
Auto Export NoYes - Amazon Simple Storage Service (Amazon S3) bucket and Amazon Redshift cluster
Amazon Cognito User Pools
Amazon Cognito Identity User Pools (Beta)
モバイルおよび Web アプリに
サインアップとサインインの機能を簡単に追加
ユーザ管理を簡単に
電話番号や email アドレスの検証と多要素認証の提供
拡張されたセキュリティ機能
数億のユーザまでスケールするユーザディレクトリを作成・管理するシンプル、セキュア、低コストでフルマネージドなサー
ビス
マネージド型ユーザディレクトリ
幅広いユーザシナリオ
Email もしくは電話番号による確認
パスワード紛失
ユーザのサインアップとサインイン
アカウントを確認するための Email アドレスや電話番号の検証
パスワードを紛失した場合にユーザは自分自身でパスワード変更可能
Email、電話番号もしくはユーザ名とパスワードを使用したサインアップサインアップ後のサインイン
ユーザプロファイル カスタム属性を含むユーザプロファイルの取得と更新
SMS ベースの MFA有効にすると、サインアップ、パスワード紛失におけるフローの一環としてSMS を通じた確認コードによる多要素認証(MFA)を利用可能
幅広い管理者シナリオ
ユーザプール内のユーザ管理
Email と電話番号の確認
AWS Lambda によるカスタマイズ
パスワードポリシーのセットアップ
ユーザプールの作成と管理
ユーザプール内の特定ユーザのリスト、検索、アクション実行
アカウントの有効化前に SMS を通じてユーザの email アドレスと電話番号を検証する設定(SMS経由)
ワークフローをカスタマイズするために AWS Lambda のファンクションを作成
最小文字数、大文字、特殊文字を含めるといったパスワード要件のコントロール
AWS アカウント内に複数のユーザプールを作成、構成、削除可能
属性の定義 必要な属性の選択とカスタムユーザ属性の定義
セキュアなサインインを簡単に
Amazon Cognito
サードパーティのアイデンティティプロバイダによ
る認証
ゲストアクセス
User Pools
Sign in with
Or
Username
Password
Sign In
Or
Start as a guest
Photo credit: rolands.lakis via VisualHunt.com / CC BY
資料の配置場所
✤AWS クラウドサービス活用資料集
✤http://aws.amazon.com/jp/aws-jp-introduction/
✤AWS Solutions Architect ブログ
✤最新の情報、セミナー中のQ&A等が掲載されています
✤http://aws.typepad.com/sajp/
公式Twitter/FacebookAWSの最新情報をお届けします
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!
もしくはhttp://on.fb.me/1vR8yWm