DevOps 成熟度モデル - その1

DevOpsのコンセプト導入に自分たちはどのくらいのレベルにあるのかはみなさん気になるところではないでしょうか?

DevOpsに限らずコンピュータ業界は様々なバズワードが出てきては消えています。再利用からオブジェクト指向、疎結合、SOA、クラウドと同じ成熟度の延長線上にあるこれらのバズワードも様々な属性があり、そもそも誰のための物で、どういった特性があるかを注意して観察する必要があります。

たとえばクラウドと言う言葉は、エンドユーザが使うコンピュータの利用形態の一つで、そのサービス提供のために誰が何をしなければいけないか提供側はそれぞれのミッションで考えればサービスが提供できます。ところが最近出てきたDevOpsはどうでしょう?運用が楽になるとか、Time To Marketが早くなるとか、誰が嬉しいのか聞く人によっても様々な解釈とアプローチがされているのが現状で、ツールを入れてどうにかなるものではないのではないでしょうか?つまりクラウドのようにテクノロジーで解決するよりはプロセスの整備が重要になるといった特性があります。だから成熟度向上が必要でありそのための評価軸が求められます。

このコラムでは、HPの研究と業界での経験に基づいて提唱しているDevOpsの成熟度モデルの概要を説明することで、改善のためのアプローチを提唱する物です。

DevOpsは様々なステークホールダーが改善することで実現しますが、現在のポジションを理解し、その進化のパスをうまく利用することで最終的にはリリースを高速化して市場へのサービスの投入時期を早めて同時に運用品質を高めることが可能になります。

第1回では、HPの提唱しているDevOps成熟度モデルを説明します。また第2回では様々な活動の成熟度レベルを評価するために使用され、次の1つ上のレベルに上げる為に必要な方法のいくつかの実用的な例を説明したいと思います。

DevOps成熟度モデルがどのように適応できるか?

HPが考えているDevOpsの成熟度モデルは5段階になっています。またそれぞれの段階では3つの視点で成熟度を分けています。

  1. プロセスの成熟度
  2. 自動化の成熟度
  3. コラボレーションの成熟度

それぞれの成熟度レベルはこれら3つの視点の組みあわせで記述されています。一つ上の成熟度にあがるためには3つそれぞれでの改善が必要としています。

アプリケーションやビジネスニーズから来るライフサイクルを通じたサービストランジション(移行)、品質を担保するためのソフトウェアの要件や実装、最終的には展開と運用、多くのプロセスが標準に従って実装されています。これらは一般的な会社では数多くの組織活動にわかれ、違った組織やミッションの人により実行されています。また組織をまたぐこともあるでしょうしアウトソースの場合もあるでしょう。この記事では、プロセス全体または個々の活動のDevOpsの成熟度を測定することができる方法のいくつかの例を提供します。申し上げるまでもなく組織内のさまざまな活動は、同じ会社でも成熟度の異なるレベルである可能性があります:

以前のBPRの進め方同様に、プランされ段階的にプロセス改善を開始するのは日本では最も苦手な領域ですが、様々な組織横断で全体最適にメスを入れることは、プロセス上の無駄が減り会社全体として利益が上がるでしょう。

私の知る限りDevOps成熟度モデルのほとんどは、CIのようなソフトウェア開発・テストチームによって主導されるビルド-テスト-デプロイの継続的なリリースに焦点を当てています。

私たちの定義する成熟度モデルは、すべてのアプリケーションやサービスのライフサイクルをカバーされるようデザインされています。例えば変更がアジャイル開発で開発されたソフトウェアチームによってドライブされていたり、もしくは既存のIT組織からLeanIT(新しいサービスを仮説検証する最小限の製品を使い仮説検証・改善をできる限り短い時間でまわすやり方)に以降を検討している組織、マスプロダクションのアプローチであっても適応できるものです。私たちの成熟度モデルはCMMIの成熟度モデルに沿って定義されています。ご存じのようにDevOpsのプラクティスはすべてのアプリケーションやサービスに適合するとは限りません。一部のアプリケーションやサービス要件の頻繁な変更やデリバリーのコストを考慮すると既存のウォータフォール型のアプローチの方が適切である場合もあります。

成熟度の五段階モデル

成熟度の5段階モデル

