2022.2.1
【第1回】:CI/CDの基礎知識
技術革新の著しいIT分野において、サービスに対するユーザーのニーズも絶えず変化しています。市場の変化に素早く対応するためには、短いサイクルでの開発・リリースが求められます。しかしながら、限られた期間の中で高品質なサービスを開発することは、容易ではありません。
こうした状況を打開する上で有力となる手法が、「CI/CD (継続的インテグレーション/継続的デリバリー)」です。CI/CDの適用によって、スピード感が求められる現代のサービス開発への対応が容易となります。ただし、従来の開発体制を抜本的に変えるアプローチであり、基礎知識や実現方法の正しい理解が欠かせません。
ADOC TESLABブログでは、開発・QA現場に適用すべきCI/CDについて、連載で順次解説します。第1回となる本記事では、CI/CDの基礎知識をお伝えします。
CI/CDとは何か
サイクルの短いアジャイル開発などでは、同一のプログラムに対して継続的に変更を加えることとなります。しかし、変更したプログラムがユーザーにリリースされるまでには、下記のように多くのプロセスの実施が必要です。
1.コーディング (プログラムの変更)
2.ビルド (プログラムを実行するための変換や統合)
3.テスト (プログラムの動作検証)
4.デプロイ (ステージング環境または本番環境への展開)
プログラム変更のたびに、こうした一連のプロセスを手動で実施するのでは、膨大な工数を要します。こうした問題を解決するのが、CI/CDです。
CI/CDとは、ソフトウェア開発を高速化するために、プログラム変更時に発生する一連のプロセスを統合的に自動化することで、継続的な開発・リリースを可能にするアプローチ。手動による人的ミスや手戻りを防止することで、速やかに本番環境にリリース可能な状態へ導き、QCDの飛躍的な向上が期待できます。
CIとCDの違いについて
CI/CDは、「CI」および「CD」の2要素を組み合わせた概念です。CIとCDは、自動化の適用範囲が異なります。
CI:継続的インテグレーション
CIは「継続的インテグレーション (Continuous Integration)」の略称です。変更したプログラムを開発者自身のローカル環境で自動的にビルド・テストし、問題なければメインライン (統合ブランチ) へのマージまで行います。手動によるビルドやテストの工数を削減できることはもちろん、チーム開発において変更の競合による手戻りも防止できます。
CD:継続的デリバリー (または継続的デプロイメント)
CDは「継続的デリバリー (Continuous Delivery)」、または「継続的デプロイメント (Continuous Deployment)」の略称で、いずれもCIを拡張した概念です。本連載では便宜上、CD=継続的デリバリーとして論じます。
継続的デリバリーは、メインラインのプログラムを自動的にビルド・テストし、問題なければステージング環境 (本番前環境)へのデプロイまで行います。いつでもプログラムのリリースが可能な状態を作り出すものの、本番環境へのデプロイは手動となります。
継続的デプロイメントは、継続的デリバリーに加えて本番環境へのデプロイまでを自動的に行います。すなわち、プログラムの変更からリリースまでを完全に自動化するのです。
CI/CDとDevOpsの位置づけ
CI/CDと混同されやすい概念として、「DevOps」があります。DevOpsとは、開発 (Development) チームと運用 (Operations) チームが連携することで、迅速なリリースを実現する開発手法です。DevOpsもリリース速度の向上による継続的なデリバリーの実現を目的としている点で、CI/CDと共通しています。
ただし、CI/CDが主に技術面に着目したアプローチであるのに対して、DevOpsは組織文化の刷新なども包含するアプローチです。とはいえ、DevOpsの実現にあたっては多くの場合CI/CDが適用されることから、CI/CDは「DevOpsのコンセプトを実装する技法」とも言い換えられるでしょう。
CI/CDツールとは
CI/CDの実現にあたっては、専用の「CI/CDツール」を用いることが通例です。CI/CDツールによって、ビルドやテスト、デプロイといったプロセスの連携や管理が可能となります。
CI/CDツールには大きく分けると、専用の物理サーバーを用いる「オンプレミス型」、インターネット経由で仮想サーバーを用いる「クラウド型 (SaaS型)」の2種類があります。オンプレミス型としては「Jenkins」、クラウド型としては「CircleCI」「AWS CodeBuild」などが代表的です。CI/CDツールについて詳しくは、次回以降で詳しくお伝えします。
CI/CDパイプラインとテスト自動化
CI/CDツールの利用に際して、「CI/CDパイプライン」という言葉を目にすることがあります。CI/CDパイプラインとは、CI/CDの実現にあたって自動化の対象となる、あるいは自動化された一連のプロセスです。CI/CDパイプラインを構築することで、コードに変更が生じた際のビルドからテスト、デプロイにいたるプロセスが自動化され、各々を手動で実施する必要がなくなります。
CI/CDツールは、CI/CDパイプラインを構築するためのツールとも表現できます。ただし、実際には前述したCI/CDツールに加えて、各プロセスを自動化するためのツールやサービスも併用します。たとえば、品質とスピードの両方を担保するためには、ビルドやデプロイのたびに発生するテストの自動化は極めて重要な要件となります。テスト自動化のツールをコアとしたプラットフォーム構築サービスとしては「ADOC Testing Service (ATS) for Eggplant」などがあります。
CI/CDが求められる背景とは?
ソフトウェア品質向上のための継続的インテグレーションとデリバリーを実践するためには、最新のビルドを効率よく展開できる、信頼性の高いテストプロセスの確立が不可欠となります。
今回は、CI/CDの基礎知識についてお伝えしました。CI/CDは昨今のサービス開発において非常に有力なアプローチですが、実現するためには下記の事項についても理解が欠かせません。
・CI/CDが求められる背景
・CI/CDの実現方法
・CI/CDを実現するためのポイント
次回以降では、これらに関して順次お伝えします。第2回では、CI/CDが昨今のサービス開発に求められる背景について解説しますので、ぜひご一読ください。
■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ
- 2022.4.15
- 【第5回】:Eggplantを適用するメリット