DevoOpsは開発と運用の文化を変革するためのムーブメント
DevOpsのうち、Opsの部分はIT運用チームを意味し、管理・監視・拡張の技術やサービスに携わる人々を含みます。具体的には、システムエンジニア・システム管理者・データベース管理者・ネットワークエンジニア・リリースエンジニアといった職が該当します。 一方で、Devは製品開発に携わる全ての人々に関係しています。開発者・テスター・ビジネス分析・プロダクトマネージャー・プロダクトオーナー等が含まれます。
DevOpsは、文字通り、開発と運用の双方を意味します。この言葉は、開発と運用の統合を強調するのに加え、DevOpsは文化的な施策だと言われています。DevOpsの目的は、チーム間の摩擦を減らし、協業を推進することです。サイロ化してしまう現在のやり方を変え、開発と運用の双方から、変革を目指します。具体的には、DevOpsはチームの協力とプロセスの統合を行い、継続的なデリバリーやいくつかのプロセスを実装します。
DevOpsは継続的デリバリーの実装にはとどまらない、大きなプロセスの変化
DevOpsを継続的デリバリーだけだと捉えるのは、多くの人が犯してしまっている誤解です。DevOpsは、開発と運用の結びつきを強める取り組みであり、継続的デリバリーを実装する前提となるものです。Devops は文化レベルの取り組みであり、技術を使う考え方を革新していきます。
開発と運用がサイロ化してしまう手法には、問題がありました。しかし、具体的に、どの部分がうまくいっておらず、DevOpsはそれをどう改善するかは議論の余地があります。
まず、DevOpsのブームは今起きている問題の観察から始まりました。ソフトウェア開発プロジェクトは悪い習慣がしみついています。リリースが行われるにしても期限から遅れたり、品質が期待を下回ったりするのが当たり前のように感じられるという、悪しき習慣です。
DevOpsは、上記の悪い習慣を打ち破るのを目指します。伝統的な開発プロジェクトで問題になるのは、文化の変化に対する抵抗です。リスクのあるデプロイを含む、重要な意思決定においては問題を深刻化させます。そして、この根本原因はサイロ化にあると言われています。
問題を細かく分割してサイロ化する文化から、皆で共通のゴールを共有する文化へ
数千年前に提唱された問題解決手法では、問題が大きい場合、管理できるくらいの小さな問題に分解して取り組むべきだとされます。ビジネス・経済・政治・社会科学といった分野では成果を上げてきた考え方ですが、近年の IT業界では問題を引き起こしています。
チームを分割するのは悪いことではないと思われていましたが、実際、システム開発ではチームが相互に数え切れないほど依存性を持っており、実際的には干渉が避けられない状況にあるのです。開発と運用チーム、あるいは、さらにサブチームへと部門が分割されていくと、サイロ化が発生してしまいます。そのため、DevOpsの必要性が生まれてきたのです。
プロセスの観点からは責任を当て曖昧にしてしまうように思うかもしれませんが、サイロ化はコミュニケーションの壁を作ってしまっているのが現状です。この壁は作業フローにおいて、デプロイメントから利害関係者のフィードバックに至る各ポイントに発生します。そして、効果的なチームワークを妨げ、共通のゴールを目指すためのコミュニケーションを阻害してしまいます。
DevOpsは、あるべき文化を醸成するために実装するべき方法を示唆しています。つまり、共通のゴールを目指す一つのチームを作り上げる文化です。
DevOpsの文化を育むためにはどうしらたよいか
DevOpsが提唱する開発・運用の文化を育むためには、どうしたら良いのでしょうか。まず、はじめに開発と運用にまたがる、核となる価値観が必要です。そして、利害関係者にもそれを周知します。
次に、明確で理解できるゴールを設定し、それがビジネス上の目的や自社の価値観と合致している点を確認します。なぜDevOpsに取り組むかを明らかにした上で、どう実装するかへと進んでいきます。
そして、開発と運用が合同で、ゴールへと向かっていけるプロセスを実践します。そのプロセスには検証・確認が行われます。
DevOpsの文化を築き上げるのは困難であり、さらに、それを維持するのは、さらに難関です。継続的に人の声を聞き、振る舞いを注意深く理解する取り組みが求められます。また、受け入れるべきではない考え方を特定し、迷ったときに立ち戻るべき原点を確認します。
DevOpsでは継続的な進歩によって、やり方を修正するのを当然とします。そのため、問題が発生したときにもパニックに陥る必要がありません。開発と運用が協業し、問題の解決に対するアクションを取るのです。開発と運用を統合する過程では、まず、正しいやり方に優先して取り組みます。重要ではないプロセスに力を注いでも、効率的になるわけではないからです。
組織文化を変えるための8つのステップ
文化的な変化について語る上でハーバード・ビジネス・スクールのジョン・コッター教授を避けて通ることはできません。彼の研究では文化的な変化にまつわる8のステップを明らかにしました。
緊急性の感覚
第一のステップは緊急性の感覚を作り上げる点です。DevOpsの文脈ではビジネス機会についてコミュニケーションし、なぜDevOpsの文化が必要かを組織に落とし込む必要があります。
正しい人々を一箇所に集める
重要なステークホルダーが携わり、先行してDevOpsを導入する人が実験と学習を進められるよう推進します。
全員が同じ認識を持つ
各人の見方や心配事を理解し、現実的に考えて、どのような成果・ゴールを求めているか決定し、継続的に見直します。
変化が長続きするようスキルを磨く
共通の言葉を導入し、継続的でタイミングの合ったトレーニングを実施します。また、先行して導入したチームを活用し、非公式な同僚とのネットワークを活用します。短期的な成果が生まれるようにし、かつ、それを賞賛する取り組みは有効です。このような透明性がDevOpsの導入に対する信頼を築きます。
重要な振る舞いに注目する
文化的な変化では、その変化を促進する振る舞いと、それを妨げてしまうものがあります。最も重要な振る舞いを広めていく方法を特定します。
実験と学習
包括的なアプローチをとり、改善の機会を優先順位付けします。具体的には、重要なチームメンバー・プロセス・技術から着手するようにする方法が推奨されます。パイロット・プロジェクトを実施、そこから学んだ点を特定・共有します。
成果をまとめ、より多くの変化を生み出す
透明性の観点から、成功・失敗・学びをチームに還元します。さらに、再利用できる成果物を利用可能にし、文書化するよう心がけます。継続的に教育・訓練に投資すると、改善サイクルが広がっていくものです。
惰性を避ける
新しい方法を試し続けることが推奨されます。新しいやり方にインセンティブを与え、高い評価を与えます。
DevOpsの文化を構成する要素
あらゆる文化的な変化は、いくつかの要因によって左右されます。DevOpsでは以下の要素が含まれます。
- 文化的な変化に対する経営層のコミットメント
- 学習・協業する文化の醸成
- 共通の価値観と言語
- 開発とIT運用にまたがったシステム・エンジニアリング
- 意味のある指標
- 自動化と手作業のバランス
- アジャイル、リーン方式、サービスマネジメントの適用
- オーブンで頻繁なコミュニケーション
まとめ
DevOpsは継続的デリバリー、継続的インテグレーションといった技術が注目されがちですが、技術を導入しただけでは開発と運用の在り方を変えるには至りません。これまで開発フローを分割して役割分担を明確にしていた点を、複数のチームをまたがった仕組みを導入することで、皆が共通のゴールへ向かっていけるような仕掛けがDevOpsには求められているのです。