Upload
google-cloud-platform-japan
View
232
Download
7
Embed Size (px)
Citation preview
あっという間の
Google Cloud Platform 開発ガイド
GCP Nextデベロッパー トラック: アジェンダ
あっという間の、Google Cloud Platform 開発ガイド
意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
Kubernetes のコンテナ技術ですべてをシンプルに
1
2
3
Google が描く、MapReduce を超えたビッグデータの世界4
Cloud Spin私たちがどのようにしてクラウドで、映画「マトリックス」の世界
を実現したのか
ユーザーがCloud Spinエリアの中央に入り、誰かがタブレットの
スタートボタンを押す。
タブレットがスマホに通知を送りそれぞれがショートビデオの録画を
開始する。
ピクチャーIDはXです。今すぐ録画を開始してください!
ユーザーがジャンプするとオーディオキューを使って
正確なフレームを特定する。
バックエンド アーキテクチャ
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
動画アップロードと通知
動画アップロードと通知
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
要件
● 大量の非構造化データ用ストレージ
● 即時アクセスと読み込みにおける強い一貫性
● 新たに登場したオブジェクトに対して起動される通知
Google Cloud Storage
オブジェクト ストア
変更通知
オブジェクトごとに最大テラバイト単位までのデータを保存。データは保存済みの状態で暗号化。粒度の細かいアクセス制御
フル バージョニング、変更通知およびリジューマブルアップロードおよびダウンロードが可能
可用率の高いジオ冗長データ レプリケーション システムで99.9%のSLA 。各オブジェクトに対し、
強力なリードアフターライトの一
貫性
信頼性が高く
一貫性がある
Cloud Storageのオプション
標準的なストレージ耐久性が高く、可用性を
抑えたストレージ
速度
可用性
耐久性
コスト
ニアライン
どのようなワークロードにも適した
万能クラウド ストレージ
速度
可用性
耐久性
コスト
速度
可用性
耐久性
コスト
高可用性・高性能を必要としない
使用事例向け
アクセス頻度の低いコンテンツの
長期ストレージ向け
オブジェクト変更通知
クラウド ストレージ バケット[myapp-input-bucket]
$ gsutil notification watchbucket \ https://myapp.appspot.com gs://myapp-input-bucket
通知処理
エンドポイント
https://myapp.appspot.com
オブジェクト変更通知
クラウド ストレージ バケット[myapp-input-bucket]
クライアント
通知処理
エンドポイント
オブジェクトの追加/アップデート/削除
オブジェクト変更通知
クラウド ストレージ バケット[myapp-input-bucket]
通知処理
エンドポイント
オブジェクト変更通知
POST /storage/v1/b/myapp-input-bucket/o/watch?alt=json HTTP/1.1Host: www.googleapis.comContent-Length: 200User-Agent: google-api-python-client/1.0Content-Type: application/jsonAuthorization: Bearer OAuthToken
{ "token": "<ClientToken>", "type": "<web_hook>", "id": "<ChannelId>", "address": "https://myapp.appspot.com"}
エッジ キャッシング
まとめ
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
通知処理
通知処理
入力バケット
スティッチングQ
デバイス
エクストラクション Q
通知プロセッサ エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
要件
● HTTPS POSTリクエストを処理
● シンプルなAuthN
● リクエストを処理し、タスクをキューへプッシュ
Google App Engine
ランタイムのチョイス
- Java、Python、Go- PHP- カスタム
開発が容易
- ローカルでビルドおよびテスト
- アプリコードに集中
- バージョニング
- トラフィック分割
管理がわずか
- フルマネージド
- パッチ/アップデートなし
- Google SREによる24x7運用
- オートスケール
App Engineホスティング環境
サンドボックス
ウェブサーバー ユーザー コード
サンドボックス ランタイム
VMコンテナ
ウェブサーバー ユーザー コード
オプショナル パッケージ
標準/カスタム ランタイム
インスタンス
App Engineホスティング環境 コンテナ ベースのホスティング環境
まとめ
入力バケット
スティッチングQ
デバイス
エクストラクションQ
Goアプリ Engineアプリ エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
+
メッセージングとパイプライン
パイプラインの構築
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
要件
● 非同期メッセージング
● プル サブスクリプション
Cloud Pub/Sub (ベータ)安定かつリアルタイムのメッセージ
ング
高速データ向け設計
アプリケーション間で安定かつリアルタイム、多対多の非同期メッセージングを提供
処理パイプラインにデータを送信したり、その他アプリ、デバイス、 Google Cloud Servicesにバックアウトしたりすることが可能。
グローバルであるように設計され
ており、可用性が高く、最小のレ
イテンシで「ファイア・アンド・
フォーゲット」(撃ちっ放し)するこ
とが可能。冗長の転送経路。
Googleスケール
の設計
Pub/SubトピックB
サブスクリプションXA
サブスクライバーX
パブリッシャーB
トピックA
パブリッシャーA
トピックC
パブリッシャーC
メッセージ1
メッセージ1
メッセージ3メッセージ2
メッセージ2
サブスクライバーY
メッセージ3
サブスクライバーZ
メッセージ3
サブスクリプションXB
サブスクリプションYC
サブスクリプション ZC
パブリッシャーとサブスクライバー
Pub/Subトピック
プル サブスクリプションプッシュ サブスクリプ
ション
Google Cloud Platformアプリサードパーティーのネットワーク アプリ
デスクトップ / コマンドラインアプリモバイル アプリ
Javascript / html5のクライアント
パブリッシャーとサブスクライバーのエンドポイント
メッセージングはショック アブゾーバ
スループット可用性
• 停電中に新たなリクエストをバッファリング
• 停電を引き起こす過負荷を阻止
• 停電からの回復のためにリクエストをリダイレクト
• 新たなリクエスト率の急増を平坦化
• 複数ワーカー間で負荷を分散
• 到着率とサービス率のバランスを取る
使用事例: ワークキュー (スティッチング)
トピックの抽出Pub/Sub
エクストラクター
エクストラクター
エクストラクター
エクストラクター
共有サブスクリプション
App Engine抽出タスク
サブスクライバー サブスクライバー
Pub/Sub Pub/Sub
プッシュ サブスクリプション
プル サブスクリプション
msg ack msg ack
RPC送信
RPCリターン
使用事例: ワークキュー (抽出)
トピックのスティッチング
Pub/Sub
スティッチャー
スティッチング メッセージ
エクストラクター
パイプライン処理
パイプライン処理
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
要件
● Queue Depthに基づいたワーカーのオンデマンド スケーリングができるロングランニング サービス
● セキュアなpub/subサブスクライバーとして機能することができる
● 開発、デプロイ、管理が容易
Google Compute Engine
コンピュート リソース
- アメリカ、欧州、アジア地
区
- 高速なSDNベースの仮想
ネットワーキング
常に高速
- 高速の仮想マシン プロビジョ
ニング - 一貫した性能
コスト効率が高い
- Sub-Hour Billing- ブロック ストレージに対
してIOPSの請求なし
- ロードバランシングに仮
想マシンは不要
多様なワークロードに合わせたインスタンス
12
4
8
(共有)
16
32
Compute Engineの仮想マシン :● Debian、CentOS、SUSE、RHEL
Ubuntu、Windows (ベータ)● 共有コアあるいは1~32コア● 最大208 GBのRAM
マネージド インスタンス グループ
マネージド インスタンス グループ
● 同一のVMインスタンスのグループ化
マネージドインスタンスグループ
VMVM仮想マシン
仮想マシンの作成/破壊
インスタンスグループ
マネージャー
マネージドインスタンスグループ
VMVM仮想マシン
インスタンス グループ マネージャー
マネージド インスタンス グループ
● 同一のVMインスタンスのグループ化
● インスタンス グループ マネージャーによ
るプロビジョニングと監視
インスタンス テンプレート
仮想マシンの作成/破壊
インスタンスグループ
マネージャー
Instance Templateインスタンステンプレート
マネージドインスタンスグループ
VMVM仮想マシン
マネージド インスタンス グループ
● 同一のVMインスタンスのグループ化
● インスタンス グループ マネージャーによ
るプロビジョニングと監視
● インスタンス テンプレートがコンフィグ
レーションをプロビジョニングから切り離
す
マネージドインスタンスグループ
インスタンス グループ アップデーター
仮想マシンの作成/破壊
インスタンスグループ
アップデーター
ローリングアップデート
VMVM仮想マシン
新たなテンプレート
マネージド インスタンス グループ
● 同一のVMインスタンスのグループ化
● インスタンス グループ マネージャーによ
るプロビジョニングと監視
● インスタンス テンプレートがコンフィグ
レーションをプロビジョニングから切り離
す
● インスタンス グループ アップデーターが
ローリング アップデートを適用
Compute Engine Autoscaler
マネージドインスタンスグループ
仮想マシンの作成/破壊
インスタンスグループ
マネージャー
アクチュエータ
監視
オートスケーラー
クラウド モニタリング
利用
VMVM仮想マシン
Pub/Subトピック
コンテナリゼーション
エクストラクターワーカー
仮想マシンの作成/破壊
インスタンスグループ
マネージャー
アクチュエータ
監視
オートスケーラー
クラウド モニタリング
利用
VMVMコンテナ
仮想マシン
トピックの抽出
将来: Container Engine
Kubernetesを使用してDockerコンテナをデプロイ、実行、管理
コンテナ専用に作られた仮想マシンのクラスタをスピンアップ
いかなるDockerファイルも1つのコマンドでクラスタにインストール可能
モバイルアプリのインストールと同じくらい容易にコンテナをデプロイ
今日のトークセッション: 望ましい状態: Kubernetes のコンテナ技術ですべてをシンプルに
まとめ
入力バケット
スティッチングQ
デバイス
エクストラクションQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
コーディネーション
コーディネーション
入力バケット
スティッチQ
デバイス
エクストラクトQ
通知プロセッサー エクストラク
ター
スティッチャー
動画アップロード
オブジェクト変更通知
出力バケット
コーディネーター
Firebase
次のトークセッションにも是非ご参加ください!
意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
まとめとHex Test
• Bret McGowen• Francesc Campoy• Kathy Kam• Ray Tsang
デモ作成
ありがとうございました!