DevOps のプラクティス:継続的デリバリー

継続的デリバリーとは?その効果は?

現代、ソフトウェア開発プロセスの中心的アプローチとして、「継続的インテグレーション( Continuous Integration: CI )」「継続的デリバリー( Continuous Delivery: CD )」「継続的デプロイ( Continuous Deployment )」など、いくつかの方法が生まれ、注目されています。成功する DevOps 環境を構築するために、これらのプロセスは必要不可欠です。

継続的インテグレーションの記事では、 DevOps 環境のコンテクストにおける継続的インテグレーションの役割について説明しました。本記事では、継続的デリバリーとそれがもたらすメリットに焦点を当てます。また、継続的デプロイと継続的デリバリーとの関連性についても説明します。

継続的デリバリーの定義

継続的インテグレーション(CI)は、開発者がコードを共有のコントロールリポジトリに、できるだけ毎日、アップすることを推奨しています。それにより DevOps 環境が実現されます。また、 DevOps と密接に関連するもう1つのプラクティスとして、継続的デリバリー(CD)があります。このプラクティスは、チームがいつでも、できれば毎日、オートメーション管理のもと変更と修正をリリースできるような方法でソフトウェアを構築します。

Thoughtworks のワーキンググループは、組織が継続的デリバリーを正しく実装していることを確認するために役立ついくつかの特徴を考案しました。以下に紹介します。

  • ソフトウェアのライフサイクルを通じて(いつでも)デプロイできること。
  • チームは、新機能の開発よりも、デプロイ可能なソフトウェアを優先すること。
  • 誰かがシステムに変更を加えるたびに、そのシステムの生産準備状況について自動化のフィードバックを迅速に受けることができる。
  • オンデマンドで、あらゆるバージョンのソフトウェアをあらゆる環境にプッシュボタンで配備できる。

上記のような特徴を確保することで、企業は継続的デリバリーの環境を構築し、ソフトウェア開発プロセスを合理化することで、さまざまなメリットを得ることができるのです。

継続的デリバリーのメリット

継続的デリバリーは、アジリティの向上、エラーや変更、リリースに伴うリスクとコストの低減、効率性の向上およびチームワークの改善につながります。継続的デリバリーによって、組織が業界の勢力やその他の変化に対応できるようにすることで、アジリティを向上させます。なぜなら、チームはすでにパイプラインを通じて一貫した仕事を実施・提供しているため、あらゆる変更に対応することが可能になっています。たとえば、顧客が求めている新機能を追加するなど、必要に応じた対処が可能です。

継続的デリバリーは、リスクを減らすこともできます。たとえば、マネージャーが承認した作業だけを、自動的にシステムテストを自失する継続的デリバリーを構築することができます。この場合、テストとデリバリーが頻繁に行われることで、あらゆる問題が即座に明らかになります。つまり、継続的デリバリーによってプロジェクトに関するあらゆるリスクが低減されるのです。

テストとデプロイを自動化することにより、チームの効率と精度を向上させることにも役立ちます。Hiscox Insurance 社のエンタープライズアーキテクトである Jonathan Fletcher 氏は、このような自動化を導入した結果、同社は製品リリースあたりの時間を 89%、リリースにかかるスタッフの時間を 75% 削減し、リリースにかかる金銭的コストを 97% 削減できたと述べています。

自動化は確実にチームの働き方を変え、最終的には信頼性も向上させます。Fletcher 氏によると、「デリバリープロセスの信頼性が高まれば、変化のスピードも速くなる」とも述べています。つまり継続的デリバリーによって、チームメンバーは作業を自動化し、煩雑な作業を減らして、代わりに組織に高いビジネス価値を提供する作業に集中することができるため、組織はより俊敏になれるのです。

継続的デリバリーと継続的デプロイ

継続的デリバリーは、関連したコンセプトである継続的デプロと混同されることがよくあります。前述の通り、継続的デリバリーとは、自動化かつ制御されたアプローチです。いつでも変更と修正のリリースができるソフトウェアを構築することを指します。この場合、チームは継続的デリバリーによって、すべての変更をデプロイする必要はありません。必要に応じて、(部分的な)機能やソフトウェアを確実にデプロイできます。

一方、継続的デプロイとは、継続的デリバリーの次に来るプラクティスです。継続的デリバリーのプロセスで実施された作業は、自動的に本番環境にデプロイされます。継続的インテグレーションとデリバリー(CI/CD)はどちらも DevOps の中心となるプラクティスです。しかし、継続的にデプロイを望まない企業も存在しているため、継続的デプロイへの注目度はそれほど大きくありません。ある専門家は、「継続的デプロイがすべての企業に適しているとは限らないが、継続的デリバリーは DevOps プラクティスの絶対条件である 」と述べています。

継続的デリバリーは、企業に多くのベネフィットをもたらすDevOpsの中核となるプラクティスです。 Docker や Jenkins 、 GitHub や JIRA など、組織が活用できる継続的デリバリーツールは数多くあります。 MuleSoft の Anypoint Platform は、 Maven 、 MUnit 、 Jenkins 、 GitHub 、その他の一般的な DevOps ツールと連携しています。すなわち、継続的デリバリーとその他の DevOps の中核となるプラクティスを簡単に実装することが可能です。

継続的デリバリーツールの詳細と Anypoint Platform で、 DevOps パイプラインを作成すべき理由の詳細をお知りになりたい場合は、お問い合わせください。

お問い合わせはこちら