SlideShare a Scribd company logo
頼兼 孝幸
Google Cloud Japan
Application Modernization Specialist
What’s New in Cloud Run 2021 後期
Cloud Run の概要
Cloud Run
Google Cloud Next '19 で発表
Knative API 互換のサーバーレスコンテナ
サーバーレスのアジリティを
コンテナ化したアプリケーションに
Google Cloud のサーバーレス
App Engine Cloud Functions
Cloud Run
アプリケーション
実行環境
関数
Function as a Service
コンテナ
実行環境
高速なデプロイ
ステートレスなコンテナ
高速に 0 to N スケール
数秒でデプロイし URL を付与
サーバーレス・ネイティブ
管理するサーバーはなし
コードに集中
言語やライブラリの制約なし
きっちり使った分だけお支払い
高いポータビリティ
どこでも同じ Developer Experience
フルマネージでも GKE のクラスタ上で
も
Knative API の一貫性
ロックインの排除
Cloud Run の主な特徴
Cloud Run
完全にサーバーレス
管理するクラスタ無し
使った分だけお支払い
Cloud Run for Anthos
GKE のクラスタ上でサーバーレス体験
Anthos ライセンス + GKE の費用
本資料は
こちらを説明
2 つの Cloud Run
Cloud Run の機能紹介
(新しい機能にフォーカス)
New
Cloud Run のリソースモデル
Revision A-1
Revision A-2
Revision A-3
Revision B-1
Revision B-2
Container
Instance
Container
Instance
Container
Instance
Requests
Service A @region A
Service B @region B
Project X
Service
Cloud Run の主リソース
Service 毎に Endpoint を提供
自動で設定される a.run.app ドメイン、
もしくはカスタム ドメインが選択可能
Revision
デプロイするごとに生成される
コンテナ イメージとデプロイ時に指定される
環境変数やパラメーターから構成される
Container Instance
実際にリクエストを受けるコンテナ、
リクエスト の数に応じて自動的にスケール
コンテナのスペック
● CPU
○ デフォルト 1 vCPU
○ 変更可、1 vCPU、2 vCPU、4 vCPU から選択
○ 4 vCPU の場合はメモリを 2 GiB 以上選択する必要あり
● メモリ
○ デフォルト 512 MiB
○ 変更可、最小 128 MiB 〜 最大 16 GiB
● ファイルシステム
○ 読み書き可能
○ コンテナに割り当てられたメモリ上を利用、データの永続性なし(第 1 世代)
○ Filestore や Cloud Storage FUSE を利用が可能(第 2 世代)
New
New
Preview
Preview
Concurrency( コンカレンシー )
Concurrency とは同時に 1 つの Container Instance に
投げられるリクエストの最大数。
Google Cloud Functions など一般的な FaaS は
一度に 1 つのリクエストしかハンドルできない。
なので "concurrency = 1".
Cloud Run の場合、concurrency の値を 1 から 1000 まで
設定できる(default: 80) ので、1 つの Container Instance で同
時に複数のリクエストを処理することができる。
concurrency = 1
concurrency = 20
ユースケースの拡張
オートスケーリング
Service A
繁忙期
Service A
リクエストがない時間帯
Container Instance
のデフォルト最大数は
1000
Cloud Run ではリクエスト数に応じて
特に明示的に設定をしていなくてもオートスケーリングを行う
リクエストがしばらくない場合、 Container Instance が 0 になる
HTTP リクエスト処理時間に応じた CPU Allocation と課金
Instance
Billable Time
Instance Time
Request 1
Start
Request 1
End
Request 2
Start
Request 2
End
Cold Start に対応する
Minimum instances を指定することで Cold Start の影響を小さくすることができる
1
常時起動する Container Instance 数を
指定しておく
リクエストがスパイクした時に
Cold Start の影響を小さくできる
$ gcloud alpha run deploy servicea 
--image gcr.io/cloudrun/hello
--min-instances=4
2
3
4
1. HTTP リクエスト処理時間に応じたCPU Allocation と課金(これまで通り)
● Container Instance が HTTP リクエストを処理している時間にのみ課金 が行われる。
● 常に HTTP のリクエストが伴う Web や API などのホスティングに最適。
● HTTP リクエストがない場合、 CPU が Throttle されてしまいバックグラウンドタスクなどを
行うことが出来ない。
2. インスタンス時間に応じたCPU Allocation と課金(Always on CPU)
● HTTP リクエストの有無に関わらず、 常に CPU が Allocate され、Container Instance が存在してい
る時間に対して課金 が行われる。
● バックグラウンドタスクや非同期処理などを行うのに最適。
Always on CPU の登場で、非同期処理のユースケースにも対応
New
Preview
バックグラウンド タスクを実行する、非同期処理を行う
デフォルトでは HTTP リクエスト 処理中にのみ CPU が Allocation されるが、
常時 CPU を Allocation することで、HTTP リクエストがない状況でも
バックグラウンド タスクなどの処理が可能に。
Cloud Pub / Sub への Pull Subscribe
$ gcloud beta run deploy servicea 
--no-cpu-throttling 
--min-instances=3
Cloud Pub / Sub
Topic
pull
pull
pull
レスポンス後にタスクを実行する
1. リクエスト
2. レスポンス
3. レスポンス後に、
時間が掛かる処理を実行
3rd Party
Service
$ gcloud beta run deploy serviceb 
--no-cpu-throttling
--min-instances=1
min-instances
オプション無しだと、
15分程度でコンテナが
削除されるので注意
Preview
インスタンス時間に応じた CPU Allocation と課金
Instance
Instance Time
Billable Time
Request 1
Start
Request 1
End
Request 2
Start
Request 2
End
Instance Deleted
性能の高速化
● CPU パフォーマンスの高速化
● ネットワーク パフォーマンスを高速化
ユースケースの拡大
● すべてのシステムコール、名前空間、 cgroup のサポートを含む、Linux との完全な互換性
● ネットワーク ファイル システムのサポート
※ プレビューでは、第 1 世代よりもコールド スタート時間が少し長くなる点に注意
第 2 世代の実行環境の登場
New
Preview
ネットワーク ファイル システムのサポート
● Cloud Filestore や Cloud Storage FUSE を
利用して、複数のコンテナやサービス間のデー
タを共有可能
コンテナ
インスタンス
サービスA サービスB
コンテナ
インスタンス
コンテナ
インスタンス
起動スクリプトで
mount
VPC Access Connector 経由で
VPC 内の Filestore へアクセス
Preview
開発がより便利に、よりセキュアに
● Cloud Audit Logs と Pub/Sub が、
Eventarc トリガーとして設定可能だった
が、Cloud Storage イベントも、Cloud
Audit Logs を使わずに設定することが可
能になりました
● Cloud Audit Logs を不要に有効化する必
要もなく、ネイティブ統合されることで、 起
動までの時間が短縮される などのメリット
があります
● オブジェクトの作成、削除、アーカイブ、メ
タデータの更新など
Eventarc が Cloud Storage トリガーをサポート
gcloud eventarc triggers create storage-events-trigger 
--destination-run-service={CLOUD_RUN_SERVICE} 
--destination-run-region={CLOUD_RUN_REGION} 
--event-filters="type=google.cloud.storage.object.v1.finalized" 
--event-filters="bucket={GCS_BUCKET}" 
--service-account={SERVICE_ACCOUNT}
オブジェクト作成をトリガーに
Cloud Run サービスを実行する例
Preview
New
Cloud Run は Secret Manager をネイティブにサポート。シークレットを簡単かつ安全に扱いつ つ、
3rd party などのサービスへアクセスすることが可能。
1. シークレットをコンテナインスタンスに
マウントor 環境変数としてセット
3rd Party
Service
2. シークレットを使って、
3rd Party 
Service へアクセス
Service A
Container
Instance
App / HTTP
Server
Secret Manager を使い、3rd party サービスへアクセスする
Secret
Manager
GA
Binary Authorization を有効化し、承認されたコンテナだけをデプロイ
GA
脆弱性スキャン
Cloud Run
Artifact
Registry
CI / CD Pipeline
Build
Test
Scan
Analysis
QA
イメージの署名を行い、
証明書を作成
deploy
ポリシーに適合した
イメージでない場合、デ
プロイされない
   Binary
   Authorization
