Client–Server-Modell
Architekturmuster, das Systeme in Clients (Anforderer) und Server (Dienstleister) trennt, mit klaren Zuständigkeiten für Präsentation, Verarbeitung und Speicherung.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Überlastung zentraler Dienste bei Traffic-Spitzen.
- Tight coupling durch unsaubere API-Designs.
- Sicherheitslücken am Server haben breite Auswirkungen.
- API-Versionierung und rückwärtskompatible Änderungen sicherstellen.
- Serverseitige Validierung und Autorisierung zentral implementieren.
- Caching und CDNs zur Entlastung des Servers nutzen.
I/O & Ressourcen
- Anforderungsprofil und Nutzungsstatistiken
- Spezifikation der API-Endpunkte
- Skalierungs- und SLA-Anforderungen
- Definierte Client‑Server-Schnittstellen
- Betriebsreife Serverkomponenten
- Monitoring- und Alerting-Metriken
Beschreibung
Das Client–Server-Modell trennt vernetzte Anwendungen in Dienstanbieter (Server) und Anforderer (Clients) und definiert Rollen für Verarbeitung, Speicherung und Darstellung. Es bildet die Grundlage vieler Internet- und Unternehmensanwendungen, erlaubt zentrale Ressourcenverwaltung und unabhängige Weiterentwicklung der Clients. Es beeinflusst Entscheidungen zu Skalierung, Ausfallsicherheit und Protokollwahl.
✔Vorteile
- Einfache Verantwortungszuweisung zwischen Komponenten.
- Ermöglicht zentrale Skalierung und Sicherheit.
- Clients können schlank gehalten und unabhängig weiterentwickelt werden.
✖Limitationen
- Single Point of Failure bei zentralen Servern ohne Redundanz.
- Skalierung kann komplex und kostspielig werden (Datenbank, Serverstate).
- Netzwerk-Latenz beeinflusst wahrgenommene Performance der Clients.
Trade-offs
Metriken
- Antwortlatenz (p95)
Messung der 95. Perzentil-Latenz für Serverantworten an Clients.
- Fehlerrate (HTTP 5xx)
Anteil von Serverfehlern, die Clients beeinträchtigen.
- Durchsatz (Requests pro Sekunde)
Anzahl verarbeiteter Anfragen pro Zeiteinheit.
Beispiele & Implementierungen
Typische Web-Architektur (Browser ↔ API-Server)
Browser-Clients verwenden HTTP-APIs eines zentralen Servers, der Datenbank und Geschäftslogik hostet.
E-Mail-System (Mail-Client ↔ Mail-Server)
E-Mail-Clients kommunizieren mit Mail-Servern (IMAP/SMTP) zur Nachrichtenverwaltung und Zustellung.
Datenanalyse-Tool mit zentraler Verarbeitungsinstanz
Leichte Analyse-Clients senden Aufgaben an einen leistungsfähigen Server, der Aggregation und Speicherung übernimmt.
Implementierungsschritte
Architekturziele und Anforderungen erfassen.
Schnittstellendesign (API) und Versionierungsstrategie definieren.
Serverkomponenten implementieren, testen und deployen.
Monitoring, Logging und Ausfallsicherheitsmechanismen einführen.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Enge Kopplung zwischen Servermodulen ohne Abstraktion.
- Unzureichend versionierte APIs, die Refactoring blockieren.
- Monolithische Datenbankstruktur ohne Migrationsstrategie.
Bekannte Engpässe
Beispiele für Missbrauch
- Alle Verarbeitung strikt auf einen einzigen Server legen ohne Redundanz.
- Clients direkte DB-Zugriffe erlauben statt über APIs zu gehen.
- Fehlende Ratenbegrenzung, die zu DoS-ähnlichem Verhalten führt.
Typische Fallen
- Unterschätzung von Latenz- und Netzwerkfehlern in der Client-Logik.
- Ignorieren von Konsistenzanforderungen bei verteilten Daten.
- Übermäßiger Serverzustand, der horizontale Skalierung verhindert.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Protokollbegrenzungen (z. B. HTTP-Overhead)
- • Vorhandene Legacy-Clients mit festen Schnittstellen
- • Regulatorische Anforderungen an zentrale Datenhaltung