6 月 18 日 next - あっという間の、google cloud platform 開発ガイド

53
あっという間の Google Cloud Platform 開発ガイド

Upload: google-cloud-platform-japan

Post on 07-Aug-2015

232 views

Category:

Technology


7 download

TRANSCRIPT

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

あっという間の

Google Cloud Platform 開発ガイド

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

GCP Nextデベロッパー トラック: アジェンダ

あっという間の、Google Cloud Platform 開発ガイド

意外と簡単、AI を使ったリアルタイム モバイルゲーム開発

Kubernetes のコンテナ技術ですべてをシンプルに

1

2

3

Google が描く、MapReduce を超えたビッグデータの世界4

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

Cloud Spin私たちがどのようにしてクラウドで、映画「マトリックス」の世界

を実現したのか

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

ユーザーがCloud Spinエリアの中央に入り、誰かがタブレットの

スタートボタンを押す。

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

タブレットがスマホに通知を送りそれぞれがショートビデオの録画を

開始する。

ピクチャーIDはXです。今すぐ録画を開始してください!

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

ユーザーがジャンプするとオーディオキューを使って

正確なフレームを特定する。

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

バックエンド アーキテクチャ

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

動画アップロードと通知

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

動画アップロードと通知

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

要件

● 大量の非構造化データ用ストレージ

● 即時アクセスと読み込みにおける強い一貫性

● 新たに登場したオブジェクトに対して起動される通知

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

Google Cloud Storage

オブジェクト ストア

変更通知

オブジェクトごとに最大テラバイト単位までのデータを保存。データは保存済みの状態で暗号化。粒度の細かいアクセス制御

フル バージョニング、変更通知およびリジューマブルアップロードおよびダウンロードが可能

可用率の高いジオ冗長データ レプリケーション システムで99.9%のSLA 。各オブジェクトに対し、

強力なリードアフターライトの一

貫性

信頼性が高く

一貫性がある

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

Cloud Storageのオプション

標準的なストレージ耐久性が高く、可用性を

抑えたストレージ

速度

可用性

耐久性

コスト

ニアライン

どのようなワークロードにも適した

万能クラウド ストレージ

速度

可用性

耐久性

コスト

速度

可用性

耐久性

コスト

高可用性・高性能を必要としない

使用事例向け

アクセス頻度の低いコンテンツの

長期ストレージ向け

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

オブジェクト変更通知

クラウド ストレージ バケット[myapp-input-bucket]

$ gsutil notification watchbucket \ https://myapp.appspot.com gs://myapp-input-bucket

通知処理

エンドポイント

https://myapp.appspot.com

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

オブジェクト変更通知

クラウド ストレージ バケット[myapp-input-bucket]

クライアント

通知処理

エンドポイント

オブジェクトの追加/アップデート/削除

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

オブジェクト変更通知