ネットワークや認証まわり
前期にリリースがまとまっていたので割愛
Google Cloud Day: Digital ‘21 のセッションをご覧ください
https://cloudonair.withgoogle.com/events/google-cloud-day-digital-21
Cloud Run を使ったアーキテクチャ
背景(課題)
● インフラ管理、運用を行う人員がいない 。いた場合も、 コストをかけたくない
● リリース初期は最小限にコストを抑え つつ、事業が伸びた際に は、その分
スケールする ようなバックエンド構成にしておきたい
解決手段
● アプリ基盤や DB を、Google マネージドなサーバーレス(厳密には、 Spanner はサー
バーレスではないが、インフラ管理不要)構成にする
● Cloud Run でサービスを分離させ、事業規模に応じてサービスを増やすことで、
マイクロサービスを正しい粒度で運用可能にする
Cloud Run
HTTP(S) LB
Cloud
Spanner
Frontend データベース
Backend Service A
Cloud Run Firestore
データベース
Cloud Storage
HTML, CSS, JS (static)
Backend Service B
Cloud Run Eventarc Cloud Run
Backend Service C
Cloud Storage
Event
trigger
インフラ管理不要のマイクロサービス バックエンドを構築
“Google Cloud でのサービスオーケストレーション| Google Cloud Blog”
https://cloud.google.com/blog/ja/topics/developers-practitioners/service-orchestration-google-cloud
公式ブログに示された “一つの” 方針
・“コンテキスト境界” をまたぐ制御は コレオグラフィ
・“コンテキスト境界” 内の制御には オーケストレーション
あなたの EDA に必要なのは Choreography? Orchestration?
どちらがいいではなく
適宜使い分けるもの
※ EDA = Event Driven Architecture
イベント駆動アーキテクチャのメリットがさまざま享受できる王道パターン
・Pub/Sub を使ったパターン(右)をまずは検討
・Eventarc を挟む(左)かどうかは要件次第
Choreography アプローチ: Google Cloud での構成例
Orchestration アプローチ: Google Cloud での構成例
状態とその遷移を管理するコンポーネントが存在するパターン
・Workflows を使ったオーケストレーション
・もしくは自前実装(EDA の意識が不要、一般的によくある構成)
どちらにも使えるその他 Google Cloud のマネージド サービス
EDA の部品としてご検討ください
・Cloud Scheduler: フルマネージド cron ジョブ スケジューラ
・Cloud Tasks: 後続の処理と関心を分離できない点には注意
● Concurrency は最大 1,000、メモリは最大 16 GB まで設定可能に
● Always on CPU の登場により、非同期処理やバックグラウンド タスクなどにも対応
● 第 2 世代の実行環境の登場により、 Filestore を利用したファイル保持などが可能
● Eventarc で Cloud Storage イベントを、ネイティブにトリガー可能
● Secret Manager や、Binary Authorization など、セキュリティ機能の連携が GA
まとめ

