Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Run が作る世界 #devio2022

Cloud Run が作る世界 #devio2022

DevelopersIO 2022のビデオセッションにて、「Cloud Run が作る世界」というテーマでお話しました。

Takaaki Tanaka

July 21, 2022
Tweet

More Decks by Takaaki Tanaka

Other Decks in Technology

Transcript

  1. Cloud Run が作る世界
 2022/7/22
 CX事業本部MAD事業部 田中孝明 


  2. 田中孝明 (Takaaki TANAKA) • CX事業本部 MAD事業部所属
 • 福岡オフィス所属
 • 好きな言語:

    C++ / Swift
 • サウナ・スパ プロフェッショナル
 2
  3. 3 MAD事業部と Google Cloud との関わり https://classmethod.jp/services/mad/

  4. 4 Cloud Run

  5. 5 Cloud Run • コンテナを直接実行できるマネージドコンピューティング プラットフォーム • コンテナイメージをビルドできるものであれば、任意のプ ログラミング言語で記述されたコードをデプロイできる

  6. 6 Cloud Run • Google Cloud 上の他のサービスと連携できる ◦ Pub/Sub ◦

    Cloud Scheduler ◦ Cloud Tasks ◦ Eventarc
  7. 7 Cloud Run のデプロイ その1

  8. 8 Github からビルドして Cloud Run を実行 • ローカルでビルド&実行できるソースコードとDockerfile を用意する ◦

    actix/actix-web (Rust) ◦ Dockerfile • Github のリポジトリにソースコードと Dockerfile を Push する https://github.com/kongmingstrap/cloud-run-sampler
  9. 9 Github からビルドして Cloud Run を実行 • Cloud Build のトリガーの設定

    ◦ 自分のリポジトリをソースに設定 ◦ Github の指定したブランチに Push すると、Artifact を作成するビルドが 走る ◦ タイムアウトがデフォルトだと10分な ので注意
  10. 10 Github からビルドして Cloud Run を実行 • Cloud Run のサービス作成

    ◦ Build した コンテナイメージを指定 ◦ その他の設定は必要に応じて
  11. 11 Github からビルドして Cloud Run を実行 • Cloud Run の起動が成功

    ◦ 指定のURLでアクセスできるようになります ◦ 以前のビルドしたバージョンに戻す場合も、リビジョンの切り 替えで可能
  12. 12 Cloud Run のデプロイ その2

  13. 13 Cloud Run が有効なケース • HTTP、HTTP/2、WebSocket、gRPC 経由で配信されるリク エスト、ストリーム、イベントのいずれかを提供されている こと •

    ローカル永続ファイル システムを必要としない https://cloud.google.com/run/docs/fit-for-run?hl=ja
  14. 14 Cloud Run が有効なケース • 同時に実行しているアプリの複数のインスタンスを処理 するようにビルドされている • インスタンスごとに 8

    個の CPU と 32 GiB のメモリを上限と し、それ以上を必要としない • コンテナ化されていること https://cloud.google.com/run/docs/fit-for-run?hl=ja
  15. 15 Cloud Run を実行する2つの方法

  16. 16 Cloud Run でコードを実行する2つの方法 • サービス ◦ Webリクエスト、イベントに応答するコードの実行に 使用 •

    ジョブ (Preview) ◦ 作業(ジョブ)を実行し、作業の完了後に終了するコードの実 行に使用
  17. 17 サービス • 高速なリクエストベースの自動スケーリング • 使い捨てのコンテナファイルシステム • 従量課金制 ◦ リクエストベース

    ◦ インスタンスベース https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#services
  18. 18 サービス • 用途 ◦ Webサイト・Webアプリケーション ◦ API とマイクロサービス ◦

    ストリーミングデータ処理 https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#services
  19. 19 ジョブ (Preview) • 一つのコンテナインスタンスで実行 • 独立した同一のコンテナインスタンスを実行することも可 能(配列ジョブ) https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#jobs

  20. 20 ジョブ (Preview) • 用途 ◦ スクリプトやツール ◦ 配列ジョブ ◦

    スケジュールされたジョブ • 第2世代の実行環境が必要 https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#jobs
  21. 21 第2世代

  22. 22 Cloud Run 第2世代 (Preview) • 第1世代の実行環境はコールドスタート時間が高速でエ ミュレーションを行う ◦ 全てのOSのシステムコールが実行できるわけではなかった

    • 第2世代の実行環境では、Linuxの完全な互換性が実現 ◦ CPUパフォーマンスの高速化 ◦ ネットワークパフォーマンスの高速化 ◦ 全てのシステムコール、名前空間、cgroupのサポートを含 む、Linuxとの互換性
  23. 23 Cloud Run 第2世代 (Preview) • ネットワークファイルシステムのサポート ◦ コンテナ内のディレクトリにマウントできる ◦

    ホストシステムとコンテナ インスタンスの間でリソースを共有 し、コンテナ インスタンスがガベージ コレクションされた後も リソースを保持できる https://cloud.google.com/run/docs/tutorials/network-filesystems-filestore?hl=ja
  24. 24 Cloud 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. 25 まとめ • ローカルで動かせる環境をそのままコードとして実行でき るので、開発者のマシンに依存しない開発が可能 • 第二世代の登場で、今までサーバーレスで実現できな かった処理も今後は選択肢になりうる • Cloud

    Run は Google Cloud の別のサービス影響を及ぼ しているので、最新情報を追うと他のサービスのアップ デートもキャッチアップできる
  26. None