monorepo と複数のリポジトリを調べる

完了

リポジトリは、作業履歴 (通常は git サブディレクトリ) が格納される場所です。

コード リポジトリを整理する方法 開発チームは、ソフトウェアとリポジトリの懸念事項を分離することを目指しています。 時間が経つにつれて、コード リポジトリが無関係なコードやアーティファクトで乱雑になることは珍しくありません。

リポジトリの整理には、1 つのリポジトリ (Monorepo) または複数のリポジトリの使用という 2 つの主要な哲学があります。

  • Monorepos は、すべてのソース コードが 1 つのリポジトリに保持されるソース管理パターンです。 すべての従業員が一度にすべてのことにアクセスできるようにするのは簡単です。 複製すると、完了です。
  • プロジェクトを個別のリポジトリに整理することは、複数のリポジトリと呼ばれます。

mono リポジトリと複数のリポジトリの哲学の基本的な違いは、チームが最も効率的に連携できることです。 極端なシナリオでは、複数のリポジトリ ビューは、各サブチームがそのリポジトリで動作できることを示しています。 これにより、生産性を最適化するライブラリ、ツール、開発ワークフローを使用して、それぞれの領域で作業できます。

特定のリポジトリ内で開発されていないものを消費するコストは、近くに座っている人によって書かれた場合でも、サードパーティのライブラリまたはサービスを使用することと同じです。

ライブラリのバグに遭遇した場合は、対応するリポジトリで対処する必要があります。 新しい成果物を発行したら、リポジトリに戻り、必要なコードを変更できます。 ただし、バグが別のコード ベースにある場合、または異なるライブラリ、ツール、またはワークフローが含まれている場合は、そのシステムの所有者に支援を求め、応答を待つ必要があります。

Mono リポジトリ ビューを使用する場合、複雑な依存関係グラフを管理すると、1 つのリポジトリを使用する難易度が高くなる可能性があります。 異なるチームが独立して作業できるようにする利点は大きくありません。 一部のチームは効率的な作業方法を見つける場合がありますが、これはすべてのグループに当てはまるとは言えない場合があります。 さらに、他のチームは最適ではないアプローチを選択し、他のチームが得た利点を否定することができます。 Mono リポジトリにすべての作業を統合すると、この単一のリポジトリを厳密に監視することに集中できます。

他のリポジトリで変更を加えたり、チームが変更を行うのを待ったりする手間は、誰でも何かを変更できる mono リポジトリでは避けられます。

ライブラリ内のバグを検出した場合は、独自のコードでバグを見つけるのと同じくらい簡単に修正できます。

手記

Azure DevOps では、プロジェクト内の関連付けられているソリューションごとに個別のリポジトリを使用するのが一般的です。