More Related Content

PDF
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
なぜ「マイクロサービス“化”」が必要なのか
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PDF
マルチテナント化で知っておきたいデータベースのこと
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
なぜ「マイクロサービス“化”」が必要なのか
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
マルチテナント化で知っておきたいデータベースのこと

What's hot (20)

PPTX
Istioサービスメッシュ入門
PPTX
Azure仮想マシンと仮想ネットワーク
PPTX
イベント・ソーシングを知る
PPTX
分散システムについて語らせてくれ
PDF
Dockerからcontainerdへの移行
PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
PPTX
CleanArchitecture 第4部 「コンポーネントの原則」
PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
PDF
Apache Kafka 0.11 の Exactly Once Semantics
PDF
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
PPTX
これがCassandra
PPTX
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
PDF
Kakao Cloud Native Platform, 9rum
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
PDF
Unified JVM Logging
PDF
DockerとPodmanの比較
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Istioサービスメッシュ入門
Azure仮想マシンと仮想ネットワーク
イベント・ソーシングを知る
分散システムについて語らせてくれ
Dockerからcontainerdへの移行
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
CleanArchitecture 第4部 「コンポーネントの原則」
AlmaLinux と Rocky Linux の誕生経緯&比較
Apache Kafka 0.11 の Exactly Once Semantics
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
これがCassandra
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Kakao Cloud Native Platform, 9rum
SPAセキュリティ入門~PHP Conference Japan 2021
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
Unified JVM Logging
DockerとPodmanの比較
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Ad