クラウド ストレージ バケット[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"}

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

エッジ キャッシング

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

まとめ

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

通知処理

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

通知処理

入力バケット

スティッチングQ

デバイス

エクストラクション Q

通知プロセッサ エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

要件

● HTTPS POSTリクエストを処理

● シンプルなAuthN

● リクエストを処理し、タスクをキューへプッシュ

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

Google App Engine

ランタイムのチョイス

- Java、Python、Go- PHP- カスタム

開発が容易

- ローカルでビルドおよびテスト

- アプリコードに集中

- バージョニング

- トラフィック分割

管理がわずか

- フルマネージド

- パッチ/アップデートなし

- Google SREによる24x7運用

- オートスケール

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

App Engineホスティング環境

サンドボックス

ウェブサーバー ユーザー コード

サンドボックス ランタイム

VMコンテナ

ウェブサーバー ユーザー コード

オプショナル パッケージ

標準/カスタム ランタイム

インスタンス

App Engineホスティング環境 コンテナ ベースのホスティング環境

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

まとめ

入力バケット

スティッチングQ

デバイス

エクストラクションQ

Goアプリ Engineアプリ エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

+

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

メッセージングとパイプライン

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

パイプラインの構築

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

要件

● 非同期メッセージング

● プル サブスクリプション

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

Cloud Pub/Sub (ベータ)安定かつリアルタイムのメッセージ

ング

高速データ向け設計

アプリケーション間で安定かつリアルタイム、多対多の非同期メッセージングを提供

処理パイプラインにデータを送信したり、その他アプリ、デバイス、 Google Cloud Servicesにバックアウトしたりすることが可能。

グローバルであるように設計され

ており、可用性が高く、最小のレ

イテンシで「ファイア・アンド・

フォーゲット」(撃ちっ放し)するこ

とが可能。冗長の転送経路。

Googleスケール

の設計

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

Pub/SubトピックB

サブスクリプションXA

サブスクライバーX

パブリッシャーB

トピックA

パブリッシャーA

トピックC

パブリッシャーC

メッセージ1

メッセージ1

メッセージ3メッセージ2

メッセージ2

サブスクライバーY

メッセージ3

サブスクライバーZ

メッセージ3

サブスクリプションXB

サブスクリプションYC

サブスクリプション ZC

パブリッシャーとサブスクライバー

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

Pub/Subトピック

プル サブスクリプションプッシュ サブスクリプ

ション

Google Cloud Platformアプリサードパーティーのネットワーク アプリ

デスクトップ / コマンドラインアプリモバイル アプリ

Javascript / html5のクライアント

パブリッシャーとサブスクライバーのエンドポイント

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

メッセージングはショック アブゾーバ

スループット可用性

• 停電中に新たなリクエストをバッファリング

• 停電を引き起こす過負荷を阻止

• 停電からの回復のためにリクエストをリダイレクト

• 新たなリクエスト率の急増を平坦化

• 複数ワーカー間で負荷を分散

• 到着率とサービス率のバランスを取る

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

使用事例: ワークキュー (スティッチング)

トピックの抽出Pub/Sub

エクストラクター

エクストラクター

エクストラクター

エクストラクター

共有サブスクリプション

App Engine抽出タスク

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

サブスクライバー サブスクライバー

Pub/Sub Pub/Sub

プッシュ サブスクリプション

プル サブスクリプション

msg ack msg ack

RPC送信

RPCリターン

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

使用事例: ワークキュー (抽出)

トピックのスティッチング

Pub/Sub

スティッチャー

スティッチング メッセージ

エクストラクター

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

パイプライン処理

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

パイプライン処理

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

要件

● Queue Depthに基づいたワーカーのオンデマンド スケーリングができるロングランニング サービス

● セキュアなpub/subサブスクライバーとして機能することができる

● 開発、デプロイ、管理が容易

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

Google Compute Engine

コンピュート リソース

- アメリカ、欧州、アジア地

- 高速なSDNベースの仮想

ネットワーキング

常に高速

- 高速の仮想マシン プロビジョ

ニング - 一貫した性能

コスト効率が高い

- Sub-Hour Billing- ブロック ストレージに対

してIOPSの請求なし

- ロードバランシングに仮

想マシンは不要

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

多様なワークロードに合わせたインスタンス

12

4

8

(共有)

16

32

Compute Engineの仮想マシン :● Debian、CentOS、SUSE、RHEL

Ubuntu、Windows (ベータ)● 共有コアあるいは1~32コア● 最大208 GBのRAM

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

マネージド インスタンス グループ

マネージド インスタンス グループ

● 同一のVMインスタンスのグループ化

マネージドインスタンスグループ

VMVM仮想マシン

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

仮想マシンの作成/破壊

インスタンスグループ

マネージャー

マネージドインスタンスグループ

VMVM仮想マシン

インスタンス グループ マネージャー

マネージド インスタンス グループ

● 同一のVMインスタンスのグループ化

● インスタンス グループ マネージャーによ

るプロビジョニングと監視

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

インスタンス テンプレート

仮想マシンの作成/破壊

インスタンスグループ

マネージャー

Instance Templateインスタンステンプレート

マネージドインスタンスグループ

VMVM仮想マシン

マネージド インスタンス グループ

● 同一のVMインスタンスのグループ化

● インスタンス グループ マネージャーによ

るプロビジョニングと監視

● インスタンス テンプレートがコンフィグ

レーションをプロビジョニングから切り離

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

マネージドインスタンスグループ

インスタンス グループ アップデーター

仮想マシンの作成/破壊

インスタンスグループ

アップデーター

ローリングアップデート

VMVM仮想マシン

新たなテンプレート

マネージド インスタンス グループ

● 同一のVMインスタンスのグループ化

● インスタンス グループ マネージャーによ

るプロビジョニングと監視

● インスタンス テンプレートがコンフィグ

レーションをプロビジョニングから切り離

● インスタンス グループ アップデーターが

ローリング アップデートを適用

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

Compute Engine Autoscaler

マネージドインスタンスグループ

仮想マシンの作成/破壊

インスタンスグループ

マネージャー

アクチュエータ

監視

オートスケーラー

クラウド モニタリング

利用

VMVM仮想マシン

Pub/Subトピック

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

コンテナリゼーション

エクストラクターワーカー

仮想マシンの作成/破壊

インスタンスグループ

マネージャー

アクチュエータ

監視

オートスケーラー

クラウド モニタリング

利用

VMVMコンテナ

仮想マシン

トピックの抽出

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

将来: Container Engine

Kubernetesを使用してDockerコンテナをデプロイ、実行、管理

コンテナ専用に作られた仮想マシンのクラスタをスピンアップ

いかなるDockerファイルも1つのコマンドでクラスタにインストール可能

モバイルアプリのインストールと同じくらい容易にコンテナをデプロイ

今日のトークセッション: 望ましい状態: Kubernetes のコンテナ技術ですべてをシンプルに

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

まとめ

入力バケット

スティッチングQ

デバイス

エクストラクションQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

コーディネーション

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

コーディネーション

入力バケット

スティッチQ

デバイス

エクストラクトQ

通知プロセッサー エクストラク

ター

スティッチャー

動画アップロード

オブジェクト変更通知

出力バケット

コーディネーター

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

Firebase

次のトークセッションにも是非ご参加ください!

意外と簡単、AI を使ったリアルタイム モバイルゲーム開発

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

まとめとHex Test

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

• Bret McGowen• Francesc Campoy• Kathy Kam• Ray Tsang

デモ作成

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

ありがとうございました!