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
940
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
650
ビジネス要望の翻訳が生む アーキテクチャの複雑性とトレードオフ
phaya72
2
560
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
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
930
エラーバジェット枯渇の原因 - 偽陽性との戦い -
phaya72
2
220
Vertex AI Experimentsの実態 - コードを辿った先にあったもの -
phaya72
3
1.4k
Other Decks in Technology
See All in Technology
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
170
NDIAS CTF 2026 問題解説会資料
bata_24
0
170
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
850
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
420
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
170
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
190
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
350
Why is RC4 still being used?
tamaiyutaro
0
270
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
320
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
470
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
450
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
180
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
270
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
630
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Fireside Chat
paigeccino
42
4k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Accessibility Awareness
sabderemane
1
150
The Language of Interfaces
destraynor
162
27k
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