コンテンツに移動
DevOps & SRE

Google Cloud Deploy の一般提供を開始: GKE に対する継続的デリバリーがより簡単に

2022年2月4日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 1 月 26 日に、Google Cloud blog に投稿されたものの抄訳です。

効果的なソフトウェア デリバリーは、通常は継続的インテグレーション(CI)と継続的デリバリー(CD)を通じて行われます。多くのプロダクト開発チームが、こうしたソフトウェア デリバリーの実現を最優先事項としていますが、その理由は明らかです。2021 年の State of DevOps Report によると、優れたソフトウェア デリバリーを実現しているチームは、そうではないチームと比較して、デプロイの頻度が大幅に高い一方で、変更に関連する障害の件数は 3 分の 1 にとどまっています。また、ソフトウェア デリバリーの最新の運用方式に秀でているチームは、ビジネス上の良好な成果を報告する割合も 1.8 倍高いことがわかっています。

ソフトウェア デリバリーを効果的に行うには、優れたツールが必要です。そうしたツールがない場合、チームはソフトウェア デリバリー ソリューションの設計、維持、スケーリングを自ら行う必要があり、継続的デリバリーのフロー制御、セキュリティ、監査、インテグレーションの要件は多岐にわたるため、多くの場合困難が伴います。コンテナ イメージのアーティファクトをデプロイする場合、特に Kubernetes 環境ではさらに複雑さが増します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_cloud_deploy.max-1100x1100.jpg

Google は、お客様からのフィードバックと独自のベストプラクティスに基づいて、特に Google Kubernetes Engine(GKE)環境における継続的デリバリーの目標の達成を支援するソフトウェア デリバリー ツールの開発に取り組んできました。本日、Google Cloud Deploy が一般提供となったことをお知らせいたします。これは、GKE に対する継続的デリバリーの容易さ、速さ、信頼性を高めることを可能にしたマネージド型の独自の継続的デリバリー サービスです。

継続的デリバリーの課題を解決

Google Cloud Deploy を設計するにあたって、お客様が GKE に対する継続的デリバリーを行う際に直面している課題を深く理解するために、多くのお客様にお話を伺いました。お話を伺う中でいくつかの課題が明らかになりましたが、その中でも所有コスト、セキュリティと監査、測定の 3 つが際立っていました。

所有コスト

昨年 9 月のプレビューのリリースに関する投稿で説明したように、Kubernetes における継続的デリバリーの運用コストは非常に高くなる場合があります。再現可能なベスト プラクティスの特定、デリバリー ツールとパイプラインのスケーリング、主要な指標の収集を行って最新の状態に保ち、さらにメンテナンスまで行うことは、リソースを大量に消費し、中核事業から時間を奪っていきます。

Google Cloud Deploy はマネージド サービスとして、セルフマネージド型の継続的デリバリー ソリューションに通常付随する、スケーリングとメンテナンスの負担を取り除きます。これにより、継続的デリバリー ツールの維持に費やしてきた時間が不要となり、その時間をお客様に価値を提供するために使うことができます。

Google Cloud Deploy は、構造も提供します。デリバリー パイプラインターゲット宣言的に定義され、リリースごとに保持されます。つまり、デリバリー パイプラインが変更された場合でも、本番環境にデプロイするまでのリリースのフローでは、耐久性が維持されます。デリバリー パイプラインへの変更により生じた、実施中のリリースでの問題をトラブルシューティングするために、これ以上時間を奪われることはありません。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/4_Delivery_pipeline_metrics.gif
リリースのプロモート

お客様の多くは、継続的デリバリー機能を持っているかどうかにかかわらず、ソフトウェア デリバリーに関係する継続的インテグレーション、承認ワークフローやオペレーション ワークフロー、その他のシステムをすでに保有しています。

Google Cloud Deploy では、CI システムへの接続性、最先端の構成(レンダリング)ツールへのサポート、関連するソフトウェア デリバリー ツールとの統合を可能にする Pub/Sub 通知の 3 つの形で GKE デリバリー ツール エコシステムが採用されています。

「継続的デリバリー ソリューションを探す中で ArgoCD や Spinnaker も検討しましたが、Google Cloud Deploy を選びました。選んだ理由は、Google Cloud Deploy がマネージド サービスであり、CD の適切な基本機能が提供され、GKE クラスタとシームレスに統合されるためです。その結果、すべてのチームメンバーが、commit から本番環境まで、安全かつ確実にコードをプロモートできるようになりました」- Search.io DevOps エンジニア Jonathan Sokolowski 氏

