Close

ソフトウェアの無秩序な増加を抑える方法

ソフトウェアが無秩序に増加している 3 つの兆候と、その対応策

Andrew Boyagi の顔写真
Andrew Boyagi

シニア エバンジェリスト


モノリスは急速に消えつつあります。現在、世界中の数え切れないほどの企業が、ソフトウェア開発に疎結合アーキテクチャを採用しています。分散した自律型チームは、モノリシック アプリケーションをマイクロサービスなどのコンポーネントの集まりに分割しています。

なぜでしょうか? 疎結合アーキテクチャでは、ソフトウェアのパフォーマンスと耐障害性を簡単に拡張できると同時に、新しいアプリケーション機能の提供にまつわるリスクとリード タイムを削減できます。この恩恵を受けるのはソフトウェアだけではありません。疎結合アーキテクチャにより、チームは独立して動き、ユーザーに利益をもたらす変更を頻繁にリリースできます。疎結合アーキテクチャでソフトウェアを構築する自律型チームでは、幸福度、エンゲージメント、生産性のレベルが高くなっています。

しかし、新しい働き方には新しい課題が伴います。個々のコンポーネントが互いに独立して構築される、動的でスケーラブルな環境を構築すると、複雑さが増し、ソフトウェアのスプロール化という新しいタイプの課題が生まれます。

ロゴ: Compass。

Compass を無料で試す

開発者のエクスペリエンスを向上させ、すべてのサービスをカタログ化し、ソフトウェアの健全性を高めましょう。

イラスト: ブロック

ソフトウェアのスプロール化とは?


ソフトウェアのスプロール化とは、環境内のアプリケーションやソフトウェア コンポーネントの数が急速に増加および変化して、複雑さが増し、従来のソフトウェア管理方法が通用しなくなることです。このシナリオは一般的に、分散型ソフトウェア アーキテクチャで開発ペースが上がると発生します。

一体となったモノリシック アプリケーションで、複数のチームによって管理された数百ものマイクロサービスの内の 1 つでも最新になると、個別に何度も該当する新機能を本番環境にリリースしなければならなくなります。これをアプリケーション ポートフォリオに展開すると、複数の開発チーム全体で数千ものマイクロサービスを導入することになります。小規模なアプリケーション ポートフォリオであっても、従来の管理方法では長期的な成功につながりにくいのは当然のことです。今日の製品を支える数千ものマイクロサービスに対するアトラシアンのジャーニーで、ソフトウェアのスプロール化を管理することが、疎結合アーキテクチャと自立したチームの力を引き出す鍵であることが明らかになりました。

アイコン: コードを保存
関連資料

マイクロサービスとモノリシック アーキテクチャの比較

アイコン: 3 つの輪
ソリューションを見る

Compass による DevEx の向上

ソフトウェアの無秩序な増加は、最初は認識するのが難しいことがあります。最初はちょっとした煩わしさから始まり、より優先度の高いものによって脇に追いやられます。しかし、放置しておくと、ソフトウェアの無秩序な増加は開発チームの認知的負荷を高め、チームのやる気を低下させ、疎結合アーキテクチャに伴う利点を損なわせる可能性があります。格言で「木を植えるのに最適な時期は 20 年前だった。その次に良い時期は今である」と言われるように、将来の成功は、ソフトウェアの無秩序な増加が問題になる前に抑えることが前提です。

以下は、ソフトウェアのスプロール化の 3 つの兆候と、すべてのチームの潜在能力を引き出す革新的でダイナミックな環境を作りながら、混乱を克服するためにできることです。

インシデント後のレビューにより、上流での変更が根本原因であることを特定する


インシデントの根本原因として、上流での変更を示すソフトウェアのスプロール化の初期症状が、複数のインシデント後レビュー (PIR) にあります。マイクロサービスの数が増え、環境内の変更数が増加することによって、開発者のコラボレーションや変更の調整に関して、通常より負担がかかることがあります。最新化された 1 つのアプリケーションの変更頻度がわずかに月次から週次に増加したとしても、1 か月あたりのリリース数はその 100 倍にもなる可能性があります。開発者がコラボレーション方法を適応させる必要があるのは当然です。開発者がハイペースな環境でコラボレーション規範を拡張できない場合、インシデントが、本番環境で発生する可能性が高くなります。

