継続的デリバリー
en : Continuous Delivery
略 : CD
定期的にリリースするという概念
Jez Humble と David Farley により生み出された概念で、Agile 2006 で初めて示された
似た概念に継続的デプロイメントがあるが、継続的デプロイメントと異なり、継続的デリバリーではリリースプロセスにおいて多少なりとも人が介在する
そのため、リリースサイクルは 1, 2 週間単位だったり、月や四半期という単位になりがち
少なくとも 1 つのステージでは手動プルを行う (『進化的アーキテクチャ ―― 絶え間ない変化を支える』 より)
すべての開発者がトランクの小さなバッチを操作 (あるいは短寿命のブランチで作業してすぐにトランクにマージ) しており、トランクがいつもリリースできる状態に保たれており、ボタンを押すだけでオンデマンドでリリースできるようになっているとき、そのチームは継続的デリバリーを実践している
継続的インテグレーションは継続的デリバリーの必要条件
5 つの基本原則 (『Lean と DevOps の科学 Accelerate』 より)
品質の概念を最初から組み込む
W. Edwards Deming も言うように、品質向上のために検査を使うのではなく、最初から品質の概念を組み込む
作業はバッチ処理で進める
大きな変更ではなく、小さな単位で変更する
反復作業は自動化し、人間は問題解決にあたる
リグレッションテストやソフトウェアのデプロイなどの時間のかかる反復作業を自動化すること
徹底した改善努力を継続的に行う
全員が責任を担う
実現のための 3 つの基盤 (『Lean と DevOps の科学 Accelerate』 より)
包括的な構成管理 (CM : Configuration Management)
バージョン管理で収集した情報のみで、完全に自動化した方法でソフトウェアをビルド/テスト/デプロイする
継続的インテグレーション (CI : Continuous Integration)
ブランチは 1 日未満の寿命で、トランクへの統合を頻繁に行う
継続的テスト
バージョン管理システムでコミットするたびに、単体テストと承認テストが自動で実行されるように
テスターは、CI で生じる最新のビルドに対して継続的に探索型テスト (nobuoka.icon 探索的テストと同義かな) を行うべき
参考文献
Lean と DevOps の科学 Accelerate
The DevOps ハンドブック 理論・原則・実践のすべて