What is CI/CD

CI(Continuous Integration)

継続的インテグレーション、CI(英: continuous integration)とは、すべての開発者の作業コピーを1日に数回、共有されたメインラインにマージすることである[1]。グラディ・ブーチは1991年のメソッド[2]でCIという用語を最初に提案したが、彼は1日に数回の統合を提唱していなかった。エクストリームプログラミング(XP)ではCIの概念を採用し、1日に1回以上、おそらく1日に何十回も統合することを提唱した[3]。

CD(Continuous Delivery)

チームが短いサイクルでソフトウェアを生産し、いつでも確実にソフトウェアをリリースできるようにし、ソフトウェアをリリースする際には、手動で行うソフトウェアエンジニアリングのアプローチである[1] [2]。

CD(Continuous Deployment)

継続的デプロイメント(英語: Continuous deployment; CD)とは、ソフトウェア開発プロセスの1種で、自動化されたデプロイによって、高い頻度で、ソフトウェアの機能を提供する手法である[1][2][3]。すなわち、自動化により、開発された最新のソフトウェアをユーザーが常に利用可能にしておく手法である。開発されたソフトウェアを絶え間なく、継続的にデプロイし続けることから継続的デプロイメントと呼ばれる。

主要な解釈

Developer-roadmap

Web developer roadmap 2020の中にDevOpsロードマップがある。

IaCを前提として、CI/CD Toolが挙げられている点でインフラを含めたCI/CDが意識されている。
DevOpsRoadmap width=640

Synopsy社のAgile、CI/CD、DevOps

Synopsys社のブログが簡潔でわかりやすい。
どこにフォーカスしているかと言えば、アジャイルは開発プロセス、CI/CDはライフサイクル、DevOpsは文化が対象。

Agile CICD DevOps width=640

アジャイルは、変更とデリバリーの迅速化に注目したプロセスに焦点を当てます。
CI/CDは、自動化を強化するツールに注目したソフトウェア定義ライフサイクルに焦点を当てます。
DevOpsは、即応性を強化する役割に注目した文化に焦点を当てます。

Redhat社のCI/CD

自動化してリリース頻度を上げる話が中心だが、Integration Hellについての記載がある。

CI/CD (継続的インテグレーション/継続的デリバリー) とは、アプリケーション開発のステージに自動化を取り入れて、顧客にアプリケーションを提供する頻度を高める手法です。CI/CD から発生した主なコンセプトは、継続的インテグレーション、継続的デリバリー、継続的デプロイメントです。CI/CD は、新規コードの統合によって開発チームや運用チームに生じる問題 (すなわち「インテグレーション地獄」) に対する解決策です。

Redhat CI/CD width=640

継続的デプロイメントは開発者による変更をリポジトリから本番環境に自動的にリリースし、顧客が使用できるようにするというものです。運用チームが担当する手動プロセスが多すぎて、アプリケーション提供が遅れるという問題に対処します。継続的デリバリーのメリットを活用し、パイプラインの次のステージを自動化します。