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
930
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
620
ビジネス要望の翻訳が生む アーキテクチャの複雑性とトレードオフ
phaya72
2
550
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
34
22k
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
3
3.6k
Pub/Sub vs Cloud Tasks - その違い、わかりますか?-
phaya72
2
490
OpenTelemetry SpanProcessor を Let's カスタマイズ!
phaya72
3
400
非同期処理でも分散トレーシングしたい!- OpenTelemetry × Pub/Sub -
phaya72
2
880
エラーバジェット枯渇の原因 - 偽陽性との戦い -
phaya72
2
210
Vertex AI Experimentsの実態 - コードを辿った先にあったもの -
phaya72
3
1.3k
Other Decks in Technology
See All in Technology
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
2.1k
Databricks における 生成AIガバナンスの実践
taka_aki
1
370
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
470
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
330
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
190
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
100
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
350
ブロックチェーン / Blockchain
ks91
PRO
0
120
EventBridge Connection
_kensh
5
680
Agentic Web
dynamis
1
200
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
210
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
3.2k
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Six Lessons from altMBA
skipperchong
29
4.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Limits of Empathy - UXLibs8
cassininazir
1
350
The Invisible Side of Design
smashingmag
302
52k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
The agentic SEO stack - context over prompts
schlessera
0
800
Side Projects
sachag
455
43k
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