Similar to What’s new in cloud run 2021 後期 (20)

PPTX
やっぱコンテナ好きやねん Serverless Meet Up #02.pptx
PDF
[Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月...
PDF
GCP & Gaming 〜平成最後のアップデート〜 | Google Cloud INSIDE Games & Apps
PDF
[Cloud OnAir] ゼロから始める Cloud Run 〜概要から実践まで全てをお届けします〜 2020 年 2 月 20 日放送
PDF
GCPで実現するクラウドネイティブアプリケーション
PDF
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
PDF
甘酸っぱいGCPレガシーApp Engine python2からCloud Runへの移行の勘所
PDF
Google Cloud でアプリケーションを動かす.pdf
PDF
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
PDF
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
PDF
Google Cloud Platform 概要
PDF
GCP でも Serverless!!
PDF
[Cloud OnAir] Anthos で実現する ハイブリッドクラウド 〜 Cloud Service Mesh 編 〜 2019年9月5日 放送
PDF
Google Cloud Platform 概要
PPTX
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
PDF
Innovator Live Japan 3_23 【現場の本音】App Engine から Cloud Run に移行してみた.pdf
PDF
[Cloud OnAir] #01 徹底解剖 GCP のここがすごい
PDF
[Cloud on air] #02 GCP のアプリランタイムについて学ぼう
PDF
Google for モバイル アプリ - コンテナ技術と Google Compute Engine で実現するクラウド時代のアプリ実行環境
PDF
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
やっぱコンテナ好きやねん Serverless Meet Up #02.pptx
[Cloud OnAir] Cloud Run Deep Dive ~ GCP で実践するモダンなサーバーレス アプリケーション開発 ~ 2019年9月...
GCP & Gaming 〜平成最後のアップデート〜 | Google Cloud INSIDE Games & Apps
[Cloud OnAir] ゼロから始める Cloud Run 〜概要から実践まで全てをお届けします〜 2020 年 2 月 20 日放送
GCPで実現するクラウドネイティブアプリケーション
[Cloud OnAir] Dive to Google Kubernetes Engine 2018年8月2日 放送
甘酸っぱいGCPレガシーApp Engine python2からCloud Runへの移行の勘所
Google Cloud でアプリケーションを動かす.pdf
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
Google Cloud Platform 概要
GCP でも Serverless!!
[Cloud OnAir] Anthos で実現する ハイブリッドクラウド 〜 Cloud Service Mesh 編 〜 2019年9月5日 放送
Google Cloud Platform 概要
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
Innovator Live Japan 3_23 【現場の本音】App Engine から Cloud Run に移行してみた.pdf
[Cloud OnAir] #01 徹底解剖 GCP のここがすごい
[Cloud on air] #02 GCP のアプリランタイムについて学ぼう
Google for モバイル アプリ - コンテナ技術と Google Compute Engine で実現するクラウド時代のアプリ実行環境
[Cloud OnAir] Google Networking Deep Dive ! その技術と設計の紹介 2018年8月9日 放送
Ad

More from Google Cloud Platform - Japan (20)

PDF
ServerlessDays Tokyo 2022 Virtual.pdf
PDF
20221105_GCPUG 女子会 Kubernets 編.pdf
PDF
【Dialogflow cx】はじめてみよう google cloud dialogflow cx 編
PDF
Google Cloud で実践する SRE
PDF
[Cloud OnAir] 事例紹介 : 株式会社マーケティングアプリケーションズ 〜クラウドへのマイグレーションとその後〜 2020年12月17日 放送
PDF
[Cloud OnAir] 【実演】Google Cloud VMware Engine と VMware ソリューションを組み合わせたハイブリッド環境の...
PDF
[Cloud OnAir] Google Workspace でできる データ分析と業務自動化のご紹介 2020年12月3日 放送
PDF
[Cloud OnAir] Google Cloud へのマイグレーション ツールの紹介 2020年11月26日 放送
PDF
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
PDF
[Cloud OnAir] 事例紹介: 株式会社オープンハウス 〜Google サービスを活用したオープンハウスの AI の取り組み〜 2020年11月1...
PDF
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
PDF
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
PDF
[Cloud OnAir] Google Cloud の AI / IoT 最新事例紹介 2020年10月22日 放送
PDF
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
PDF
明日から役立つ BigQuery ML 活用 5 つのヒント | Google Cloud INSIDE Games & Apps: Online
PDF
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
PDF
『MAGELLAN BLOCKS』を使って BigQuery を使い倒す!| Google Cloud INSIDE Games & Apps: Online
PDF
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
PDF
[Cloud OnAir] Talks by DevRel Vol.4 データ管理とデータ ベース 2020年8月27日 放送
PDF
[Cloud OnAir] Talks by DevRel Vol.2 セキュリティ 2020年8月6日 放送
ServerlessDays Tokyo 2022 Virtual.pdf
20221105_GCPUG 女子会 Kubernets 編.pdf
【Dialogflow cx】はじめてみよう google cloud dialogflow cx 編
Google Cloud で実践する SRE
[Cloud OnAir] 事例紹介 : 株式会社マーケティングアプリケーションズ 〜クラウドへのマイグレーションとその後〜 2020年12月17日 放送
[Cloud OnAir] 【実演】Google Cloud VMware Engine と VMware ソリューションを組み合わせたハイブリッド環境の...
[Cloud OnAir] Google Workspace でできる データ分析と業務自動化のご紹介 2020年12月3日 放送
[Cloud OnAir] Google Cloud へのマイグレーション ツールの紹介 2020年11月26日 放送
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
[Cloud OnAir] 事例紹介: 株式会社オープンハウス 〜Google サービスを活用したオープンハウスの AI の取り組み〜 2020年11月1...
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
[Cloud OnAir] Google Cloud の AI / IoT 最新事例紹介 2020年10月22日 放送
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
明日から役立つ BigQuery ML 活用 5 つのヒント | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
『MAGELLAN BLOCKS』を使って BigQuery を使い倒す!| Google Cloud INSIDE Games & Apps: Online
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
[Cloud OnAir] Talks by DevRel Vol.4 データ管理とデータ ベース 2020年8月27日 放送
[Cloud OnAir] Talks by DevRel Vol.2 セキュリティ 2020年8月6日 放送

What’s new in cloud run 2021 後期

  • 1. 頼兼 孝幸 Google Cloud Japan Application Modernization Specialist What’s New in Cloud Run 2021 後期
  • 3. Cloud Run Google Cloud Next '19 で発表 Knative API 互換のサーバーレスコンテナ サーバーレスのアジリティを コンテナ化したアプリケーションに
  • 4. Google Cloud のサーバーレス App Engine Cloud Functions Cloud Run アプリケーション 実行環境 関数 Function as a Service コンテナ 実行環境
  • 5. 高速なデプロイ ステートレスなコンテナ 高速に 0 to N スケール 数秒でデプロイし URL を付与 サーバーレス・ネイティブ 管理するサーバーはなし コードに集中 言語やライブラリの制約なし きっちり使った分だけお支払い 高いポータビリティ どこでも同じ Developer Experience フルマネージでも GKE のクラスタ上で も Knative API の一貫性 ロックインの排除 Cloud Run の主な特徴
  • 6. Cloud Run 完全にサーバーレス 管理するクラスタ無し 使った分だけお支払い Cloud Run for Anthos GKE のクラスタ上でサーバーレス体験 Anthos ライセンス + GKE の費用 本資料は こちらを説明 2 つの Cloud Run
  • 8. Cloud Run のリソースモデル Revision A-1 Revision A-2 Revision A-3 Revision B-1 Revision B-2 Container Instance Container Instance Container Instance Requests Service A @region A Service B @region B Project X Service Cloud Run の主リソース Service 毎に Endpoint を提供 自動で設定される a.run.app ドメイン、 もしくはカスタム ドメインが選択可能 Revision デプロイするごとに生成される コンテナ イメージとデプロイ時に指定される 環境変数やパラメーターから構成される Container Instance 実際にリクエストを受けるコンテナ、 リクエスト の数に応じて自動的にスケール
  • 9. コンテナのスペック ● CPU ○ デフォルト 1 vCPU ○ 変更可、1 vCPU、2 vCPU、4 vCPU から選択 ○ 4 vCPU の場合はメモリを 2 GiB 以上選択する必要あり ● メモリ ○ デフォルト 512 MiB ○ 変更可、最小 128 MiB 〜 最大 16 GiB ● ファイルシステム ○ 読み書き可能 ○ コンテナに割り当てられたメモリ上を利用、データの永続性なし(第 1 世代) ○ Filestore や Cloud Storage FUSE を利用が可能(第 2 世代) New New Preview Preview
  • 10. Concurrency( コンカレンシー ) Concurrency とは同時に 1 つの Container Instance に 投げられるリクエストの最大数。 Google Cloud Functions など一般的な FaaS は 一度に 1 つのリクエストしかハンドルできない。 なので "concurrency = 1". Cloud Run の場合、concurrency の値を 1 から 1000 まで 設定できる(default: 80) ので、1 つの Container Instance で同 時に複数のリクエストを処理することができる。 concurrency = 1 concurrency = 20
  • 12. オートスケーリング Service A 繁忙期 Service A リクエストがない時間帯 Container Instance のデフォルト最大数は 1000 Cloud Run ではリクエスト数に応じて 特に明示的に設定をしていなくてもオートスケーリングを行う リクエストがしばらくない場合、 Container Instance が 0 になる
  • 13. HTTP リクエスト処理時間に応じた CPU Allocation と課金 Instance Billable Time Instance Time Request 1 Start Request 1 End Request 2 Start Request 2 End
  • 14. Cold Start に対応する Minimum instances を指定することで Cold Start の影響を小さくすることができる 1 常時起動する Container Instance 数を 指定しておく リクエストがスパイクした時に Cold Start の影響を小さくできる $ gcloud alpha run deploy servicea --image gcr.io/cloudrun/hello --min-instances=4 2 3 4
  • 15. 1. HTTP リクエスト処理時間に応じたCPU Allocation と課金(これまで通り) ● Container Instance が HTTP リクエストを処理している時間にのみ課金 が行われる。 ● 常に HTTP のリクエストが伴う Web や API などのホスティングに最適。 ● HTTP リクエストがない場合、 CPU が Throttle されてしまいバックグラウンドタスクなどを 行うことが出来ない。 2. インスタンス時間に応じたCPU Allocation と課金(Always on CPU) ● HTTP リクエストの有無に関わらず、 常に CPU が Allocate され、Container Instance が存在してい る時間に対して課金 が行われる。 ● バックグラウンドタスクや非同期処理などを行うのに最適。 Always on CPU の登場で、非同期処理のユースケースにも対応 New Preview
  • 16. バックグラウンド タスクを実行する、非同期処理を行う デフォルトでは HTTP リクエスト 処理中にのみ CPU が Allocation されるが、 常時 CPU を Allocation することで、HTTP リクエストがない状況でも バックグラウンド タスクなどの処理が可能に。 Cloud Pub / Sub への Pull Subscribe $ gcloud beta run deploy servicea --no-cpu-throttling --min-instances=3 Cloud Pub / Sub Topic pull pull pull レスポンス後にタスクを実行する 1. リクエスト 2. レスポンス 3. レスポンス後に、 時間が掛かる処理を実行 3rd Party Service $ gcloud beta run deploy serviceb --no-cpu-throttling --min-instances=1 min-instances オプション無しだと、 15分程度でコンテナが 削除されるので注意 Preview
  • 17. インスタンス時間に応じた CPU Allocation と課金 Instance Instance Time Billable Time Request 1 Start Request 1 End Request 2 Start Request 2 End Instance Deleted
  • 18. 性能の高速化 ● CPU パフォーマンスの高速化 ● ネットワーク パフォーマンスを高速化 ユースケースの拡大 ● すべてのシステムコール、名前空間、 cgroup のサポートを含む、Linux との完全な互換性 ● ネットワーク ファイル システムのサポート ※ プレビューでは、第 1 世代よりもコールド スタート時間が少し長くなる点に注意 第 2 世代の実行環境の登場 New Preview
  • 19. ネットワーク ファイル システムのサポート ● Cloud Filestore や Cloud Storage FUSE を 利用して、複数のコンテナやサービス間のデー タを共有可能 コンテナ インスタンス サービスA サービスB コンテナ インスタンス コンテナ インスタンス 起動スクリプトで mount VPC Access Connector 経由で VPC 内の Filestore へアクセス Preview
  • 21. ● Cloud Audit Logs と Pub/Sub が、 Eventarc トリガーとして設定可能だった が、Cloud Storage イベントも、Cloud Audit Logs を使わずに設定することが可 能になりました ● Cloud Audit Logs を不要に有効化する必 要もなく、ネイティブ統合されることで、 起 動までの時間が短縮される などのメリット があります ● オブジェクトの作成、削除、アーカイブ、メ タデータの更新など Eventarc が Cloud Storage トリガーをサポート gcloud eventarc triggers create storage-events-trigger --destination-run-service={CLOUD_RUN_SERVICE} --destination-run-region={CLOUD_RUN_REGION} --event-filters="type=google.cloud.storage.object.v1.finalized" --event-filters="bucket={GCS_BUCKET}" --service-account={SERVICE_ACCOUNT} オブジェクト作成をトリガーに Cloud Run サービスを実行する例 Preview New
  • 22. Cloud Run は Secret Manager をネイティブにサポート。シークレットを簡単かつ安全に扱いつ つ、 3rd party などのサービスへアクセスすることが可能。 1. シークレットをコンテナインスタンスに マウントor 環境変数としてセット 3rd Party Service 2. シークレットを使って、 3rd Party  Service へアクセス Service A Container Instance App / HTTP Server Secret Manager を使い、3rd party サービスへアクセスする Secret Manager GA
  • 23. Binary Authorization を有効化し、承認されたコンテナだけをデプロイ GA 脆弱性スキャン Cloud Run Artifact Registry CI / CD Pipeline Build Test Scan Analysis QA イメージの署名を行い、 証明書を作成 deploy ポリシーに適合した イメージでない場合、デ プロイされない    Binary    Authorization
  • 25. 前期にリリースがまとまっていたので割愛 Google Cloud Day: Digital ‘21 のセッションをご覧ください https://cloudonair.withgoogle.com/events/google-cloud-day-digital-21
  • 27. 背景(課題) ● インフラ管理、運用を行う人員がいない 。いた場合も、 コストをかけたくない ● リリース初期は最小限にコストを抑え つつ、事業が伸びた際に は、その分 スケールする ようなバックエンド構成にしておきたい 解決手段 ● アプリ基盤や DB を、Google マネージドなサーバーレス(厳密には、 Spanner はサー バーレスではないが、インフラ管理不要)構成にする ● Cloud Run でサービスを分離させ、事業規模に応じてサービスを増やすことで、 マイクロサービスを正しい粒度で運用可能にする Cloud Run HTTP(S) LB Cloud Spanner Frontend データベース Backend Service A Cloud Run Firestore データベース Cloud Storage HTML, CSS, JS (static) Backend Service B Cloud Run Eventarc Cloud Run Backend Service C Cloud Storage Event trigger インフラ管理不要のマイクロサービス バックエンドを構築
  • 28. “Google Cloud でのサービスオーケストレーション| Google Cloud Blog” https://cloud.google.com/blog/ja/topics/developers-practitioners/service-orchestration-google-cloud
  • 29. 公式ブログに示された “一つの” 方針 ・“コンテキスト境界” をまたぐ制御は コレオグラフィ ・“コンテキスト境界” 内の制御には オーケストレーション あなたの EDA に必要なのは Choreography? Orchestration? どちらがいいではなく 適宜使い分けるもの ※ EDA = Event Driven Architecture
  • 31. Orchestration アプローチ: Google Cloud での構成例 状態とその遷移を管理するコンポーネントが存在するパターン ・Workflows を使ったオーケストレーション ・もしくは自前実装(EDA の意識が不要、一般的によくある構成)
  • 32. どちらにも使えるその他 Google Cloud のマネージド サービス EDA の部品としてご検討ください ・Cloud Scheduler: フルマネージド cron ジョブ スケジューラ ・Cloud Tasks: 後続の処理と関心を分離できない点には注意
  • 33. ● Concurrency は最大 1,000、メモリは最大 16 GB まで設定可能に ● Always on CPU の登場により、非同期処理やバックグラウンド タスクなどにも対応 ● 第 2 世代の実行環境の登場により、 Filestore を利用したファイル保持などが可能 ● Eventarc で Cloud Storage イベントを、ネイティブにトリガー可能 ● Secret Manager や、Binary Authorization など、セキュリティ機能の連携が GA まとめ