Google Cloud 上での DevOps と CI / CD について
Google Cloud Japan Team
※この投稿は米国時間 2021 年 12 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。
CI / CD とは
継続的インテグレーション(CI)がもたらす最大のメリットは、早期かつ頻繁にフィードバックを得ることにより、開発プロセスの早い段階で問題を特定して解決できるようになることです。CI では、作業結果を後でまとめて一気に統合するのではなく、1 日に数回といった短いスパンで作業結果を頻繁に統合します。統合を行うたびに自動化されたビルドによって検証が実施されるため、統合の問題を早期に検出し、後工程でのトラブルを減らすことができます。
継続的デリバリー(CD)は CI のコンセプトをさらに拡張したものです。CD の目的は、ソフトウェアのパッケージ化と準備を短いスパンで行うことにより、変更結果を段階的にユーザーに提供することです。 Red / Black デプロイやカナリア デプロイなどのデプロイ戦略を活用すると、リリース時のリスクを軽減して、信頼性を高めることができます。CD はリリース プロセスの安全性を高め、リスクを軽減し、リリースの迅速化につながる手法ですが、順調に進んでいる場合は少々退屈になります。CD によりデプロイの負担が軽減されれば、開発者はデプロイ スクリプトの調整にではなく、コードの作成に集中できるようになります。
アプリケーション開発を取り巻く環境で現在生じているさまざまな変化
近年、アプリケーション開発を取り巻く環境ではさまざまな変化が生じていますが、そうした変化を CI / CD 戦略に取り入れることをおすすめします。
ハイブリッド クラウド デプロイとマルチクラウド デプロイ - 近年、特定のベンダーにロックインされないツールやサービスを利用して、ハイブリッド クラウド環境にアプリケーションをデプロイしたいと考える大企業が増えています。
モノリスからマイクロサービスへの移行 - 多くのチームがアジリティを高めるために、大規模なモノリスをマイクロサービスに移行し始めています。その結果、チームごとに異なる言語、技術スタック、開発ライフサイクルを使用できるようになります。これは、デプロイ パターンやツールのニーズ、スケーリング パターンにおける変化につながっています。
クラウドネイティブ アプリケーション - 近年、多くの企業でパラダイム シフトが起こりつつあり、従来のように仮想マシンを利用するだけでなく、サーバーレス、コンテナ、Kubernetes も活用され始めています。この変化にはアプリケーション開発を簡素化する側面もあれば、逆に複雑化する側面もあります。ロールバックはどう処理すればよいでしょうか。カナリア デプロイはどうなるでしょう。この変化は、開発のさまざまな側面に影響を与えています。
開発者にとって理想的なのは、CI / CD プロセスを通じた変更結果の統合に追われるのではなく、コードの作成に集中できる状況です。CI / CD プロセスの各ステップはコードがチェックインされると同時に自動で開始されるようになっていなければなりません。そのためには、次のステップをサポートする CI / CD パイプラインを設定する必要があります。
ソースコードのパッケージ化
自動単体テストと統合テスト
一貫性のあるビルド環境
本番環境にデプロイする前の承認
Blue / Green ロールアウトとカナリア ロールアウト
そこで役立つのが Cloud Build です。
Google Cloud DevOps の概要
Cloud Build
Cloud Build は、フルマネージド型の CI / CD プラットフォームです。VM、サーバーレス、Kubernetes、Firebase などを含む複数のハイブリッド クラウド環境やマルチクラウド環境にまたがるビルド、テスト、デプロイが可能です。Cloud Build では、Cloud Storage、Cloud Source Repositories、GitHub、Bitbucket からソースコードをインポートしたり、仕様に合わせてビルドを実行したり、Docker コンテナ イメージや Java アーカイブなどのアーティファクトを生成したりすることができます。
Cloud Build は、一連のビルドステップとしてビルドを実行します。各ビルドステップは Docker コンテナで実行されます。各ビルドステップでは、環境に関係なく、コンテナから実行可能なすべての処理を実行できます。タスクを実施するには、Cloud Build で提供、サポートされているビルドステップを使用するか、独自のビルドステップを作成します。Cloud Build はビルドステップの一環として、指定されたプラットフォームにアプリをデプロイします。また、Binary Authorization を使用して詳細なセキュリティ スキャンを CI / CD パイプライン内で実行し、本番環境にデプロイするコンテナ イメージを信頼できるもののみに限定することもできます。
Cloud Build プライベート プールは、企業のセキュリティ要件やコンプライアンス要件を満たすのに役立ちます。Cloud Build プライベート プールは、プライベート ネットワーク内のリソースへのアクセス許可など、ビルド環境をきめ細かくカスタマイズできるワーカーで構成される専用のプライベート プールです。たとえば、GitHub Enterprise などのプライベート ネットワークでホストされているソースコード リポジトリからフルマネージドの DevOps ワークフローをトリガーできます。
Cloud Code
完全にクラウドネイティブな環境で開発を行っている場合は、Cloud Code を使用すると CI / CD パイプラインをすばやく開始できます。Cloud Code には、クラウドネイティブ アプリケーションの作成、実行、デバッグをすばやく簡単に行えるツールが付属し、さまざまな IDE で使用できます。Cloud Build にコードをプッシュしてビルドプロセスを開始し、Artifact Registry でパッケージ化すると、GKE または Cloud Run でコードを実行できるようになります。Google Cloud のオペレーション スイートでは、デプロイメントに関するあらゆる情報や指標を確認できます。
Cloud Deploy
Google Cloud Deploy(現在プレビュー版)は、GKE に対する継続的デリバリーの容易さ、速さ、信頼性を高める、マネージド型かつ指針的な継続的デリバリー サービスです。Cloud Deploy にはセキュリティ管理機能が組み込まれ、既存の DevOps エコシステムと統合することができます。
Cloud Shell エディタ
Eclipse Theia IDE プラットフォームをベースとする Cloud Shell エディタは、Cloud Shell を拡張し、次のツールを含む事前構成済みのオンライン クラウド開発環境を提供します。
Kubernetes とサーバーレス向けのローカル エミュレータ
クラウドネイティブ アプリを操作するためのコマンドライン ツール
Google Cloud 上での CI / CD に興味をお持ちの方は、こちらからドキュメントをご確認いただけます。#GCPSketchnote や同様のクラウド関連コンテンツをさらにご覧になりたい方は、Twitter で @pvergadia をフォローしてください。また、thecloudgirl.dev もぜひご覧ください。
- Google デベロッパー アドボケイトPriyanka Vergadia