継続的デリバリーのプロセスには、さまざまな GKE ロールやペルソナが関与します。DevOps エンジニアは、リリース プロモーションとロールバックの意思決定に集中する一方で、ビジネスの意思決定者はデリバリー パイプラインの状態とベロシティを考慮します。Google Cloud Deploy のユーザー エクスペリエンスでは、こうした多角的な視点を念頭に置きながら、さまざまなペルソナによるコンテキストに合ったレビューの実施や意思決定を行いやすくすることで、効率の向上と所有コストの削減を実現します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Deployment_approvals.max-2000x2000.jpg
デプロイの承認

セキュリティと管理

Google Cloud Deploy のセキュリティ基盤が提供するデリバリー フロー制御と監査可能性により、ソフトウェア サプライ チェーンの安全性をさらに強化できます。

多くの異なるユーザーがソフトウェア デリバリー システムを操作し、さまざまな意思決定を行っています。しかし、すべてのユーザーや決定に同じだけの権限があるわけではありません。たとえば、デリバリー パイプラインの定義や更新が可能であるからといって、リリース候補も作成できるとは限りませんし、ステージングにリリースをプロモートできるからといって、本番環境への承認が可能というわけではありません。現代の継続的デリバリーは、セキュリティや監査のための留意事項で溢れています。誰が、どこで、どのようにアクセスできるかを制限することは、リリースの整合性と安全を維持するうえで必要不可欠です。

Google Cloud Deploy は、個別のアクセス制御実行レベルのセキュリティなどの IAM の制限機能により、全体にわたってきめ細かい制限を実現しています。また、プライベート GKE クラスタへのデプロイと、Virtual Private Cloud(VPC)Service Controls(現在はベータ版)をサポートすることで、セキュリティ境界にも配慮しています。さらに、不正な承認に対する追加の安全保護対策として、リリースのプロモーションロールバック承認などのフロー管理機能も活用できます。

Google Cloud Deploy での監査は、その他の Google Cloud サービスと同様に機能します。Cloud Audit Logs は、ユーザー呼び出しの Google Cloud Deploy アクティビティを監査し、誰が特定のリリースをプロモートしたか、誰がデリバリー パイプラインを更新したかの情報を一元化して認識できるようにします。また、ビジネスニーズに合わせて、サポートされているロケーションで Google Cloud Deploy パイプラインを作成することもできます。

測定

優れたツールは、効果的なソフトウェア デリバリー戦略の一部にすぎません。効果的なソフトウェア デリバリー戦略を実現するには、どの指標を、どのような方法、どのような理由で測定すべきなのか理解する必要があります。Google Cloud Deploy を利用することで、ソフトウェア デリバリーのパフォーマンス測定が容易になるため、チームはソフトウェア デリバリーの最適化に専念し、期待するビジネス成果を達成できます。

Google Cloud Deploy は、デリバリー パイプラインに関する組み込み指標を収集し、利用可能にします。これらの指標には、デプロイの履歴や成否のほか、DORA 指標の「デプロイの頻度」が含まれます。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/2_Promoting_a_release.gif
デリバリー パイプラインの指標

ソフトウェア デリバリー プロセスの有効性を測定するもう一つの方法は、デプロイしたリソースをモニタリングする方法です。Google Cloud Deploy はモニタリングを支援するため、デプロイされた Kubernetes リソースに自動でラベル付けを行い、デリバリー パイプラインをアプリケーションのパフォーマンスに簡単に関連付けられるようにします。Google Cloud Deploy API を使用してアプリケーションのモニタリングをさらに統合することで、コードが安定している場合は自動的にプロモートし、異常が検出された場合はロールバックすることが可能になります。

今後の計画

包括的で使用が簡単、かつ優れた費用対効果の DevOps ツールは、効率的なソフトウェア開発チームを作るうえで重要な存在です。Google は、Google Cloud Deploy が完全な CI / CD パイプラインの実装を実現するうえで皆様に役立つことを願っています。この取り組みはまだ始まったばかりです。今後、月単位で Google Cloud Deploy に魅力的な機能や特徴を導入してまいりますので、引き続きご注目ください。

それまでの間、プロダクト ページドキュメントクイックスタートチュートリアルをご覧ください。最後に、Google Cloud Deploy に関するご意見やご感想については、ぜひこちらから会話に参加してお知らせください。ご連絡をお待ちしております。

S. Bogdan プロダクト マネージャー

Victor Szalvay プロダクト マネージャー

投稿先