普及しているローコード/ノーコードのソフトウェアプラットフォームにもかかわらず、また大手ソフトウェアベンダーが拡大する製品ポートフォリオの簡素化に取り組んでいるにもかかわらず、企業向けソフトウェア導入の大半に見られる一般的な傾向は、相互接続された複雑さと入り組みである。
実際、現代のソフトウェア開発はかつてないほど複雑だ。1つのエンタープライズプロジェクトに、数十人のステークホルダーと数百ものAPIが存在することもある。
しかし、DevOps(開発と運用)によって、開発チームと運用チームはワークロードと成果物を統合し、共同で取り組める。DevOpsに、従来のDevOpsの職場方法論をよりWebチーム重視にしたWebOpsが加わった今、ITチームは今後数年間で、より体系的にプロセス中心になると考えてよいだろう。
しかし、プロジェクトが迷走し、チームがDevOpsの痛みや負担を感じていることが明らかな場合でも、その負のエネルギーの源は簡単には見えないことがある。そこで、DevOps環境では可視性が第一に検討すべき事項だと指摘したのはAndrew Davis(Copadoのリサーチ&イノベーション担当シニアディレクター)である。
可視性がなければ、日々の業務運用の改善は進みにくく、管理も難しくなる可能性がある。
DevOpsの可視性とは?
DevOpsの可視性とは何か、またその本当の意味を明らかにするには、ソフトウェア開発の要素と側面を組み合わせて考える必要があるとDavisは主張する。
「これらの[側面]は、適切なバージョン管理の仕組みやパイプライン管理ツールのように具体的なものから、透明性の高い組織文化のように大きなものまであり得ます」とDavisは述べた。「しかし、これらすべての要素が可視性に貢献しなければ、企業は品質を改善したりリリースを加速したりするために必要な情報を得られません」
DevOpsは広く導入され、多くのIT意思決定者がソフトウェア改善のために自社でDevOpsの実践を導入したと報告しているものの、全員が成功を報告しているわけではない。したがって、組織がDevOpsの問題に直面したら、まず可視性が欠けている箇所を確認すべきだ。
関連記事: DevOps:継続的インテグレーションと継続的デリバリー(CI/CD)を理解する
可視性を示す主要指標
Copadoは、DevOpsの可視性によって改善できる3つの主要指標を挙げている。
- 手作業のプロセスと介入への過度な依存:変更を手作業で追跡すると後で問題が生じ、わずかな変更を加えた際に記録し忘れることも非常に多い。手作業の方法では重要な情報がサイロ化され、チームごとに不完全または相反する情報を持つ可能性もある。こうしたことがすべて可視性を損なう。
- 不明確な目標:優れたDevOpsは反復的であり、循環型のフィードバックループを活用して、強固なユーザー体験という最終目標に近づいていく。しかし開発中、チームは大局を見失うことがあり、フィードバックの仕組みが不明確だと、正しい事柄の優先順位付けや最適な目標設定が難しくなる。
- 複雑なマージの問題:継続的インテグレーション(CI)は、変更をコードリポジトリに統合する時間のかかるプロセスへの解決策となるはずだった。しかしCIでさえ、複数の複雑なブランチを統合する際にボトルネックを生む可能性がある。パイプライン全体を可視化すれば、ブランチを簡素化するツールを使えるため、複雑なマージでも管理しやすくなる。
「この3つの領域が示すように、可視性への取り組みには協調した努力が必要であり、大掛かりすぎると思いたくなるかもしれません」とDavisは述べた。「しかし、仕事に必要なものがないと、人々は膨大な時間とエネルギーを浪費します。可視性の改善に費やす時間には、仕事を成し遂げるために必要な洞察をもたらすという価値があるのです」
DevOpsの可視性が役立つプロセス
プロジェクト計画
プロジェクトの可視性を確保する鍵は、状況認識からバージョン管理、計画ツール、トレーサビリティ、監査可能性、コンプライアンスに至るまで、あらゆる要素を含む適切な計画からプロジェクトを始めることだ。これにより、いつでも視野全体に焦点を合わせられるようになる。
「計画があれば、導入したDevOps施策で全員が何を目指しているのかをチームが正確に把握できます」とDavisは述べた。「必要なユースケースと計画された作業を把握していなければ、重複、ベンチマークの未達、ソリューションの重なり、スコープクリープなどに直面する可能性があります」
バリューストリーム管理
プロジェクトの流れを中心とするバリューストリームについて、企業はその理解と処理を重視すべきだ。チームは各プロジェクトのメリットとリスクを理解する必要がある。バリューストリームの可視性がなければ、作業の流れや、メリットとリスクがどこに現れるのかを把握できない。
システム変更
Copadoによると、システム変更は、バージョンの一貫性を確保し、システムアーキテクチャ内のメタデータ間の関係を明確で理解しやすいものにするために、可視性の恩恵を受けられる。
「可視性は、上書きやメタデータの競合、バグの頻繁な混入[または再発]を防ぐ助けにもなります」とDavisは述べた。
さらに、プロジェクトリーダーは、チーム、システム、パッケージ、コードベース内にまたがるソフトウェアサプライチェーンのあらゆるレベルで、依存関係とそのつながりを理解することで、システム変更が及ぼし得る影響を把握できる。
パフォーマンスの追跡
CopadoのDavisは、パフォーマンスは可視性の中でもおそらく最も重要な側面だとも述べている。ボトルネックの発生源や作業の分配、改善の機会を企業が特定するのに役立つためだ。
「パフォーマンスの追跡は、リードタイム、デプロイ頻度、変更失敗率、復旧時間というDevOpsの4つの主要指標に基づき、チームに焦点を当てて行えます」とDavisは述べた。「これらは、開発チームからのスループット評価と組み合わせることで、チーム全体がどのように連携しているか、また作業の処理能力がどの程度かを把握するための良い指標になります。
「あるいは、パフォーマンスの可視性を 個人に焦点を当てたものにすることもできます。個人に適用する細かな指標は魅力的に見えるかもしれませんが、行動の変化という点では、良い結果よりも悪影響をもたらす可能性があります」
理想的には、パフォーマンスの可視性はチームを基盤とする。そのうえで必要に応じて、企業は個人レベルの問題をさかのぼって追跡できる。
関連記事: NetOps対DevOps:ネットワークに自動化を導入する
DevOpsの可視性を実現する方法
可視性を支えるには、ソフトウェア開発ライフサイクル全体で透明性と再現性を高めるツールが企業に必要となる。
DevOpsのROI(投資利益率)を高めるための可視性に関するベストプラクティスはいくつかある。その中でも特に重要なのが、バージョン管理の導入だ。
バージョン管理は、コードの変更を追跡する自動化された方法である。更新内容は改変できないログに保存され、問題が発生した場合、開発者やステークホルダーはそれを参照して以前の状態に戻せる。これにより、コーダーが更新を管理する際に頼れる唯一の信頼できる情報源が構築される。
企業は、ユーザーストーリーとメタデータを結び付ける必要についても考えるべきだ。
「企業がバージョン管理の変更をユーザーストーリーに結び付けると、変更の誰が、何を、どこで、いつ、なぜを説明する物語が得られます」とDavisは述べた。「具体的には、正確な変更内容、変更日時、実施者、変更理由、ほかに変更されたものがあるかどうか、そして変更の目的が結び付きます。
「これにより、同じ対象に加えられた過去の変更の履歴が形成されます」
Davisはさらに、企業は「アーキテクチャを整理すべき」だと助言している。「ノイズの多い」メタデータによって、アーキテクチャの可視性が妨げられる可能性があるためだ。多くの場合、アーキテクチャの問題を発見する最も迅速な方法の1つは、単純にフォルダーとパッケージに整理することである。
DevOpsの可視性におけるバリューストリーム管理の重要性
DevOpsの可視性を管理したい企業は、バリューストリーム管理(VSM)を実現する必要がある。Copadoチームによると、バリューストリーム管理はマッピングから始まる。
このアプローチでは、DevOpsチームがワークフローを可視化し、ボトルネックがどこにあり、なぜ発生するのかを把握する。これにより、改善を行い、無駄を排除し、最も強力な価値の源泉に集中できる。
さらに、VSMプラットフォームを導入すれば、DevOpsチームはツール、アプリケーション、SaaS(サービスとしてのソフトウェア)ソリューション、その他のコンポーネント間のつながりや統合を1カ所で把握できる。
DevOpsチームが可視性を改善するもう1つの方法は、DORAメトリクスを活用することだ。DORAメトリクスでは、リードタイム、デプロイ頻度、変更失敗率、復旧時間を測定し、プロセス全体が他と比べてどうかを検証する。幅広い問いに適用して、結果を定量化できる。
バリューストリームマッピング、VSMプラットフォーム、DORAメトリクスを取り入れることでDevOpsの可視性が向上し、プロセス内で価値が滞留している場所が明らかになる。
「可視性があれば、チームとリーダーはいずれも、パイプラインのさらに先に注意を向けるために必要な情報を得られます」とDavisは述べた。「これにより品質が向上し、デプロイまでの速度が改善し、イノベーションが増加・加速し、最終的には強靭な開発プロセスを実現できるようになります」
DevOps導入に向けたステップ
DevOpsは、プロジェクトやチーム、あらゆる形態のソフトウェアエンティティに適用するだけで、何らかの改善をもたらせる万能薬のようなものだという見方が、かなり広く存在するようだ。
しかしDevOpsは、適切に管理するためにビジネスプロセスの可視性に依存する、複雑な実践の集合体である。企業は、プロジェクトや業務プロセスへの導入に向けて何らかのステップを踏む前に、この複雑さを認識しておくべきだ。
次に読む: DevOpsをスケールさせる:ベストプラクティス