モノリポジトリとマルチリポジトリは、Git を通じてコードをホストおよび管理するための 2 つの主な戦略です。両方の戦略とその長所と短所について詳しく説明します。

導入
最新のプロジェクトのほとんどは Git 上で管理およびホストされています。 Git は、世界中のどこからでも分散ソース コード管理、バージョン管理、コラボレーションを行うための標準プラットフォームになりました。 Git は高速かつ効率的です。 Git コードをホストして管理するには、主に 2 つのアプローチがあります。
- モノリポジトリ
- マルチリポジトリ
これらのアプローチを掘り下げる前に、リポジトリがどのように機能するかを理解しましょう。

リポスとは何ですか?
リポジトリ (Repo) には、プロジェクトのすべてのフォルダーとファイルが含まれます。ユーザー、人物、コンピューターに関する情報も含まれます。
リポジトリ データはバージョン管理されています。リポジトリは、個人またはチーム メンバーのグループが所有できます。
Git はリポジトリです。パブリック、プライベート、または内部のいずれかにすることができます。 GitHub は Git リポジトリのホスティング サービスであり、ユーザー インターフェイスを備えています。
Git はバージョン管理機能とコード共有機能を提供しますが、Git が異なる点は、開発者がファイルに何らかの変更を加えたい場合に、リポジトリ全体をローカル システムにコピーできることです。したがって、開発者が特定のプロジェクトへの書き込みアクセス権を持っていない場合でも、コンテンツをローカルにコピーして変更することができます (フォークと呼ばれます)。
さらに、開発者がローカルで行われた変更を共有したい場合は、プロジェクトの所有者に「プル リクエスト」を送信できます。
プロジェクトには 1 つのサービスを含めることができます。プロジェクトに複数のワークフローがある場合は、ワークフローごとに複数のサービスを作成できます。ほとんどの開発者は、大きなプロジェクトを 1 つ以上の機能を持つ小さな独立したサービスに分割することを好みます。各サービスはビジネス上のさまざまな課題を解決できます。サーバーレス フレームワークの普及により、ユーザーはサービスとして機能にアクセスできるようになりました。
これらの Functions-as-Service を作成してデプロイしたら、次のステップはそれらを構造化してバージョン管理することです。すべてのサービスを 1 つのリポジトリ (モノリポジトリ) に含めることも、サービスごとに個別のリポジトリを作成することもできます (マルチリポジトリ)!

