DevOpsを成功に導くには? コラボレーションの課題、改善のヒント:DevOpsによるコラボレーションが企業にもたらす4つのメリット
DevOpsを成功に導くのは、ツール、製品、個人ではなく、チーム間のコラボレーションだ。DevOpsにおけるコラボレーションの課題と改善のためのヒントを整理する。
DevOpsは、コーディングチーム、テストチーム、プロダクトチームを長い間孤立させてきた従来のサイロを解消することで、はるかに速いペースでのイテレーション(反復)やイノベーションを可能にする。
だが、最新のツールや技術がソフトウェア開発にもたらすメリット全てを考慮しても、DevOpsが成功するかどうかは人間同士のコラボレーション(協働)にかかっている。ソフトウェアプロジェクトマネジャー、ステークホルダー、開発者、運用チームが、プロジェクトのライフサイクル全体を通じて緊密に連携し、協働しなければならない。効果的な協働がなければ、DevOpsは失敗する。
DevOpsとは何か
DevOpsは、ソフトウェア開発とITの運用を融合することだ。その目標は開発チームと運用チームを1つのチームや1つの職務にまとめることではない。開発チームと運用チームがソフトウェアプロジェクトのライフサイクル全体にわたって連携できるような建設的な方法論または一連のプラクティスを作成することが目標だ。
DevOpsを適切に取り入れ、育成することで、ソフトウェアの開発、デプロイ、継続的な管理を合理化するための、継続的なイテレーション、デリバリー、改善といったアジャイルな職場文化が育まれる。つまり、DevOpsは調達してインストールできる新しいソフトウェアツールのような具体的なものではない。DevOpsとはまさに概念であり、協働する方法を指す。DevOpsの実践方法は、事業規模、構造、ニーズに応じて、さまざまな形を取る可能性がある。
DevOpsによるコラボレーションが企業にもたらす4つのメリット
DevOpsが成功するかどうかは、ツールやテクノロジーではなく、ライフサイクルに欠かせない業務チーム同士のコラボレーションにかかっている。DevOpsの取り組みは、4つのメリットをビジネスにもたらす可能性がある。
1つ目は生産性向上だ。コラボレーションにより人々はより速く連携して働くことができるようになる。より速く働くことで、チームがチケットを解決する余裕が生まれ、スプリントなど厳しい期限の順守が可能になる。DevOpsは、競合するワークフローやプロジェクトを迅速に処理するための新たな方法をチームに提供する。
2つ目は市場投入までの時間短縮だ。より高い生産性は、市場投入までの時間短縮というメリットにもつながる。新製品や製品アップデートの提供が、これまでの開発アプローチよりも欠陥が少なく、迅速になる。最終的には市場での競争力が高まる。
3つ目は品質向上だ。ソフトウェアチーム、運用チーム、業務チームのコラボレーションにより、合理的な目標設定、顧客のニーズや期待に関する知識の共有、既存の技術制約内での運用、問題や課題の特定、障害克服に向けた連携が可能になる。こうしたこと全てが製品品質の向上につながる。
4つ目はイノベーションの促進だ。DevOpsのようなアジャイル開発パラダイムによる迅速かつ反復的性質により、「失敗しても大丈夫だ」という考え方が育まれる可能性がある。その結果、クリエイティブな新しいアプローチ(新たなソフトウェアアルゴリズムやデプロイメントの新たな方針など)を容易かつコストをかけずに試すことができる。コラボレーションは、イノベーションの触媒になることが多い。それが、市場で自社製品を際立たせる特徴や機能につながるだろう。
これらの広範なDevOpsのメリットは定量化するのが難しい。だが次に示すように、DevOpsを導入することで達成可能になった技術的目標やビジネス目標が多数ある。
- 継続的アプローチ:CI/CD(継続的インテグレーション/継続的デリバリー)、継続的デプロイメントなどの開発アプローチは、適切に調整されたワークフローと強力なコラボレーションにかかっている。DevOpsのコラボレーションがなければ、信頼性の高いCI/CD環境はサポートできない
- パフォーマンスと信頼性:ソフトウェアは、負荷が高い状態でも適切に動作し、中断を最小限に抑えて動作しなければならない。アプリケーションをメンテナンスする際には、開発チームと運用チームが緊密に連携し、パフォーマンスとログのデータを共有して、コードに適切な変更と更新を加えてから、ソフトウェアを適切な実行環境にデプロイする必要がある
- 自動化:DevOpsの反復的性質は、開発、テスト、デプロイメントの周期的ワークフローに関係する多くの日常業務を処理するために、強力な自動化テクノロジーに依存することが多い。開発環境やデプロイメント環境がサイロ化していると、自動化の価値と実用性は大幅に低下する。自動化で自動プロセスの関連性と有益性を確保できるかどうかは、強力なコラボレーションにかかっている
- Infrastructure as Code(IaC):DevOpsによって促進される強力なワークフローとコラボレーションのサポートは、IaCの重要な基盤でもある。IaCにより、チームはPowerShellスクリプトやその他の自動化ツールなどのソフトウェアによるITインフラのプロビジョニングが可能になる。IaCの適切な実装と保守にもコラボレーションが不可欠だ
- 監視:従来の監視は、手動のアドホックプロセスだった。DevOpsのコラボレーションにより、製品の品質向上に必要な監視ツールやログ記録ツールを標準化および自動化できるワークフローの定義が可能になる
- ガバナンス:データ収集と収益創出を目的にソフトウェアを利用する企業が増えるにつれ、コーポレートガバナンスと規制コンプライアンスが重視されるようになっている。DevOpsのコラボレーションにより、チーム間の連携が強化され、製品開発と技術インフラを事業ニーズに合わせて調整可能になる。その結果、企業はソフトウェア製品の開発、デプロイ、管理、保守の方法をより細部まで把握できるようになる
DevOpsにおけるコラボレーションの課題
DevOpsとコラボレーションの促進にはメリットがあるとしても、次のような課題が幾つか生じる可能性がある。
- 企業文化:DevOpsは一つの方法論で、障壁を打ち破り、相互サポートを強化して業績の向上を目指す取り組みだ。ただし、DevOpsのパラダイムを成功に導くには、上級管理職を含む全てのレベルでDevOpsを受け入れ、サポートする意志を持たなければならない。管理職のサポートが不足し、既存の組織文化から抵抗を受けると、DevOpsのイニシアチブのメリットと効果が制限される可能性がある
- 複雑で柔軟性に欠けるワークフロー:DevOpsは日常の作業サイクルの速度を上げる。だが、DevOpsで使用するワークフローと自動化により、従来の開発とデプロイメントサイクルが複雑になる可能性がある。DevOpsにより、プラクティスやツールに新しいボトルネックが生まれたり、柔軟性が制限されたりしないよう注意する必要がある。自動化とポリシーがコラボレーションに取って代わることは決してない
- セキュリティと共有ワークフロー:コラボレーションでは各チームが作業を共有する必要がある。作業を共有するには、さまざまなソフトウェアコンポーネントやビルドへのアクセスをチームメンバーが相互に許可しなければならない。権限のないメンバーがワークフローや製品にアクセスすると、潜在的なセキュリティ問題が発生する可能性がある。DevOps環境を構築する業務部門と技術部門のリーダーは、プルリクエスト、ロールベースのアクセス制御など、セキュリティと共有ワークフローに影響する問題に対処しなければならない
- ガバナンス:ソフトウェア製品がもたらす結果について最終責任を負うのは企業だ。そのため、多くの場合、ソフトウェアの品質基準、デプロイ基準、監視とレポートの要件が重視される。コラボレーションが盛んな環境では、責任範囲の見極めが難しくなる可能性がある。そのため、仕事の透明性とコラボレーションの度合いが高まるにつれ、業務部門のリーダーは適切なガバナンスを確保することが重要になる
- ツール:DevOpsの中心になるのはコラボレーションだが、開発、デプロイメント、監視、コラボレーションでは相互運用可能なツールを常に重視する必要がある。適切なツールチェーンは、ワークフローと自動化の効率を上げるだけでなく、セキュリティとガバナンスをサポートする。不適切なツールを選択すると、ボトルネックやセキュリティの脆弱(ぜいじゃく)性を生み出す可能性がある
DevOpsコラボレーションのヒント
DevOpsでのコラボレーションの成功を収める可能性を高めるのに役立つベストプラクティスが幾つかある。次に示すのは、コラボレーションに関する最も重要なヒントの一部だ。
- コラボレーションの文化を育む:サイロを解消するのは難しいかもしれない。だが、解消することこそ、コラボレーションとDevOpsを成功に導くための中心となる要件だ。多くの場合、まずはシンプルなプロジェクトで新たなプラクティスやワークフローを考案することから始め、その後時間をかけてコラボレーションの機会を徐々に広げていく。コラボレーションを促進するためには経営陣のサポートが不可欠だ
- 役割と責務を定める:コラボレーションとは、あらゆることに全員が関与することではない(それでは混乱が生じる)。各チームの役割と責務を理解し、チームがどのように連携するかを把握することが重要だ。プロジェクトマネジャーは、顧客のニーズとプロジェクトの目標を理解し、それをチームが実装すべき行動に変換する。ソフトウェアチームは要件をコードに変換し、運用チームは変換結果を運用環境にデプロイして監視する。一般的には、開発者が新しいプロビジョニングツールを選択することは有益でなく適切でもない。システム管理者がソフトウェアアルゴリズムを設計する必要もない
- 方法論を洗練させる:DevOpsは、コラボレーション、柔軟性、改善の促進を目的とするアジャイル方法論に基づいているが、ビジネスのあらゆる規模、タイプ、ニーズに効果がある単一の方法論はない。ビジネスにDevOpsのパラダイムを適用させ、洗練させる機会を見つける。そうすれば、ビジネスとその固有のニーズに、より迅速かつ効率的な成果を生み出すことができる
- トレーニングして共有する:開発、運用、ビジネスチーム間のクロストレーニングや情報共有の機会を活用する。クロストレーニングの一般的な仕組みには、ワークショップ、トレーニングセッション、非公式のランチ&ラーニングミーティングなどがある。こうした機会は、チーム間の幅広い交流を促し、他のチームのニーズ、機能、制約を理解するのに役立つ。各当事者が相手の視点を理解することで、コラボレーションがより適切になる
- 評価して改善する:企業は、コラボレーションとDevOpsが事業上のメリットに実際どの程度つながるかを把握しようとする。そのためには、コラボレーションの取り組みをさまざまな尺度に基づいて継続的かつ定期的に評価する必要がある。主観的な指標としては、プロジェクトの経験に基づいた意見がある。客観的な指標には、解決済みのヘルプチケット数や修正済みのバグの数がある。主観的評価と客観的評価を利用することで、コラボレーションとDevOpsの取り組みの改善を提案、実践できる
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 大規模な開発チームが導入を検討すべきDevOpsテクノロジーとは? SlashData
調査会社SlashDataは、用途や人気が異なる6つのDevOpsテクノロジーがソフトウェアデリバリーにどう影響を及ぼしているのか調査した結果を発表した。SlashDataは「大規模な開発チームが導入することで最大の効果を発揮できる」として3つのDevOpsテクノロジーを挙げている。 - Googleの調査で分かった、DevOpsで好成果を収めるために必要なこととは
Googleは、DevOpsを実践する開発者を対象とした分析結果を公開した。DevOpsという開発手法で好成果を収めるパフォーマーたちが、どのように技術的かつ文化的能力を開発の過程に組み込み、成功をもたらしているのかをテーマに深堀りしたという。 - DevOpsに失敗する企業は何に手こずっているのか、StackOverflowが解説
DevOpsの次のステップとして注目されるのがPlatform as a Product(プロダクトとしてのプラットフォーム)だ。Stack Overflowが公式ブログでDevOpsの現状と将来を説明した。