大規模なシステムでは、次のことがはるかに簡単です。
機能とコードを共有します。ホイールの再発明は少し少なくなります。たとえば、データベースへのアクセスが必要なアプリケーションが10個ある場合、すべてのアプリケーションで接続文字列を 10回指定する必要があります。または、別のライブラリを作成して、再度10回参照する必要があります。
展開プロセスを含むワークフローを統合します。
システムの管理:一般に、管理するアプリケーションが少ないほど簡単です。
ユーザーエクスペリエンスを統一します。従業員が10の異なるアプリケーションを処理する必要がある場合、彼は簡単に失われる可能性があります。Aを実行するために実行するアプリケーションは何ですか?どのアプリケーションでオプションBを利用できますか?しかし、統一しないでください。Word、PowerPoint、Outlook、Publisher、Visio、Project、Grooveを単一の一体型アプリケーションとして評価する人はいません。
一方、小さなシステムの束では、次のことがわかります。
システムが不要になった場合は、システム全体を破棄できます。または、コードベースが時間の経過とともに使用できなくなった場合は、ゼロから始めます。もちろん、これが当てはまるのは、他のシステムがこのシステムに依存していない場合、またはインターフェースが十分に軽く、新しいバージョンで簡単に書き換えられる場合だけです。
あなたはできる新鮮な開発者のチームを形成し、短い時間で存在しないコードベースを理解するためにそれらから期待します。それが大規模なプロジェクトの一部である場合、大規模なコードベース全体が非常に専門的に行われ、十分にリファクタリングされない限り、より多くの時間が必要になる可能性があります(私はそのようなコードベースを私は見たことがありません)。
システム管理者は、アプリケーションを簡単に再配置できます。一方、大規模なシステムは、複数のサーバーで適切に拡張できるか、そうでない場合があります。
開発者は、コードベースを新しい標準に簡単に移行できます。大きなコードベースの移行は常に恐ろしいです。代わりに、小さなコードベースを処理する必要がある場合、次に別のコードベースを処理する必要がある場合などは、恐怖が少なくなります。
つまり、そのような比較は一般的な場合にのみ機能しますが、プールからではなく、会社の資産から判断する必要があります。どのように構成されていますか?小規模な開発者チームは多数ありますか、それとも少数の開発者チームがありますか?コーディングスタイルなどに関する厳格なガイドラインはありますか?
また、アプリケーション自体にも依存します。たとえば、すべてのMicrosoft Officeアプリケーションを1つのアプリとして出荷するのは不合理です。しかし、たとえば、描画用のアプリケーションと写真のレタッチ用のアプリケーションでAdobe Photoshopを分離すると、生産性も低下します。IMO、製品を統合または分離する決定は、純粋に技術的な決定ではなく、ビジネス上の決定でなければなりません。
最後に、元の質問の2番目のコメントにもお答えしたいと思います。
アプリ内でデータをリンクする方が、アプリ間でデータをリンクするよりも簡単だと思います
それは常に正しいとは限りません。たとえば.NETを扱う場合、WCFを介してさまざまなコンポーネントが交換される単一のアプリケーションを出荷することは珍しいことではありません。この場合、これはWCFを介して通信する一連の個別のアプリケーションに相当します。
もちろん、複数のアプリケーションを処理する必要がある場合は、それらが通信するための何らかの方法を確立する必要がありますが、単一のモノリシックアプリケーションがあるからといって、強制する必要はありません。しかし、本当に大きなモノリシックアプリケーションを作成できるでしょうか。