あっという間の
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.1
Host: www.googleapis.com
Content-Length: 200
User-Agent: google-api-python-client/1.0
Content-Type: application/json
Authorization: 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の請求なし
- ロードバランシングに仮
想マシンは不要
多様なワークロードに合わせたインスタンス
1
2
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
デモ作成
ありがとうございました!

6 月 18 日 Next - あっという間の、Google Cloud Platform 開発ガイド