Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloud Deploy と仲良くなりたい
Search
Tomonori Hayashi / ぴーはや
March 17, 2024
Technology
950
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloud Deploy と仲良くなりたい
Tomonori Hayashi / ぴーはや
March 17, 2024
More Decks by Tomonori Hayashi / ぴーはや
See All by Tomonori Hayashi / ぴーはや
BigQuery の Cross-cloud Lakehouse への歩み
phaya72
2
660
ビジネス要望の翻訳が生む アーキテクチャの複雑性とトレードオフ
phaya72
2
570
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
34
22k
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
3
3.6k
Pub/Sub vs Cloud Tasks - その違い、わかりますか?-
phaya72
2
510
OpenTelemetry SpanProcessor を Let's カスタマイズ!
phaya72
3
410
非同期処理でも分散トレーシングしたい!- OpenTelemetry × Pub/Sub -
phaya72
2
950
エラーバジェット枯渇の原因 - 偽陽性との戦い -
phaya72
2
220
Vertex AI Experimentsの実態 - コードを辿った先にあったもの -
phaya72
3
1.4k
Other Decks in Technology
See All in Technology
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
420
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.5k
Aurora MySQL 8.4リリース! Rubyistが備えること / what-rubyist-should-prepare-for-aurora-mysql-8-4
fkmy
0
620
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
930
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
4
420
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
410
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
490
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
480
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
300
現場との対話から始める “作る前に問い直す”業務改善
mochico50
1
210
Network Firewallやっていき!
news_it_enj
0
260
AI時代の開発生産性を捉え直す — 経営と現場をつなぐ「開発組織のオブザーバビリティ」— / AI Dev Ex Conference 2026
tkyowa
1
1.3k
Featured
See All Featured
From π to Pie charts
rasagy
0
240
Being A Developer After 40
akosma
91
590k
Raft: Consensus for Rubyists
vanstee
141
7.6k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
660
Measuring & Analyzing Core Web Vitals
bluesmoon
9
900
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
How to make the Groovebox
asonas
2
2.3k
Transcript
Cloud Deploy と仲良くなりたい Jagu’e’r クラウドネイティブ分科会 Meetup#13 - Tomonori Hayashi 1
Tomonori Hayashi • NTT コミュニケーションズ イノベーションセンター所属 ◦ ノーコード時系列分析ツール「 Node-AI」の開発/運用 ◦
アプリケーションエンジニア ▪ Front:TypeScript - React/Next.js ▪ Infra:Google Cloud • Jagu’e’r ◦ 人材育成分科会 ◦ O11y - SRE 分科会 • Google Cloud Partner Top Engineer 2024 • Google Cloud All Certifications • Favorite Word ◦ class SRE implements DevOps @pHaya72 2
Node-AI の紹介 • ノーコードで AI モデルを作成できる WEB アプリケーション • カードを直感的につなげるだけで
時系列データの前処理から AI モデルの学習・評価までの パイプラインを作成・実行 できる • 技術スタック ◦ TypeScript + React / Next ◦ Python + Django ◦ C# + ASP.NET Core ◦ Kubernetes ◦ Google Cloud ◦ Scikit-learn / Tensorflow / Pytorch 3
Google Cloud × Observability 4
(隙間時間で)こんなことに挑戦しています Cloud Run を中心に アーキテクチャを構築 IAP ・URL マスク・ストレージマウントなど 痒いところに手が届く感じが良き! 構築中のテレメトリ収集/可視化基盤
Cloud Operations との連携 でテレメトリを集約 Grafana から Cloud Monitoring や Cloud Logging に手を伸ばしてテレメトリ を取得 & Otel 経由でも取得 5
(隙間時間で)こんなことに挑戦しています Cloud Run を中心に アーキテクチャを構築 IAP ・URL マスク・ストレージマウントなど 痒いところに手が届く感じが良き! 構築中のテレメトリ収集/可視化基盤
Cloud Operations との連携 でテレメトリを集約 Grafana から Cloud Monitoring や Cloud Logging に手を伸ばしてテレメトリ を取得 & Otel 経由でも取得 6 CI/CD はどこぞ?
構築中ってのもありゴリゴリ手動 ビルド デプロイ $ docker build -t asia-northeast1-docker.pkg.dev/hoge/grafana/dev . $
docker push asia-northeast1-docker.pkg.dev/hoge/grafana/dev 7
構築中ってのもありゴリゴリ手動 ビルド デプロイ $ docker build -t asia-northeast1-docker.pkg.dev/hoge/grafana/dev . $
docker push asia-northeast1-docker.pkg.dev/hoge/grafana/dev 構築中 & 個人での開発なら あまり問題にならない 8
構築中ってのもありゴリゴリ手動 ビルド デプロイ $ docker build -t asia-northeast1-docker.pkg.dev/hoge/grafana/dev . $
docker push asia-northeast1-docker.pkg.dev/hoge/grafana/dev 構築中 & 個人での開発なら あまり問題にならない 今後開発も運用もスケールさせたい 9
構築中ってのもありゴリゴリ手動 ビルド/テスト デプロイ $ docker build -t asia-northeast1-docker.pkg.dev/hoge/grafana/dev . $
docker push asia-northeast1-docker.pkg.dev/hoge/grafana/dev 構築中 & 個人での開発なら あまり問題にならない 今後開発も運用もスケールさせたい 登壇機会もらったし 検討してみよう 10
CI/CD の選択肢 ビルド/テスト/デプロイ ビルド/テスト ビルド/テスト デプロイ デプロイ or and and
11
CI/CD の選択肢 ビルド/テスト/デプロイ ビルド/テスト デプロイ or and ビルド/テスト デプロイ and
12
こんな感じを想像してみた Cloud Shell Editor Github Github Actions Cloud Deploy Artifact
Registry Cloud Run 13
Cloud Deploy さん、こんにちは 定義したプロモーションシーケンスでの一連の ターゲット環境へのアプリ の配信を自動化するマネージドサービス (※1) リリースコンテンツを事前にまとめて環境に依存しない一貫性のある成果 物管理が可能(※2) 継続的デリバリーそのものの改善に必要な指標を可視化
(※2) (※1) https://cloud.google.com/deploy/docs/overview?hl=ja (※2) https://lp.cloudplatformonline.com/rs/808-GJW-314/images/App_Modernization_OnAir_q4_1027_Session.pdf 14
Cloud Deploy さん、こんにちは 定義したプロモーションシーケンスでの一連の ターゲット環境へのアプリ の配信を自動化するマネージドサービス (※1) リリースコンテンツを事前にまとめて環境に依存しない一貫性のある成果 物管理が可能(※2) 継続的デリバリーそのものの改善に必要な指標を可視化
(※2) (※1) https://cloud.google.com/deploy/docs/overview?hl=ja (※2) https://lp.cloudplatformonline.com/rs/808-GJW-314/images/App_Modernization_OnAir_q4_1027_Session.pdf 15 うーん、、 難しそう
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy dev/stg/prod manifest.yaml skaffold .yaml Cloud Build Artifact Registry Create Release Promote to Stg Promote to Prod Release Contents 16 Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy dev/stg/prod manifest.yaml skaffold .yaml Cloud Build Artifact Registry Create Release Promote to Stg Promote to Prod Release Contents 17 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Cloud Build Artifact Registry どの環境に何を デプロイするのか Create Release Promote to Stg Promote to Prod dev/stg/prod manifest.yaml skaffold .yaml Release Contents 18 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ どの環境に何を デプロイするのか Release Contents 19 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ どの環境に何を デプロイするのか Release Contents 20 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ Dev で OK だったら Stg にプロモート どの環境に何を デプロイするのか Release Contents 21 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ Dev で OK だったら Stg にプロモート Release ver.X $ skaffold deploy Stg の manifest.yaml に 基づきデプロイ どの環境に何を デプロイするのか Release Contents 22 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ Dev で OK だったら Stg にプロモート Release ver.X $ skaffold deploy Stg の manifest.yaml に 基づきデプロイ どの環境に何を デプロイするのか Release Contents 23 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Dev の manifest.yaml に 基づきデプロイ Dev で OK だったら Stg にプロモート Release ver.X $ skaffold deploy Stg の manifest.yaml に 基づきデプロイ Release ver.X $ skaffold deploy Stg で OK だったら Prod にプロモート Prod の manifest.yaml に 基づきデプロイ どの環境に何を デプロイするのか Release Contents 24 Cloud Run Service の切り分けとして プロジェクト毎もしくはサービス毎 にしておく Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Release ver.X $ skaffold deploy Release ver.X $ skaffold deploy Yaml や Terraform で 事前に定義 Release Contents 25 Delivery Pipeline Cloud Storage
ばくっとした全体像 Dev - Cloud Run Target Env Stg - Cloud
Run Prod - Cloud Run Cloud Deploy Create Release Promote to Stg Promote to Prod Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml Release ver.X $ skaffold deploy Release ver.X $ skaffold deploy Yaml や Terraform で 事前に定義 Release Contents 26 Delivery Pipeline Cloud Deploy 何をどこの環境にどの順番で(どのように) デプロイするかをあらかじめ設計した デリバリーパイプラインで管理・自動化してくれる
便利な機能 - カナリアリリース - *** - Cloud Run Cloud Deploy
Cloud Build Artifact Registry Release ver.Y $ skaffold deploy 27 Promote to ** ver.Y 50% ver.X 50% DeliveryPipeline に strategy 項目を追加する Delivery Pipeline Cloud Storage
便利な機能 - カナリアリリース - *** - Cloud Run Cloud Deploy
Cloud Build Artifact Registry Release ver.Y $ skaffold deploy 28 Promote to ** ver.Y 100% DeliveryPipeline に strategy 項目を追加する Delivery Pipeline Cloud Storage Stable な状態に移行させることで ver.Y を 100% にロールアウト トラフィック分割した後の新 Ver のロールアウトか 旧 Ver へのロールバックかの作業が容易
便利な機能 - デプロイ後の検証 - Dev - Cloud Run Cloud Deploy
Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml 29 Verify 項目を追加する Create Release or Promote to **
便利な機能 - デプロイ後の検証 - Dev - Cloud Run Cloud Deploy
Create Release or Promote to ** Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml 30 Verify 項目を追加する デプロイ完了後に Verify 項目で 設定したコマンドを実行 $ wget http://*** コマンドが失敗したら ロールアウトも失敗する
便利な機能 - デプロイ指標の可視化・アラート - 31 DevOps 改善に役立つ指標の中でも 「デプロイ頻度」「失敗率」を計測する
便利な機能 - デプロイ後の検証 - Dev - Cloud Run Cloud Deploy
Create Release or Promote to ** Cloud Build Artifact Registry Release ver.X $ skaffold deploy dev/stg/prod manifest.yaml skaffold .yaml 32 Verify 項目を追加する デプロイ完了後に Verify 項目で 設定したコマンドを実行 $ wget http://*** コマンドが失敗したら ロールアウトも失敗する Cloud Deploy デプロイ戦略やデプロイ後の検証も デリバリーパイプラインに組み込める
Github Actions との連携は意外と簡単 33 Workload Identity での連携 OAuth トークンで Docker
に対して認証 (※) https://github.com/google-github-actions/example-workflows/blob/main/workflows/create-cloud-deploy-release/cloud-deploy-to-cloud-run.yml
Github Actions との連携は意外と簡単 34 Workload Identity での連携 OAuth トークンで Docker
に対して認証 (※) https://github.com/google-github-actions/example-workflows/blob/main/workflows/create-cloud-deploy-release/cloud-deploy-to-cloud-run.yml create-cloud-deploy-release という Action を使うことで適切なパラメーターを渡すだけ
Github Actions との連携は意外と簡単 35 Workload Identity での連携 OAuth トークンで Docker
に対して認証 (※) https://github.com/google-github-actions/example-workflows/blob/main/workflows/create-cloud-deploy-release/cloud-deploy-to-cloud-run.yml create-cloud-deploy-release という Action を使うことで適切なパラメーターを渡すだけ よし!これでいい感じの CI/CD 実装ができそうだ・・・
Github Actions との連携は意外と簡単 36 Workload Identity での連携 OAuth トークンで Docker
に対して認証 (※) https://github.com/google-github-actions/example-workflows/blob/main/workflows/create-cloud-deploy-release/cloud-deploy-to-cloud-run.yml create-cloud-deploy-release という Action を使うことで適切なパラメーターを渡すだけ よし!これでいい感じの CI/CD 実装ができそうだ・・・ と思ったけど、Cloud Deploy の良さを活かせるか??
要件とアプローチを整理 37 現状(最低限実装できればいいこと) 検討内容 今のところ 1 プロジェクトに Dev/Prod が 異なる
Cloud Run Service・デプロイ頻度は低い チームの多くは アプリケーションエンジニア
要件とアプローチを整理 38 現状(最低限実装できればいいこと) 検討内容 今のところ 1 プロジェクトに Dev/Prod が 異なる
Cloud Run Service・デプロイ頻度は低い チームの多くは アプリケーションエンジニア 現状に対してはちょっとリッチすぎるかも Cloud Deploy のキャッチアップも必要
要件とアプローチを整理 39 現状(最低限実装できればいいこと) 決定内容 gcloud コマンドで Cloud Run Service にデプロイ
Cloud Deploy を使いたくなったら置 き換えるだけ 今のところ 1 プロジェクトに Dev/Prod が 異なる Cloud Run Service・デプロイ頻度は低い チームの多くは アプリケーションエンジニア
要件とアプローチを整理 40 現状(最低限実装できればいいこと) 決定内容 gcloud コマンドで Cloud Run Service にデプロイ
Cloud Deploy を使いたくなったら置 き換えるだけ 今のところ 1 プロジェクトに Dev/Prod が 異なる Cloud Run Service・デプロイ頻度は低い チームの多くは アプリケーションエンジニア 俺の考える最強の CI/CD(の軸) 要件に合わせてシンプルな技術選択する CI と CD を分離することで それぞれ最適なタイミングで最適な技術を導入しやすくする
CREDITS: This presentation template was created by Slidesgo, and includes
icons by Flaticon, and infographics & images by Freepik Thanks! @pHaya72 @t_hayashi 41
CREDITS: This presentation template was created by Slidesgo, and includes
icons by Flaticon, and infographics & images by Freepik Thanks! Cloud Deploy ! @pHaya72 @t_hayashi 42
余談 43 ピックアップしてもらえたが 受賞には至らなかった(悔しい) ただ、これがあって今回の登壇の話を もらえたので頑張ってよかった (※) https://cloud.google.com/blog/ja/topics/partners/google-cloud-partner-tech-blog-challenge-2023-winners
はまったポイント 44 Cloud Run Cloud Deploy Cloud Build Artifact Registry
Cloud Storage イメージをひっぱてくる権限 デプロイを実行する権限 オブジェクトを作成する権限 デフォルトが Compute Engine の デフォルトサービスアカウントで実行 ログを書き込む権限権限
はまったポイント 45 Cloud Run Cloud Deploy Cloud Build Artifact Registry
Cloud Storage イメージをひっぱてくる権限 デプロイを実行する権限 オブジェクトを作成する権限 デリバリーパイプラインを構築する際の executeConfig でサービスアカウントを指定する必要があった ログを書き込む権限権限
参考文献 ★ GitHub Actions と Google Cloud Deploy が連携 ◦
https://cloud.google.com/blog/ja/products/devops-sre/using-github-actions-with-google-cloud-deploy • GitHub Actions を使用して Cloud Run にデプロイする ◦ https://cloud.google.com/blog/ja/products/devops-sre/deploy-to-cloud-run-with-github-actions ★ Cloud Deploy 公式ドキュメント ◦ https://cloud.google.com/build/docs/deploying-builds/deploy-cloud-run?hl=ja ★ Google Cloud Partner Tech Blog Challenge の 2023 年度受賞者発表 ◦ https://cloud.google.com/blog/ja/topics/partners/google-cloud-partner-tech-blog-challenge-2023-winners ★ Cloud Run のための実践 Cloud Deploy ◦ https://zenn.dev/knowledgework/articles/cloud-deploy-for-cloud-run ★ Cloud Deploy で始める 継続的デリバリー 䛾 継続的改善 ◦ https://lp.cloudplatformonline.com/rs/808-GJW-314/images/App_Modernization_OnAir_q4_1027_Session.pdf ★ Google Cloud Deploy にデプロイ後に検証を行う機能を導入 ◦ https://cloud.google.com/blog/ja/topics/developers-practitioners/google-cloud-deploy-introduces-post-deploy ment-verification 46