DevOpsとは開発を意味するDevelopmentと運用を意味するOperationsを合成した言葉で、開発と運用の間のギャップを埋め、システムの開発と運用を含めた全体(ライフサイクル)を効率化/最適化するための手法です。本コラムでは、このギャップとは何か、更に、DevOpsがこのギャップを埋める際の観点について解説します。
開発と運用のギャップとは何か、なぜ生まれるのか
かつて、エンタープライズにおけるITは、主として既存のビジネス効率化のために活用されてきました。そのために構築されるシステムは、現行業務フローから新業務フローをデザインし、長い期間を経て開発され、入念な準備の末にリリースされます。一旦リリースされてしまえばシステムの変更は少なく、最小限にとどめられます。
このようなシステムを多く構築してきた企業には、組織効率の観点から、「システムをつくる」開発担当部署(以下、開発部)と「システムを動かす」運用担当部署(以下、運用部)が存在します。この合理的な判断の結果、開発部は「限られた予算と期間で要求された機能を作りきる」ことがゴールとなり、運用部は「問題なくシステムを運用し続ける」ことがゴールとなりました。
ところで、エンタープライズにおけるITは、以前にも増して、新しいビジネスを創造するために活用されようとしています。そのために構築されるシステムは、予測と計測の繰り返しにより機能をデザインし、短い期間で開発され、毎日のようにリリースされます。一旦リリースした後も、繰り返し機能が追加/変更されます。
今までのシステム開発 | これからのシステム開発 | |
---|---|---|
目的 | ビジネス効率化 | ビジネス創造 |
要件定義 | 業務フロー分析 | 予測と計測 |
開発期間 | 長く1度きり | 短く何度も |
リリースの間隔 | 長い | 短い |
システムの変更 | 少ない | 多い |
このような変化を考慮せず、既存の組織/体制のまま、新しいビジネスを創造するようなシステム開発を行うとどうなるでしょう。「どんどん新しい機能を追加/変更したい」という開発部と「安全に運用するためにシステムの変更を受け入れたくない」運用部の間にギャップが生じてしまいます。
このギャップこそが、DevOpsの問題領域です。このギャップはシステムの迅速なリリースを妨げ、継続的な改善を非効率なものとします。新しいビジネスは商機を逃し、ユーザのニーズをつかむことはできず、やがて市場から消えていくことになります。
DevOpsはどのようにしてギャップを埋めるのか
もしあなたがDevOpsに取り組もうとしたとき、まずソフトウェアの話からはじめるベンダーに会ったら眉に唾をつけてください。彼らはあなたの組織をDevOpsで改善しようとしているのではなく、ソフトウェアのライセンスを販売したいだけかもしれません。
たしかに、DevOpsにとってソフトウェアは重要な要素の1つですが、全てというわけではありません。CTCでは、DevOpsには大きく3つの観点が必要だと考えています。
- 組織/体制
- 人間性/文化
- 自動化/可視化
組織/体制
開発と運用のギャップの主たる原因は、そのゴールが異なることです。そのゴールを設定しているのは、組織です。本来であれば、「新しいビジネスが収益をあげ続けること」が共通のゴールとなりますが、組織により役割が分断され、それに付随してゴールが分断されるため、ギャップが生じています。そのため、共通のゴールを目指すよう改善する必要があります。また、開発プロセスや開発プラクティスも、例えばアジャイル開発のようなより変化に強い方法を採用することが求められます。
人間性/文化
開発と運用はスキルも業務の進め方も異なり、システムへのアプローチの仕方も違います。そのような中でお互いの「異文化」を理解しあうようなマインドづくりも重要です。例えば、DevOpsを最初に提唱したと言われているプレゼンテーションによると、開発と運用がお互いの業務を敬い、お互いの作業を信頼し、失敗に対して建設的な態度をとり、批判しあうだけの関係にならないことが重要であるとされています。
自動化/可視化
短期間で開発とリリースが繰り返されるため、それをサポートする環境が必要です。特に、リリースや品質保証の自動化、プロジェクト状況やシステム稼働状況の可視化や、インシデントからリリースまでのトレーサビリティなどは、作業効率化の観点だけでなく開発と運用のコラボレーションの観点から重要です。
以上3つの観点に関連した取り組みは掛け算のようなものです。掛け算なので、ソフトウェアで自動化/可視化しただけではうまくいきません。組織が整理され、メンバーのマインドが成熟すれば、ソフトウェアの導入が大きな助けとなります。
今回はDevOpsが解決しようとしているギャップとそれを埋める際の観点について解説しました。次回はDevOpsの組織/体制と関連の深いアジャイル開発、特にスクラム開発についてご紹介します。また、CTCでは今年度よりDevOpsに関連する新しいソリューションの開発に取り組んでいます。それについては、また別の機会にご紹介します。
著者紹介
ITサービス事業グループ
ソリューション事業推進本部
ソリューションビジネス部
萱間 真人