(この記事は、CloudBees社 Blog 「6 Keys to Unlock the Value of DevOps」2018年4月20日 Brian Dawson 投稿の翻訳記事です。)
今日のソフトウェアを語るうえで、次の2つは明白な事実です。
- ソフトウェアは規模の大小を問わず企業において現実的な価値を生み出しており、プロセスを変革し、まったく新しいアプリケーション駆動型ビジネスモデルを創造するのを助けています。
- 市場をリードする企業のIT組織は、継続的インテグレーション、継続的デリバリー、DevOpsなどの一般的なプラクティスの精神を取り入れて、ソフトウェアを適切な方法で提供することに力を注いでいます。
反面、それほど明白でないのは、組織がこれらのプラクティスが示す原則にきちんと従っているかどうかです。これまでのブログ記事では、 継続的インテグレーションおよび継続的デリバリーについて詳細を検討し、多くの組織が自分たちはプラクティスを最良の方法で実行していると考えているが、詳しく調べてみると実際はそうではないことを明らかにしました。
DevOpsの場合はどうでしょうか?組織はDevOpsを正しく運用しているでしょうか?継続的インテグレーションや継続的デリバリーを行っていても、DevOpsのすべてのチェック項目をクリアすることができないというケースはあるのでしょうか?重ねて、ソフトウェアのイノベーションが経済を動かす傾向に拍車がかかっているなか、組織がパフォーマンスの最適化を追求するには、これらの質問にきちんとした答えを出すことが非常に重要です。
概要を言えば、DevOpsは、正しく実践するなら、組織を変える大きな要因になる可能性があります。しかし、DevOpsの間違った実践は非生産的であり、組織にさまざまな負担をかける可能性があります。ここでは、DevOpsとは何か、またその正しい実践方法を見ていきます。
DevOpsの定義
私は、DevOps、継続的インテグレーション、継続的デリバリーをいわばソフトウェアデリバリーの3兄弟とみなす考えが気に入っています。この3つはすべて、プロセスの合理化を目指すアジャイルおよびリーンの運動から生まれました。ただしそこには違いもあります。継続的インテグレーションは、自動ビルドやすばやい変更など、デリバリープロセスの左側のプロセスに重点を置いています。継続的デリバリーは、運用に至るまでのパイプラインのベストプラクティスをカバーします。 DevOpsは、異なる職能を持つチーム間の連携をサポートするために必要な組織の変革に重点を置いています。しかし、これらはすべて一体に結びついています。
高いレベルから見れば、DevOpsは文化的な用語です。技術的プラクティスに支えられたソフトウェア開発文化を創造したとき、DevOpsを達成したと言えます。DevOps文化では、ソフトウェア開発に関わる各ステークホルダーは、質の高いソフトウェアを迅速に繰り返しリリースするという共通の目標に沿って相互理解と共感を持っています。
継続的インテグレーションや継続的デリバリーを正しく実践しているのに、DevOpsの実現には程遠いということはありえるでしょうか?まさにありえます。DevOpsに移行するために必要な文化的な変革を伴わずに継続的インテグレーションおよび継続的デリバリーを実践することも、これらのプラクティスをマスターすることさえも(ある程度までは)可能です。
一方、うまく機能している継続的インテグレーションおよび継続的デリバリー プラクティスを基礎とすることなくDevOpsを正しく実行することはできません。Jez Humble氏がよく言うように、DevOpsプロセスはBashスクリプトを使用して実装することもできます。本来、DevOpsはどのようなプラクティスを使って構築するかは規定しません。しかし、持続可能、反復可能、かつスケーラブルな方法でDevOpsを実現するには、継続的インテグレーションと継続的デリバリーに真摯に取り組むことが必要です。
DevOpsを正しく実践する
ここ数年、組織がDevOpsを正しく、あるいは間違って実践している兆候を特定しようとする試みが多くなされています。効果的なDevOps組織の特性として比較的よく挙げられるのは、 DevOps戦略を明確に定義していること、また事態が悪化しているかを判別するための「常識的」ものさしを持っていることなどです。良くないDevOpsの重要な指標としては、失敗を許容しない、また実装の後半でテストプロセスを後付けしていることなどがあります。
私はDevOpsの文化を達成することに重点を置き、さまざまな評価方法を次の6つの推奨事項に要約しました。
- エンドツーエンドから全体的なプロセスを定義する
うまくいっているDevOpsの文化は、営業、開発者、テスター、およびIT運用チームが共通の目的を中心に共同作業することを重視します。これらの関係者が協力して、プロセスの開始、パイプラインの適切な構築、デリバリープロセスの実装、結果の評価方法についてそれぞれ情報を提供します。 - まず、1つのチームでDevOpsを成功させる
組織全体でDevOpsを達成しようとする前に、それが小規模でうまくいくことを確認し、ボトムアップから導入が進み、マネージャークラスの重要人物の賛同が得られるようにする必要があります。導入を始めたばかりの段階では、経営陣の賛同を得るのが困難だったり、時間がかかることがありますが、組織全体の変革を成功させるには必須の要件です。賛同があるかないかは、タイムライン、予算、組織に影響を与えます。 - 組織にサイロがないことを確認する
すべての組織でサイロを排除できるとはかぎりません。しかし、デリバリープロセスにすべてのステークホルダーを関与させ、調整を行うことで、部門間をまたいだ仮想の(または実際の)製品チームを結成し、サイロの影響を減らすことができます。これは、組織内のさまざまなチーム間の共感を確立し、コラボレーションとフィードバックの文化を推進するのに役立ちます。 - 適切なメンバーが参加していることを確認する
組織内のすべてのチームや職能グループからの意見を取り入れてDevOps戦略を策定しようとすると、複雑さに圧倒されてしまう(分析麻痺に陥る – Analysis paralysis)可能性があります。DevOpsへの転換を迅速に実現するには、範囲を狭め、最初の実装を1つまたは小数のプロジェクトに集中させることが最善です。これが成功したら、新しい入力を取り入れながら、複数のチームにわたってDevOpsを徐々にスケールアップしていきます。手始めとして私が推奨するのは、幹部から現場のメンバーまで、さまざまなプロセスやグループから代表者を召集することです。これには、営業部門の幹部、プロジェクトマネジメントの管理者、開発チームの主任開発者、そして実際の開発者などが含まれます。本当の意味で、実体験に基づいて改善すべき問題点を指摘できるのは現場のメンバーだけであるため、彼らを参加させることは不可欠です。これはまた、現場に必要とされる共感と賛同を生み出すのにも役立ちます。 - 「DevOpsを購入」しようとしない
ツールを一式購入すればDevOps組織に移行できるはずだという思い込みに基づいて動いている組織もあります。このような罠にはまらないでください。ツールはサイロを越えてチームを結びつけ、DevOpsを支える自動化を可能にする重要な部品ですが、ツールだけでは問題は解決しません。文化を創造し、継続的インテグレーションと継続的デリバリーの重要な側面をすべてまとめあげるという困難な仕事を引き受け、ツールが果たすべき役割を確実に果たせるように計らう必要があります。 - 進捗状況を正しく測定していることを確認する
効果的なDevOpsの文化は、結果を測定し、定量化可能なメトリクスに基づいてレポートすることを強く指向します。デリバリーパイプラインを構築する際、このような測定とレポートを実行し、目標達成までの進捗状況を継続的に追跡する能力をパイプラインに組み込む必要があります。たとえば、非効率的なデリバリープロセスは、膨大な時間外労働につながる傾向があります。運用エンジニアや他のチームメンバーは、ソフトウェアをデプロイするために長時間働くことになりがちです。したがって、時間外労働時間を50〜75%削減するという目標を掲げてチームの時間を測定することで、適切な規律を浸透させ、卓越した文化を促進するのに役立ちます。
誤ったDevOpsによるデメリット
DevOpsを間違って実践すると次のような結果を招きます。
- なにより、チャンスを逃すでしょう。今日の市場は急速に動いており、どんな企業にも、DevOpsを正しく実践している競合他社が確実に存在しています。そのような競合他社は革新を続け、着々と市場での優位性を獲得しています。誤った、あるいは不適切なDevOpsの実践に時間を費やすと、多大な機会損失が伴います。
- 内面的コストもあります。DevOpsイニシアチブが失敗した場合、士気は低下し、ITリーダーは別のDevOpsへの移行プロジェクトに必要な賛同を得るのが難しくなるかもしれません。
- さらに、実際の金銭的コストがあります。欠陥のあるDevOpsプロジェクトに投資すると、余所に投資できたはずの金銭、時間、従業員のリソースが無駄になります。
適切なDevOpsから生まれるメリット
一方、DevOpsの実装が成功すれば、次のように大きな価値を生み出すことができます。
- 従業員の幸福度向上 – 効率的で熱意の高いDevOps組織を作り上げることができれば、企業が優れた人材を維持し、獲得するのに役立ちます。
- 生産性の向上 – ソフトウェア開発ライフサイクルから無駄な時間を削減することは、ソフトウェアストリームの価値の向上につながります。
- スピード – 品質を維持しながらより速くイノベーションを実現することは、企業に大きな市場優位性を与えます。
まとめ
DevOpsを正しく実践するには、人、プロセス、ツール、組織の目標のあいだにいくつもの橋をかけて結ぶ必要があります。これは難しい作業です。すぐに達成できるものではありませんが、組織が適切なDevOps環境の構築に真剣に取り組むなら、必ず成し遂げられるでしょう。ある日、ふらりと姿を現して、DevOpsをやるつもりだと言うだけではいけません。継続的インテグレーションと継続的デリバリーを材料として、組織のすべてのメンバーをあなたのビジョンの下に集結させなければなりません。あなたの現在の立ち位置、目的地、目的にたどり着くための手段をはっきりさせてください。そうすれば、あなたの道を進むことができるでしょう。