CI/CD パイプラインは、「継続的インテグレーション」と「継続的デリバリ」を組み合わせ、コーディング、テスト、展開にわたるソフトウェアのデリバリを自動化するものです。
ビジネスアプリの開発は、困難で時間がかかることがあります。構想や事前設計から、設計、開発フェーズ、テストフェーズを経て、最終的に展開と継続的なサポートとメンテナンスに至るまで、プロセス全体に「数か月」かかることもあります。
CI/CD は、そのような状況すべてを変えるために設計されています。 継続的インテグレーション (CI) と継続的デリバリ (CD) の実践の組み合わせである CI/CD パイプラインは、アプリケーション開発を大幅に簡略化するために設計された一連の自動化ステップで構成されています。 CI/CD の動作原理とプラクティスを使用することで、DevOps チームは、より迅速に、頻繁に、そして簡単に、ほとんどエラーのない完成したソフトウェア製品を提供できます。
前述のとおり、CI/CD パイプラインは、継続的インテグレーションと継続的デリバリの両方を組み込んで、より包括的なソフトウェア開発の文化と一連の運用原則を作り出します。 しかし、CI と CD とは具体的にどういうものなのでしょう。また、継続的デプロイとどのような関係があるのでしょうか。
継続的インテグレーション(CI) とは、開発チームが定期的にコードに段階的な変更を実装し、テストするアプローチです。 これらの変更は、共有の中央リポジトリにマージされます。 このリポジトリはバージョン管理されており、開発者は更新を確認したり、必要な場合は以前のバージョンに戻ったりすることができます。 「チェックイン」と呼ばれるこの繰り返し作業は、開発サイクルの中で 1 日に何度も行われることがあります。 すべての変更は、自動化されたビルドとテストによって検証され、これにより、コードの問題が迅速に特定され解決されるようになります。
CI が開発とテストを自動化するのに対して、継続的デリバリ (CD) はソフトウェアデリバリの側面を自動化することで、サイクルを終了します。 フィードバックに対応し、修正が実装されると、チームがアプリケーションを本番稼動させる決定をするまで、これらの変更が自動的にアップロードされます。 CD は、展開可能な製品をもたらしますが、製品を展開するのは人間の承認に依存し、チームは何をいつリリースすべきかを決定することができます。 これにより、開発者は、エンドユーザーに提供を開始する前に、アプリケーションを改良し続けることができます。
継続的デプロイは、継続的デリバリと似ており、同じ略語 (CD) で表され、同じように使われることもあるほどです。 継続的デプロイの大きな違いは、誰が実際にソフトウェアを展開するかにあります。 継続的デプロイでは、製品をリリースするために人間の承認を必要とせず、すべての変更を自動パイプラインで送信して作業バージョンを作成し、それを直ちに本番環境にプッシュします。 手動での承認サイクルはありませんが、これは、本番環境に入る前に、コード自体が十分にテストされているはずだからです。
CI と CD のどちらも、現代の DevOps に不可欠であり、アジャイルな方法論をサポートするのに役立つものです。 このことから、効果的な CI/CD パイプラインは、いくつかの利点をもたらします。
- 明確なプロセス
体系的な CI/CD アプローチは、パイプライン内の各ステップを明確に示し、プロジェクトを構想から完遂へと導くために必要なことを正確に説明する詳細な全体像を提供します。 - より高品質なコード
小規模に行う段階的な変更は、品質と有効性をレビューするのが容易です。 同様に、コードに問題がある場合は、より簡単に見つけることができ、プロセスの早い段階で解決できます。 これによって、プロジェクト全体を通してより優れたコードを提供できるようになります。 - 容易なアクセス
変更が中央リポジトリに自動的に保存されるため、ステークホルダー、QA、その他の権限を持つチームや個人は、最新リリースを含む製品のすべてのバージョンに直接アクセスすることができます。 - 信頼性の高いバージョン管理
コードの問題が容易に解決できない場合、以前のバージョンにロールバックすることが必要になることがあります。 効果的なバージョン管理の実践により、最小限の手間でロールバックを行うことができます。 - フィードバックの迅速化
CI/CD パイプラインにより、ユーザーとテスターはほぼ即座にフィードバックを提供でき、開発チームはそのフィードバックに迅速に対応することができます。 - テストサイクルの短縮
従来の開発では、製品全体のコードを何度もテストする必要があったため、テストサイクルが長く、複雑になっていました。 CI/CD パイプラインでは、少量のコードを段階的に導入するため、この問題はもはや発生することがありません。 - 開発のアジリティの向上
CI/CD パイプラインは、開発チームが組織のニーズに即座に対応し、必要に応じて進行中のプロジェクトを調整することを可能にします。 開発の応答性が向上することで、組織は強力で専門性のあるソフトウェアソリューションの価値・効果をまさに必要なときに手にすることができます。
CI/CD は、文化的な変化であると同時に、手順的な変化でもあります。 このことから、CI/CD の具体的な手順は、組織によって異なる場合があります。 とはいえ、組織は基本的で統一された構成に従う傾向があります。
CI/CD パイプラインの最初のステージには、新しいアプリケーションを構想するために必要なバックグラウンドのすべての段取り作業が含まれます。 プロジェクトマネージャーやプロダクトマネージャーは、顧客やステークホルダーから要件を収集し、プロジェクトのロードマップを作成して、必要なタスクのバックログを作成します。 また、このステージには、アジャイル管理ツール (スクラムやカンバンなど) を進行中のプロセスに取り入れることも含まれます。
「開発」ステージは、アジャイルの主要な原則であるシンプルなコーディングと迅速なフィードバックに依存しています。 継続的開発の原則に基づき、プロセスの早い段階でセキュリティを含め、コードが正しいかどうかを常に検証します。
「開発」ステージに続き、「ビルド」ステージでは、チームが短期間の反復作業で、実行可能な本番環境のインスタンスを作成します。 ビルドステージで合格できないような問題があれば、すぐに対処しなければなりません。
このステージでは、コードが意図したとおりに機能していることを確認するために自動化されたテストを使用します。テストステージでは、顧客が使用する前にバグを排除し、開発者からのフィードバックを迅速に提供することで、大きな問題に発展する前に問題を切り分け、修正できるようにする必要があります。より成熟した CI/CD パイプラインのテストでは、DevSecOps と呼ばれる、セキュリティ脆弱性に対するスキャンの実施へと拡張される場合があります。
コードがテストされ検証されると、プロジェクトは展開環境に送られるようになります。 これらは通常ステージング環境であり、そこでコードに対してさらに手動テストとレビューが行われ、承認された変更が自動的に本番環境に送られます。
展開され、本番環境に送られると、アプリケーションは綿密に監視され、傾向や潜在的な問題が特定されます。 この監視は、多くの場合、アプリケーションの運用機能に統合されており、将来のアップデートのための情報を提供してくれます。
「継続的」開発アプローチに基づき、これらのステージの多くは同時に行われます。また、アプリケーションの改良と改善に伴い、コードは複数のステージを繰り返し通過することがあります。
組織は独自の CI/CD パイプラインを自由に作成できるため、あるものは他のものより効果的である可能性があります。 効率的なパイプラインには、次のような特質があります。
パイプラインの速度は、次のようないくつかの要因に依存します。新しいパイプラインを構築するのにかかる時間。 アプリケーションを構築、テスト、展開するのにかかる時間。 フィードバックを受け取れる速さ。 パイプラインを必要に応じて効果的に拡張できる可能性。 スピードは、プロセスの簡素化、効果的な自動化の実装、ボトルネックの回避に大きく影響されます。
自動化の大きな利点は、予測可能であることです。同じ入力があれば、常に同じ出力が得られるはずです。 信頼性の低いパイプラインでは、実行時に揺れが生じ、技術スタックが変更されたときや、新しいチームやプロジェクトが導入されたときに障害が生じてしまうことがよくあります。
CI/CD パイプラインの最終目標は、ソフトウェアデリバリプロセスを最初から最後まで完全に自動化し可視化することであり、それを正確に実行することです。 これを行うことができず、手作業に頼る部分が多ければ、当然ながら納期は延びコストは増加します。
効果的な CI/CD パイプラインはさまざまなメリットをもたらしますが、ゼロから構築するのは困難であり複雑なプロセスとなります。 大規模な組織では、異なるアプローチを展開させてきたチーム間での一貫性と可視性の問題につながる可能性があります。 ServiceNow では、Now Platform を共通のソースコントロールと CI/CD ソリューションに接続し、ServiceNow ですでに利用できるサービス定義や運用情報などの他の情報に基づいてインサイトを提供することで、組織を支援します。 また、ServiceNow は、Now Platform 上の ServiceNow アプリの開発に DevOps プラクティスを適用する場合にも、共通のソースコントロールと CI/CD ソリューションの使用をサポートしています。
ソースコントロールと CI/CD は、より迅速で大規模なアプリ開発を確実に行うためのツールと機能を提供します。 開発者が最も使用するツールに ServiceNow が提供するビルトインの統合を使用して、複数の開発者やチームにわたるコード変更を効率的に管理します。 ガバナンスプロセスに強力な自動化を追加して変更要求の手動承認を置き換え、CI/CD プラットフォームを通じてより速く、より少ないエラーでプロジェクトを推し進めることができます。 フィードバックをより早く、より頻繁に収集し、パイプライン全体で情報を連携させることで、必要な要件を満たすアプリケーションをより迅速に提供します。 ServiceNow はこれらすべてを可能にします。
ServiceNow のソースコントロールと CI/CD バリューストリーム管理ソリューションを利用して、エンドユーザーが信頼するアプリケーションを提供しましょう。
組織全体で DevOps を有効活用しましょう。 高速化によるリスクを取り除き、IT 運用と開発の摩擦を最小限に抑えます。