モノリポジトリとは何ですか?
モノリポジトリのアプローチでは、すべてのサービスを単一 (モノ) リポジトリに保持できます。各サービスを個別に展開して管理することもできます。サービスは共通のライブラリとコードを共有できます。
Facebook、Google、Dropbox などの企業はモノリポジトリを使用しています。
モノリポジトリの利点
モノリポジトリのアプローチには多くの利点があります。
- すべてのプロジェクト コードを 1 か所に保存し、チームの全員がアクセスできる
- コードの再利用と共有が簡単で、チームと共同作業できます。
- 変更がプロジェクト全体に与える影響を理解しやすい
- コードのリファクタリングとコードへの大幅な変更に最適なオプション
- チームメンバーはプロジェクト全体の全体像を把握できる
- 依存関係の管理が簡単
モノリポジトリの欠点
もちろん、モノリポジトリにはいくつかの欠点がありますが、主な欠点はパフォーマンスです。プロジェクトが成長し、さらに多くのファイルが 1 日おきに追加される場合、チェックアウト、プル、その他の操作が遅くなり、ファイルの検索に時間がかかることがあります。
また、プロジェクトに多数の独立請負業者を雇う場合、コード ベース全体へのアクセスを彼らに与えることは、それほど安全ではない可能性があります。
さらに、多くの人が変更をチェックインでき、継続的インテグレーション (CI) システムは複数回の再構築が必要になる場合があるため、継続的デプロイメント (CD) を実装することは困難です。
モノリポジトリを使用する大企業は、スケールアップの問題に対処するためにカスタマイズされたツールを備えています。たとえば、Facebook はカスタム ファイル システムとソース管理を使用しています。
マルチリポジトリとは何ですか?
マルチリポジトリのアプローチでは、プロジェクトの複数のライブラリとサービスをホストする複数のリポジトリが存在します。サービスが変更された場合、開発者はプロジェクト全体ではなく、そのサービスのみを再構築する必要があります。個人やチームは特定のサービスに取り組むことができ、必要なサービスのみにアクセスできます。
Netflix や Amazon などの企業はマルチリポジトリを使用しています。
マルチリポジトリの利点
マルチリポジトリを採用する企業の数は、モノリポジトリを採用する企業よりもはるかに多く、その理由は次のとおりです。
- 各サービスとライブラリには独自のバージョン管理があります
- コードのチェックアウトとプルは小さく個別に行われるため、プロジェクトのサイズが大きくなってもパフォーマンスの問題は発生しません。
- チームは独立して作業でき、コードベース全体にアクセスする必要はありません
- より迅速な開発と柔軟性
- 各サービスは個別にリリースでき、独自のデプロイ サイクルを持つため、CI と CD の実装が容易になります。
- アクセス制御の向上 – すべてのチームがすべてのライブラリに完全にアクセスできる必要はありませんが、必要に応じて読み取りアクセスを取得できます。
マルチリポジトリの欠点
- 最新バージョンを取得するには、サービスとプロジェクト間で使用される依存関係とライブラリを定期的に同期する必要があります
- ある時点でサイロ化された文化を助長し、コードの重複や個々のチームが同じ問題を解決しようとすることにつながります。
- 各チームがコードの異なるベスト プラクティスに従っている可能性があるため、共通のベスト プラクティスに従うことが困難になる場合があります。
モノ リポジトリとマルチ リポジトリの違い
モノリポジトリとマルチリポジトリの違いをもう一度まとめてみましょう。
モノリポジトリ | マルチリポジトリ |
組織のすべてのプロジェクトのすべてのコードは中央リポジトリに存在します。 | 各サービスとプロジェクトには個別のリポジトリがあります |
チームは協力して共同作業できます。彼らはお互いの変化を見ることができます | チームは自律的に作業できます。個々の変更は他のチームやプロジェクトによる変更には影響しません |
各人がプロジェクト構造全体にアクセスできる | 管理者は、開発者がアクセスする必要があるプロジェクトまたはサービスへのアクセス制御を制限できます |
プロジェクトのサイズが大きくなり続けると、スケールアップの問題が発生する可能性があります | コードが限られており、サービス単位が小さいため、優れたパフォーマンスが得られます。 |
継続的デプロイメント (CD) と継続的インテグレーション (CI) の実装が難しい | 開発者は独自にサービスを構築できるため、CDとCIを容易に実現できます。 |
開発者は、中央リポジトリで更新されるライブラリ、API、その他の共通コードを簡単に共有できます。 | 後で問題が発生しないように、ライブラリやその他の共通コードへの変更は定期的に同期する必要があります。 |
結論
モノリポジトリとマルチリポジトリはどちらも同様に人気があり、どちらが優れているかは、プロジェクトのサイズ、プロジェクトの要件、必要なバージョン管理とアクセス制御のレベルによって異なります。
モノリポジトリは一貫性を重視しますが、マルチリポジトリは分離に重点を置きます。モノリポジトリでは、チーム全体が 1 人のユーザーによって行われた変更を確認できますが、マルチリポジトリではチームごとに個別のリポジトリが作成され、チームは必要なサービスのみにアクセスできます。プロジェクトにモノリポジトリとマルチリポジトリを組み合わせて使用したい場合は、複数のプロジェクトとライブラリを管理するツールである meta を使用できます。
Git を学ぶための無料リソースにも興味があるかもしれません。
