DevelopersIO 2022のビデオセッションにて、「Cloud Run が作る世界」というテーマでお話しました。
Cloud Run が作る世界 2022/7/22 CX事業本部MAD事業部 田中孝明
View Slide
田中孝明 (Takaaki TANAKA)● CX事業本部 MAD事業部所属 ● 福岡オフィス所属 ● 好きな言語: C++ / Swift ● サウナ・スパ プロフェッショナル 2
3MAD事業部と Google Cloud との関わりhttps://classmethod.jp/services/mad/
4Cloud Run
5Cloud Run● コンテナを直接実行できるマネージドコンピューティングプラットフォーム● コンテナイメージをビルドできるものであれば、任意のプログラミング言語で記述されたコードをデプロイできる
6Cloud Run● Google Cloud 上の他のサービスと連携できる○ Pub/Sub○ Cloud Scheduler○ Cloud Tasks○ Eventarc
7Cloud Run のデプロイ その1
8Github からビルドして Cloud Run を実行● ローカルでビルド&実行できるソースコードとDockerfileを用意する○ actix/actix-web (Rust)○ Dockerfile● Github のリポジトリにソースコードと Dockerfile を Pushするhttps://github.com/kongmingstrap/cloud-run-sampler
9Github からビルドして Cloud Run を実行● Cloud Build のトリガーの設定○ 自分のリポジトリをソースに設定○ Github の指定したブランチに Pushすると、Artifact を作成するビルドが走る○ タイムアウトがデフォルトだと10分なので注意
10Github からビルドして Cloud Run を実行● Cloud Run のサービス作成○ Build した コンテナイメージを指定○ その他の設定は必要に応じて
11Github からビルドして Cloud Run を実行● Cloud Run の起動が成功○ 指定のURLでアクセスできるようになります○ 以前のビルドしたバージョンに戻す場合も、リビジョンの切り替えで可能
12Cloud Run のデプロイ その2
13Cloud Run が有効なケース● HTTP、HTTP/2、WebSocket、gRPC 経由で配信されるリクエスト、ストリーム、イベントのいずれかを提供されていること● ローカル永続ファイル システムを必要としないhttps://cloud.google.com/run/docs/fit-for-run?hl=ja
14Cloud Run が有効なケース● 同時に実行しているアプリの複数のインスタンスを処理するようにビルドされている● インスタンスごとに 8 個の CPU と 32 GiB のメモリを上限とし、それ以上を必要としない● コンテナ化されていることhttps://cloud.google.com/run/docs/fit-for-run?hl=ja
15Cloud Run を実行する2つの方法
16Cloud Run でコードを実行する2つの方法● サービス○ Webリクエスト、イベントに応答するコードの実行に使用● ジョブ (Preview)○ 作業(ジョブ)を実行し、作業の完了後に終了するコードの実行に使用
17サービス● 高速なリクエストベースの自動スケーリング● 使い捨てのコンテナファイルシステム● 従量課金制○ リクエストベース○ インスタンスベースhttps://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#services
18サービス● 用途○ Webサイト・Webアプリケーション○ API とマイクロサービス○ ストリーミングデータ処理https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#services
19ジョブ (Preview)● 一つのコンテナインスタンスで実行● 独立した同一のコンテナインスタンスを実行することも可能(配列ジョブ)https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#jobs
20ジョブ (Preview)● 用途○ スクリプトやツール○ 配列ジョブ○ スケジュールされたジョブ● 第2世代の実行環境が必要https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#jobs
21第2世代
22Cloud Run 第2世代 (Preview)● 第1世代の実行環境はコールドスタート時間が高速でエミュレーションを行う○ 全てのOSのシステムコールが実行できるわけではなかった● 第2世代の実行環境では、Linuxの完全な互換性が実現○ CPUパフォーマンスの高速化○ ネットワークパフォーマンスの高速化○ 全てのシステムコール、名前空間、cgroupのサポートを含む、Linuxとの互換性
23Cloud Run 第2世代 (Preview)● ネットワークファイルシステムのサポート○ コンテナ内のディレクトリにマウントできる○ ホストシステムとコンテナ インスタンスの間でリソースを共有し、コンテナ インスタンスがガベージ コレクションされた後もリソースを保持できるhttps://cloud.google.com/run/docs/tutorials/network-filesystems-filestore?hl=ja
24Cloud Functions 第二世代 (Preview)● Cloud Run + Eventarc を利用したインフラストラクチャ○ HTTP関数に対して、最大60分の実行時間○ 最大 16GB の RAMと4つの vCPU を利用可能○ 異なるリビジョンへのトラフィック分割https://cloud.google.com/blog/ja/products/serverless/introducing-the-next-generation-of-cloud-functions
25まとめ● ローカルで動かせる環境をそのままコードとして実行できるので、開発者のマシンに依存しない開発が可能● 第二世代の登場で、今までサーバーレスで実現できなかった処理も今後は選択肢になりうる● Cloud Run は Google Cloud の別のサービス影響を及ぼしているので、最新情報を追うと他のサービスのアップデートもキャッチアップできる