Forrester ResearchのアナリストであるGlenn O'Donnell氏とKurt Bittner氏は,開発者と運用担当が別々に作業している時にお互いをどう見ているかを取り上げた報告書を公開した。その中で両氏は,両者の間のコラボレーションに関する7つの習慣(seven habits)を提案している。氏らの言う "DevOpsに極めて有効な7つの習慣 (The Seven Habits Of Highly Effective DevOps)" とは次のものだ:
- 話し合いでは両者の立場を尊重すること
- すべてにおいてアウトサイド・インのアプローチを採用すること
- ヒューマンエラー抑制のためビルド,テスト,リリースのプロセスを自動化すること
- 開発作業と運用環境を簡略化,標準化すること
- 開発と運用を超越したシステムエンジニアリング文化を浸透させること
- フィードバックとフィードフォワードのループを実践すること
- 開発者をサポートの最前線に配置すること
続いて氏らは,それぞれ詳細を説明している:
話し合いでは両者の立場を尊重すること
顔を付き合わせて会話をすることは,日々の課題や苦労を分かり合うためのよい方法だ。このような認識が開発者と運用担当者の行動に関連性を持たせ,それぞれがお互いを理解する上で有効な手段となる。ある意味では当然のことだが,お互いの理解を前提条件としなければ,DevOpsは始まらない。
すべてにおいてアウトサイド・インのアプローチを採用すること
可能な手段を探し出した上で,それを使って最善を尽くすべくトライするというのは,ITではごく普通のことだ。しかしDevOpsには,また別の視点が必要となる – 開発者と運用担当者のいずれにも,まず最初にビジネスユーザのニーズを理解することが求められる。これらのニーズを基本として,それを満足するために何が必要なのかを定義しなければならない。アウトサイド・インのアプローチによって,開発者と運用担当者の作業の優先順位の付け方を根本的に変えることができる。
ヒューマンエラー抑制のためビルド,テスト,リリースのプロセスを自動化すること
配信プロセスの自動化には,開発者と運用担当者が協力して作業することが重要だ。スケーラビリティテストのような部分は運用担当者が専門とするものであり,ビジネス機能のテストは開発者が日頃から行っているものだ。テスト自動化以外には,入手の容易なインフラストラクチャ自動化ツールなども活用すべきだ。
開発作業と運用環境を簡略化,標準化すること
この項目で重要なのは,新規システムでは可能な限りの簡略化を実施すべきであるが,既存システムでは合理的な範囲に留めておくべきだ,という点である。James Governor氏は先日のDevOps専門委員会で,DevOpsの導入に当たって,インフラストラクチャの簡略化が果たして必須なのか疑問だ,としている。
開発と運用を超越したシステムエンジニアリング文化を浸透させること
モノシリックなソフトウェアは,より扱いやすいモジュールに分割するべきだ – インフラストラクチャの自動化でも,アプリケーションコードを書く場合においても。
フィードバックとフィードフォワードのループを実践すること
アプリケーションのスムーズな実行を保証するためには,開発者に対して,実運用でのアプリケーション状態をフィードバックする必要がある。同時に運用担当者には,プロセスの可能な限り早い時期に,要求されている実行環境の情報が必要だ。
開発者をサポートの最前線に配置すること
サポートタスクは開発者にとって,創造的な作業の機会を奪う面もあるが,コードが運用時に発生させる問題を扱うことも重要だ。彼らがもっとも早く問題を修正可能であるだけでなく,彼らが運用時のアプリケーションの振る舞いから学ぶことも数多い。