Client-Server-Architekturen
Mit der Einführung einer Client-Server-Architektur werden die beteiligten Systeme aufgebrochen, so dass Services entstehen. Eine Anwendung ist in dieser Architektur üblicherweise zweigeteilt: Vielen identischen Clients steht normalerweise ein Server gegenüber (Siehe Bild "Client-Server-Architektur"). Zwischen dem Clients und dem Server lassen sich Load Balancer zwischenschalten, die Anfragen dorthin leiten, wo die Last am geringsten und eine Antwort daher schnell zu erwarten ist.
Die Vorteile der Client-Server-Architektur sind, dass man die Systeme im Vergleich zu Peer-to-Peer-Lösungen besser skalieren kann. Wird die Last auf den Server durch eine steigende Zahl von Anwendern größer, lassen sich einfach neue Server hinzufügen, ohne die Architektur ändern zu müssen. Unumgänglich sind solche Architekturen natürlich immer dann, wenn man monolithische Fat Clients durch schlanke Rich Clients ersetzen möchte. Mit dieser Architektur lassen sich zudem die Anzahl der Abhängigkeiten reduzieren.
Auch hier stehen den Vorteilen der vergleichsweise einfachen Architektur einige Nachteile gegenüber. Zu nennen wäre etwa der Grad der Wiederverwendung. Dadurch, dass der Server in der Regel speziell für "seine" Client-Landschaft entwickelt wurde, können seine Funktionen meist nicht wiederverwendet werden. Ein weiterer Nachteil sind die aufwendigen Adapter zu nennen, die für die Integration mit weiteren Systemen geschrieben werden müssen. Da das Programmiermodell für solche Adapter nicht durch Standards genormt ist, besteht die Gefahr von sehr speziellen Individualentwicklungen. Zudem ist auch hier oftmals nicht klar, wie viele Abhängigkeiten zu Nachbarsystemen bestehen.