多くの場合、新しいプロジェクトを開始するときは、コードベースをどのように構築するかという点で最善と思われるものから始めます。1 つのことをうまく実行し、コードベースの他の部分から分離され、他の (類似の) プロジェクトで自分自身が再利用したり、他の人が利用できるようにオープン ソース化したりする可能性のある多数の小さなモジュールのアイデアが気に入っています。
しかし、私が実際に何かを本番環境に持ち込もうとしている危機的な週になると、これらのさまざまなモジュールをすべて管理する複雑さがオーバーヘッドを大きくしすぎることが何度かありました (適切なドキュメントとデプロイ方法にもかかわらず)。当時、私は単純に方針を変更し、すべてのモジュールを 1 つのリポジトリにバンドルして、すべてを 1 つのコードベースとして管理していました。つまり、さまざまなブランチを通じてすべてを一緒に追跡し、ステージング環境やテスト環境にデプロイすることができます。
これらのさまざまなアプローチの長所と短所は何ですか。また、いずれかの方法で作業を管理するにはどうすればよいですか?
1 つのモノリシック コードベースの利点:
- 展開が簡単
- ロールバックしやすい
- すべての変更をまとめて簡単に分岐/管理
- 文書化および管理する潜在的に複雑な依存関係がない (または少ない)
モジュール依存関係の利点:
- 再利用性
- クリーンなアーキテクチャ (1 つのモジュールが 1 つのことをうまく行う)