開発者が上流と下流の変更を意識するための押し付けがましくない方法を作ることは、ソフトウェアのスプロール化の影響を抑制する優れた方法です。アトラシアンでは、チームが分散アーキテクチャをナビゲートするのに役立つ開発者ポータルである Compass を使用して、上流と下流のサービスに対する重大な変更について開発チームにアプリ内通知を送信しています。この通知を確認することで、依存サービスを担当するチームが変更を認識していることを、変更開始者に知らせることができます。これにより、何か問題が予想される場合には、その変更に協力する機会を提供し、本番環境での意図しない影響を与える可能性を低減します。インシデントはダイナミックな環境で必ず発生するため、サービスを迅速に復旧させるためには、インシデント発生時の開発者の協力が欠かせません。

上流の変更が根本原因であるインシデント後のレビューでは、問題のある上流の変更と、そのサービスを所有するチームや担当者の特定にかかる時間が、通常サービスの復旧時間に影響を与えます。論理的には、問題のある上流の変更の特定にかかる時間を短縮すれば、徐々に平均復元時間 (MTTR) は短縮されます。このことは、サービスが多くの依存関係階層を持ち、インシデントの根本原因がスタックのどこにでも存在する疎結合アーキテクチャでは、より困難なものになります。従来、インシデント担当者は、ログや変更記録をくまなく調べて、インシデントを引き起こした可能性のある変更を特定する必要がありました。ダイナミック環境において、これは自分を噛んだアリを見つけるためにアリの巣を取り壊すようなものです。

アトラシアンでは、Compass のアクティビティ フィードを使って、MTTR を短縮しています。上流システムのすべてのイベントと、それを所有するチームの詳細が表示されます。これにより、インシデント発生時の開発者のコラボレーションをサポートし、トリアージ時間を大幅に短縮できます。インシデントは発生するものですが、インシデントの根本原因である上流の変更をタイムリーに特定することは、影響を最小限に抑え、サービスを迅速に復旧させるために非常に重要です。

ソフトウェアのスプロール化

Compass のアクティビティ フィードには、上流システムのすべてのイベントが表示されるので、インシデント発生時のトリアージ時間を短縮できます。

チームのアウトプットは高いが、何も成し遂げられていない


疎結合アーキテクチャへの移行は、チームの生産性と幸福度のための重要な要素の 1 つであり、高いレベルの自律性を持って独立して動くことができるようになることです。ソフトウェアのスプロール化を放置しておくと、せっかくのメリットが台無しになり、忙しくても非生産的で不幸なチームになってしまいます。開発チームと話すと、「他のチームと関わる必要があるまでは、すべてうまくいっている」という苦情がよくあります。これは、ソフトウェアのスプロール化が問題になると、さらに増幅されます。急速に拡大し、変化する環境では、開発者は上流や下流の依存関係を把握することが難しくなり、最終的に開発ペースが低下し、ペースを維持しようとするチームのフラストレーションが蓄積されます。

仮に、アルファ チームとベータ チームが毎週同じ数の課題とストーリー ポイントを Jira の「完了」に移動したとします。アルファ チームは新機能の本番環境への出荷に 90% の労力を費やし、ベータ チームは 30% を新機能に、70% の労力を依存する多くの上流サービスとの連携に費やしています。どちらのチームも同じレベルの出力を持っていますが、生産性が高いと考えられるのはアルファ チームだけです。ソフトウェアのスプロール化は、チーム間のコラボレーションの必要性を増大させます。自立したチームがオンデマンドで活動するためのスマートな方法を特定することは、疎結合環境の力を引き出すための鍵となります。

急速に成長するダイナミックな環境では、情報をセルフサービスで提供することは、チームの生産性と幸福度にとって重要です。これを実現する 1 つの方法は、分散管理を使用して集中型ソフトウェア コンポーネント カタログを実装することです。これは、各チームが所有するサービスの作成と更新に責任を持つ集中型カタログです。従来の環境では、特定のチームや機能によって管理される一元化されたカタログが一般的でした。しかし、これでは分散環境の変化のスピードについていけず、誰がどのように関わるかについて、シャドー ウィキを作成するチームが出てくることになります。アトラシアンでは、分散型アプローチにより、チーム間の目に見えない無駄な労力を削減し、セルフサービス機能を向上させ、エンゲージ オンデマンド環境を実現することがわかりました。上流と下流の依存関係に関するセルフサービスの情報を有効にすることで、ソフトウェアのスプロール化を抑えることは、チームの幸福度とエンゲージメントに補完的な効果をもたらし、チームの生産性を向上させる優れた方法です。

スクリーンショット:Compass ユーザー・サービス

