Comments
Description
Transcript
Amazon SNS Mobile Push
Migrating Apps from Parse to AWS Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Jul 05, 2016 Profile Keisuke Nishitani Solutions Architect, Amazon Web Service Japan K.K ✤ ソリューションアーキテクト ✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくします ✤ モバイルニンジャ1号機 ✤ RESTおじさん ✤ Lambda Wizards ✤ 餃子の王将エヴァンジェリスト(自称) ✤ 音楽が好きです、フジロッカーです、今年も行きます ✤ でもサマソニも毎年行きます ✤ 小説大好き、マンガ大好き、空想好き ✤ ブログ: http://keisuke69.hatenablog.jp/ @Keisuke69 Keisuke69 Keisuke69x Keisuke69 Keisuke69 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-east1#/newApplication?applicationName=ParseServer&solutionStackName=Node.js&tierName=WebS erver&instanceType=t2.small&sourceBundleUrl=https://s3.amazonaws.com/elasticbeanstalksamples-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 サービス あなたのモバイルアプリ ゲーム ユーティリティ ファイナンス ソーシャル エンターテインメント AWS Mobile SDK AWS SDK for Android AWS SDK for iOS AWS SDK for Unity AWS SDK for JavaScript モバイルに最適化 されたサービス Cognito Mobile Analytics SNS Mobile Push Device Farm API Gateway SES Lambda モバイルに最適化 されたコネクタ Kinesis コアとなるサービス群 ストレージ DynamoDB データベース S3 SQS キュー グローバルインフラ メール コンピュート ネットワーク AWS Mobile Hub SNS Mobile Push Cognito Lambda Mobile Analytics Device Farm CloudFront S3 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 Xamarin Android Fire OS Unity Parse PushからAmazon SNSへの 移行 Amazon SNS Mobile Push ✤世界中のユーザにクロスプラットフォームでプッシュ通知 ✤個々の通知だけでなく多数の受信者への同報通知も可能 iOS Apple iPhones and iPads Apple APNS Google GCM Internet Amazon SNS Mobile Push Baidu CP Amazon ADM Windows WNS and MPNS Android Phones and Tablets Android Phones and Tablets in China Kindle Fire Devices 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-east1:xxxxxxxxxxxx:app/APNS/parse_MOBILEHUB_1768078787 Step 3: AWSリソースの作成 ✤ 移行ツールの利用にはAWSクレデンシャルが必要なため、事前に取得 する ✤ 以下のリンクからAWSクレデンシャルコンソールにアクセス https://console.aws.amazon.com/iam/home?region=us-east1#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との対応 機能 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 Delivery Success/Failureの100%ロ グ出力 No (“Generic” Push Delivery Reportのみ) Yes Yes (ターゲットしたendpointごとにsuccess/failureを100%ログ 出力) Parse AnalyticsからAmazon Mobile 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 In-app item popularity in a shopping app Number of songs played, per user session, in a music app Understand player abort rates per level, in a game 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 Users Yes - 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 Opens Yes - Session Count and Average Sessions per Daily Active User Custom Events Yes Yes Revenue No Yes - Average Revenue per Daily Active User (ARPDAU) and Average Revenue per Paying Daily Active User (ARPPDAU) Retention Yes Yes - Day 1, 3, and 7 Retention and Week 1, 2, and 3 Retention Sticky Factor No Yes - DAU divided by MAU Console Reports Yes - 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 No Yes - Amazon Simple Storage Service (Amazon S3) bucket and Amazon Redshift cluster Amazon Cognito User Pools Amazon Cognito Identity User Pools (Beta) ユーザ管理を簡単に モバイルおよび Web アプリに サインアップとサインインの機 能を簡単に追加 マネージド型 ユーザディレクトリ 数億のユーザまでスケールす るユーザディレクトリを作成・管 理するシンプル、セキュア、低 コストでフルマネージドなサー ビス 拡張されたセキュリティ機能 電話番号や email アドレスの 検証と多要素認証の提供 幅広いユーザシナリオ ユーザのサインアップと サインイン Email もしくは 電話番号による確認 パスワード紛失 ユーザプロファイル SMS ベースの MFA Email、電話番号もしくはユーザ名とパスワードを使用したサインアップ サインアップ後のサインイン アカウントを確認するための Email アドレスや電話番号の検証 パスワードを紛失した場合にユーザは自分自身でパスワード変更可能 カスタム属性を含むユーザプロファイルの取得と更新 有効にすると、サインアップ、パスワード紛失におけるフローの一環としてSMS を通じ た確認コードによる多要素認証(MFA)を利用可能 幅広い管理者シナリオ ユーザプールの 作成と管理 ユーザプール内の ユーザ管理 Email と電話番号の確認 AWS アカウント内に複数のユーザプールを作成、構成、削除可能 ユーザプール内の特定ユーザのリスト、検索、アクション実行 アカウントの有効化前に SMS を通じてユーザの email アドレスと電話番号を検証す る設定(SMS経由) AWS Lambda による カスタマイズ ワークフローをカスタマイズするために AWS Lambda のファンクションを作成 パスワードポリシーの セットアップ 最小文字数、大文字、特殊文字を含めるといったパスワード要件のコントロール 属性の定義 必要な属性の選択とカスタムユーザ属性の定義 セキュアなサインインを簡単に Amazon Cognito サードパーティのアイデ ンティティプロバイダによ る認証 Sign in with Facebook Or Username User Pools 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/Facebook AWSの最新情報をお届けします 検索 @awscloud_jp もしくは http://on.fb.me/1vR8yWm 最新技術情報、イベント情報、お役立ち情報、 お得なキャンペーン情報などを日々更新しています!