In einem größeren System ist es viel einfacher:
Teilen Sie Funktionen und Code. Sie werden das Rad etwas weniger neu erfinden. Wenn Sie beispielsweise zehn Anwendungen haben, die Zugriff auf die Datenbank haben müssen, müssen Sie die Verbindungszeichenfolge in allen angeben , dh zehnmal. Oder Sie müssen eine separate Bibliothek erstellen und zehnmal darauf verweisen.
Konsolidieren Sie Workflows , einschließlich des Bereitstellungsprozesses.
Verwalten des Systems: Weniger zu verwaltende Anwendungen sind im Allgemeinen einfacher .
Vereinheitlichen Sie die Benutzererfahrung . Wenn ein Mitarbeiter mit zehn verschiedenen Anwendungen arbeiten muss, kann er leicht verloren gehen: Welche Anwendung muss ausgeführt werden, um A auszuführen? In welcher Anwendung steht die Option B zur Verfügung? Aber nicht übervereinigen . Niemand wird Word, PowerPoint, Outlook, Publisher, Visio, Project und Groove als eine einzige monolithische Anwendung schätzen.
In einigen kleinen Systemen hingegen finden Sie Folgendes:
Sie können ein ganzes System verlassen, wenn Sie es nicht mehr benötigen. Oder fangen Sie von vorne an, wenn die Codebasis im Laufe der Zeit unbrauchbar wird. Dies gilt natürlich nur, wenn andere Systeme nicht auf dieses angewiesen sind oder wenn die Schnittstelle leicht genug ist, um in einer neuen Version einfach umgeschrieben zu werden.
Sie können ein Team aus neuen Entwicklern bilden und von ihnen erwarten, dass sie die vorhandene Codebasis in kürzerer Zeit verstehen . Wenn es Teil eines großen Projekts ist, werden sie wahrscheinlich mehr Zeit benötigen, es sei denn, die gesamte große Codebasis wird äußerst professionell erstellt und sehr gut überarbeitet (ich habe solche Codebasen in meinem Leben nicht gesehen).
Die Systemadministratoren können die Anwendungen einfacher verschieben . Das größere System hingegen lässt sich entweder auf mehreren Servern gut skalieren oder nicht.
Die Entwickler können die Codebasis einfacher auf neue Standards migrieren . Das Migrieren einer großen Codebasis macht immer Angst. Wenn Sie sich stattdessen mit einer kleinen Codebasis befassen müssen, dann mit einer anderen, dann mit einer anderen und so weiter, wird es weniger beängstigend.
Abgesehen davon funktionieren solche Vergleiche nur in allgemeinen Fällen, aber Ihre Entscheidung muss nicht aus Pools, sondern aus Ihrem Unternehmensvermögen getroffen werden. Wie ist es organisiert? Gibt es viele kleine oder einige große Entwicklerteams? Gibt es strenge Richtlinien für den Codierungsstil und ähnliche Dinge?
Dies hängt auch von der Anwendung selbst ab. Zum Beispiel wäre es absurd, alle Microsoft Office-Anwendungen als eine einzige App zu versenden. Es würde aber auch die Produktivität beeinträchtigen, beispielsweise Adobe Photoshop in einer Anwendung zum Zeichnen und eine andere zum Retuschieren von Fotos zu trennen. IMO, die Entscheidung, ein Produkt zu vereinheitlichen oder zu trennen, muss eine Geschäftsentscheidung sein, keine rein technische.
Abschließend möchte ich noch auf den zweiten Kommentar der ursprünglichen Frage antworten:
Ich gehe davon aus, dass das Verknüpfen von Daten innerhalb einer App weniger Aufwand erfordert als das Verknüpfen von Daten zwischen Apps
Es ist nicht immer wahr. Wenn Sie beispielsweise mit .NET arbeiten, ist es nicht ungewöhnlich, eine einzelne Anwendung zu versenden, bei der verschiedene Komponenten über WCF ausgetauscht werden. In diesem Fall ist dies vergleichbar mit einer Reihe separater Anwendungen, die über WCF kommunizieren.
Wenn Sie mit mehreren Anwendungen arbeiten müssen, müssen Sie natürlich eine Kommunikationsmöglichkeit für diese festlegen, während eine einzige monolithische Anwendung Sie nicht dazu zwingt. Aber könnten Sie wirklich eine große monolithische Anwendung schreiben?