Compass は、開発者が所有し、依存しているソフトウェア コンポーネントに関する開発者固有の情報を一元的に提供します。

変更管理がボトルネックに


ソフトウェアのスプロール化のもう 1 つの重要な兆候は、変更管理やサイバーセキュリティなどのガバナンス機能が、本番システムに変更をもたらす際のボトルネックになりつつある場合です。これらの機能は、変更を本番環境に導入する前に、組織の基準と期待を満たすことを保証する極めて重要な役割を担っています。しかし、ソフトウェアのスプロール化が進むと、その効果は薄れてしまいます。ソフトウェアのスプロール化に悩む環境では、変更の割合が増えるにつれてガバナンス機能が徐々に圧迫され、変更やレビュー要求のバックログが発生し、本番環境への展開が遅れます。2022 DevOps 状況 レポートによると、調査回答者の 56% が、組織のソフトウェア セキュリティ プロセスが開発プロセスを遅くしていると感じていることがわかりました。

理想的には、セキュリティ対策は開発プロセスに組み込まれていますが、実際には多くの組織で、本番環境に導入する前に人間が変更点を確認しています。これは、分散型環境で要求される規模では有効ではありません。これは、組織の変更実施能力を低下させるだけでなく、開発チームと、組織の基準を満たすことを保証する責任者との間に摩擦を生じさせる可能性があります。

ソフトウェアのスプロール化に悩む環境では、望ましい組織標準を大規模に達成しながら、高速化を実現することが重要です。自動化または半自動されたスコアカードは、組織の標準を伝え、環境全体のコンプライアンスを検査するための邪魔にならない方法を提供する優れた方法です。アトラシアンでは、組織の品質基準と期待値を設定するために Compass を使用しています。各ソフトウェア コンポーネントのスコアカードは、コンプライアンスに関する組織の透明性を提供します。チームやエンジニアリング リーダーは、製品固有の基準をスコアカードに追加できます。これにより、組織の品質に対する期待やステータスを、組織内の誰もが完全に把握できるようになります。これは、デリバリー サイクルの最後に行われるガバナンスとコンプライアンスのチェックから、早い段階で期待値を設定し、チームが開発プロセスを通じてそれを満たせるようにすることへの大きな転換です。ガバナンス チームはダイナミックな環境で期待値を設定でき、デリバリー チームはデリバリー サイクル中に要件を理解して満たす機会を得ることができます。ソフトウェアのスプロール化の影響は、ソフトウェア デリバリー チームとガバナンス チームの両方にとって有害である可能性があるため、スコアカードはスプロールをマスターする機会を提供します。

データ セキュリティ画像

Compass スコアカードは、一連の定義された期待値に照らして、ソフトウェア コンポーネントの正常性を理解するために使用されます。

結論


ソフトウェアのスプロール化を抑制する特効薬はありません。しかし、長期的な成功は、ソフトウェアのスプロール化の影響を早期に特定し、対処することが前提となっています。ソフトウェアのスプロール化の初期の兆候には、上流または下流の変更に起因する複数のインシデント、目標に到達しない忙しいチーム、ガバナンスのボトルネックなどがあります。ソフトウェアのスプロール化を特定する最善の方法は、開発者に話を聞き、彼らが直面している課題を理解することです。

アトラシアンは Compass を開発し、分散型アーキテクチャの拡張に伴う複雑さを管理することで、ソフトウェアのスプロール化を抑制するのに役立ちました。Compass は拡張可能な開発者エクスペリエンス プラットフォームで、すべてのエンジニアリング成果とチーム コラボレーションに関する分断された情報を一元化された検索可能な場所にまとめます。

Compass の詳細

Andrew Boyagi
Andrew Boyagi

Andrew はアトラシアン DevOps エバンジェリズムのリーダーであり、エンタープライズ組織で 20 年以上のソフトウェア提供とサービス管理の経験があります。Andrew は、実際の経験に基づいて、チームや組織が DevOps のメリットを最大化する方法について実践的な考え方を提供しています。
アトラシアンに入社する前にエグゼクティブ マネージャーを務めていたオーストラリア コモンウェルス銀行では、7,000 人のエンジニアをサポートするプラットフォーム エンジニアリング部門を設立し、成熟させました。Andrew はサザン クロス大学で MBA を取得しています。


この記事を共有する

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

DevOps のイラスト

Compass コミュニティ

イラスト: 障害の克服

チュートリアル: コンポーネントを作成する

マップのイラスト

Compass を無料で始める

DevOps ニュースレター購読

Thank you for signing up