Level 1 - initial

  • プロセス成熟度:
    レベル1での成熟度では、プロセスは一般的に行き当たりばったりで混沌としています。プロセスの結果は多くの場合、割り当てられた予算とスケジュールを超えてその額は予測できません。多くの場合突発的な問題の発生時に例外プロセスで対応する傾向があり、場当たり的な対応がベストプラクティス利用を難しくしています。
  • 自動化成熟度:
    自動化のプロセスやそのためのアクティビティはありません。結果としてプロセスは反復されることはなく、コントロールもなく結果的に時間がかかっています。
  • コラボレーションの成熟度:
    このレベルは、チーム間での貧弱で場当たり的なコミュニケーションとコーディネーションと特徴付けられます。 チームの役割と責任は定義されておらず、人が変わると流動的に変化します。一般的にはチーム間では共通のフォーマットや方法など正式な手続きを介して情報を提供します。意志決定はプロセス活動に責任をもつ利害関係者により作られており、決定後他のチームに伝達されています。

Level 2 - Managed

  • プロセス成熟度:
    レベル2での成熟度では、プロセスは管理されていますが、プロジェクト間または同じプロジェクトでもさまざまなライフサイクルの段階全体で標準化されていません。標準やプロセス定義そして手続きなどは、例えば異なったグループ間でそれぞれの中身がかなり異なります。
  • 自動化成熟度:
    プロセスはプロセスが文書化され、部分的に自動化されています。中央集権型でアーキテクトされたものでなく、サイロで自動化が実装されています。
  • コラボレーションの成熟度:
    管理されたコミュニケーションとコラボレーション:情報同期のため定期的にミーティングが行われます。リリースが開発と運用できちんと伝えられ協調し調整して行われます。チームは情報といくつかのケースではリソースを共有しています。またステークホールダーの役割が明確に定義されています。チーム間での頻繁なコミュニケーションがあります。いくつかのシェアされた意志決定がありますが多くの意志決定は個別に行われ、その後別のチームによって協調し調整されます。

Level 3 - Defined

  • プロセス成熟度:
    プロセス間でよく特徴付けられ標準化されています。これらの標準プロセスは、組織全体で一貫性を確立するために使用されています。プロジェクトは組織によって定義された標準フレームワークに保ちながら、標準プロセスをモディファイすることで彼ら独自のプロセスを作成します。EAを導入している企業はこのレベルといえると思います。
  • 自動化成熟度:
    特定のアプリケーションやサービスの環境やタスク向けのサイロでの自動化に変わって、全体最適視点ですべての組織向けの作られた全社でのプロセスをサポートする中央集権型でアーキテクトされた(central automated infrastructure)自動化基盤があります。自動化の効果が高いプロセスに対してRunBookAutomation(手順の自動化)が実装されています。
  • コラボレーションの成熟度:
    コラボレーションがチームをまたがって確立されます。これは、アイデアの共有、可視性の向上とより迅速なフィードバックを可能にするもので確立されたプロセスとツール間連携の本質的な部分になります。すべてのチームメンバが決められた責任範囲を守り、頻繁なコミュニケーションと相互信頼をもつ共通の基盤を利用します。

Level 4 - Measured

  • プロセス成熟度:
    プロセス品質および性能は可視性と予測可能性を達成するために測定されます。プロセスのパフォーマンスは、統計およびその他の定量的な技術を用いてコントロールされます。そして予測はきめの細かいプロセスデータの統計分析に部分的に基づいています。アプリケーションのパフォーマンスやサービス提供とビジネスの関係性などのKPIが収集されるのが一般的です。
  • 自動化成熟度:
    自動化されたエンドトゥーエンドのプロセスが測定されコントロールされています。可視性とそれぞれの活動(ステータス、コスト、時間、利害関係者)に対しておよび組織をまたがった判断材料となるデータを提供します。自動化されたプロセスのメトリックは、ビジネス目標に対して測定されています。
  • コラボレーションの成熟度:
    活動に関わる人々に関する情報を収集することにより、コラボレーションベースのプロセスでの非効率な点とボトルネックを分析するため測定されます。具体的にはメンバのノウハウ提供や貢献度のレベル、情報の関連性や各ステップ実行への影響などの項目になります。

Level 5 - Optimized

  • プロセス成熟度:
    個別活動の最適化とは対照的に、最小限のリスクとコストで、ビジネス目標の達成に向けた全体的なプロセスの継続的な評価を行うプロセスが存在します。
  • 自動化成熟度:
    メトリックの分析や、自己学習機能によりと自動的に再プロビジョニングを行うなど自動化されたプロセスの継続的な改善があります。 セルフサービスの自動化は、組織内の様々な利害関係者に提供されています。
  • コラボレーションの成熟度:
    コラボレーションは、効果的で継続的なナレッジシェアやエンパワーメント(個人や集団が自らの生活への統御感を獲得し、組織的、社会的、構造に外郭的な影響を与えるようになること)に最適化されています。

次回は、どのように様々な活動の成熟度レベルを推定し、次のレベルに移動するのに必要なものが何かをいくつかの実用的な例と共に提供します。

タグ:
カテゴリ: