継続的デリバリーとは何か?
みなさんこんにちは。@ryuzeeです。
継続的デリバリー(Continuous Delivery)の定義を改めて整理してみました。
まず1つめの定義は以下の通りです。
Continuous DeliveryとはリリースのスケジュールをIT部門が握るのではなく、ビジネス部門が握るということだ。 Continuous Deliveryを実装するということは、全体のライフサイクルを通じて常にソフトウェアが本番環境にリリース可能であるということを意味する。すなわちどのビルドもボタン一発で、完全に自動化されたリリースプロセスを通じて、秒とか分の時間で利用者にリリース可能である、ということだ。
Jez Humble
もう1つみてみましょう。 これもJez Humble氏が、Continuous Delivery: The Value Propositionで語っている内容です。 以下で該当部分を抜粋・意訳にて紹介しましょう。
Continuous Deliveryとは何か?
ユーザーとプロジェクトチーム(顧客やプロダクトオーナーも含む)の間に固いフィードバックループを作ることは、結局のところ、試験的な変更や新しいアイデアを実装した新しいバージョンのプロダクトを継続的に届けること、そして、それらの変更の収入面での影響を測定できるかどうかにかかっている。
数ヶ月に一度新しいバージョンのソフトウェアをリリースすることに慣れている多くの企業では、この一日に何度も変更をリリースするという考え方は不可能だと思うだろう。しかし、Thoughtworksでは、Continuous Deliveryの本に書いた原則とプラクティスを使って、年に数回しかリリースできなかった組織を月に数回もしくはもっと頻繁にリリースできるようにしている。 これは巨大な競争面での優位性を表していて、あなたの組織のムダな時間や努力の大幅な削減につながることを意味している。
Continuous deliveryはそれゆえ2つの重要なビジネス上の利点を持っている。
一つ目は、ビジネスプランがどのくらい良いものなのかをより素早く評価することができ、現実の利用者のフィードバックを受けて修正を行うことが可能になるということだ。特に、ビジネスプランに根本的な欠陥があった場合には、何ヶ月や何年もたって大量のお金をプロジェクトにつぎ込んだあとではなく、できる限り早くそれを知りたいと思うだろう。
二つ目は、長いプロジェクトの最後に行う伝統的な「ビックバン」リリースと比較して、絶対的にリスクが少ないデリバリーのプロセスを提供してくれることだ。これが意味するところは、コストの予測可能性が上がるということだ。
さらにはIT面でも2つの強力な利点がある。
一つ目は、「ユーザーに価値を届けている本番環境で動作しているソフトウェア」という単純だが有用な完成の定義に基づいて、プロジェクトの進捗に関する本当のフィードバックを得ることが可能になることを意味している。
二つ目は、小さい増分を日常的にリリースすることによって、個々のリリースのリスクを減らすことができるということだ。
次は、Youtubeに上がっている動画をみてみましょう。 話されているのは、ThoughtWorks社のTrevor Mather氏とCyndi Mitchell氏です。 5分ほどの短い動画だが、Continuous Deliveryが何なのか分かるはずです。
このビデオの中にあるContinuous Deliveryの定義に関する一枚絵が分かりやすいので、以下に図を書き起こしました。
端的に言えば、Continuous Deliveryは、Iterative Development(繰り返し型の開発)、Continuous Integration(継続的インテグレーション)、Continuous Delivery(継続的デプロイ)を積み重ねていくことで、価値を創出していく全体の流れである、と言えます。
まとめると以下のようになります。
- Continuous Deliveryは、Iterative Development(繰り返し型の開発)、Continuous Integration(継続的インテグレーション)、Continuous Delivery(継続的デプロイ)を積み重ねていくことで、価値を創出していく全体の流れである
- ソフトウェアは常に本番環境にリリース可能とし、簡単な操作でリリースできる
- 素早くリリースすることで、継続的なフィードバックを得られる仕組みを作る
- 継続的なフィードバックはビジネス価値の向上とムダの削減に役にたち、競争優位性を築き上げる
なお、Continuous Deliveryの8つの原則と4つのプラクティスについてはこちらに書きました。
それでは。