Schichtenarchitektur
Die Notwendigkeit von Struktur: Warum Schichtenarchitektur?
Ein Haus bauen: Struktur ist unverzichtbar
Stell dir vor, du baust ein Haus ohne klaren Plan, während Elektriker:innen, Installateur:innen und Tischler:innen gleichzeitig ohne Absprache arbeiten. Das Ergebnis wäre chaotisch und ineffizient, was zu Fehlern, Verzögerungen und einer potenziell instabilen Struktur führen würde.
Software: Ohne klare Struktur entstehen chaotische Systeme
Die Softwareentwicklung ist mit ähnlichen Komplexitäten konfrontiert. Je größer und komplizierter die Systeme werden, desto entscheidender wird es, ihre verschiedenen Komponenten und deren Interaktionen effizient zu verwalten. An diesem Punkt kommt die Schichtenarchitektur ins Spiel, die eine klare Strukturierung und Trennung der Verantwortlichkeiten ermöglicht, was letztlich zur Stabilität und Wartbarkeit des gesamten Systems beiträgt. Ohne diese Struktur würden Entwicklungsprozesse ineffizient, fehleranfällig und schwer wartbar werden.
Schichtenarchitektur: Komplexität durch Struktur beherrschen
Ähnlich wie beim schrittweisen Bau eines Hauses wird auch in der Softwareentwicklung die Architektur in verschiedene Schichten unterteilt, wobei jede Schicht eine spezifische Verantwortung übernimmt. Diese klare Trennung der Aufgabenbereiche vereinfacht nicht nur die Entwicklung, sondern auch die Wartung und Weiterentwicklung des Systems. Durch diese Aufteilung entsteht ein robusteres und besser verwaltbares System, das den wachsenden Anforderungen gerecht wird und gleichzeitig die Komplexität handhabbar macht.
Was sind Schichten?
Schichten: Die Bausteine eines Systems
Jede Schicht stellt eine bestimmte Abstraktionsebene innerhalb des Systems dar. Niedrigere Schichten stellen den darüber liegenden Schichten Dienste zur Verfügung, wobei sie die Komplexität abstrahieren und es den höheren Schichten ermöglichen, ihre Aufgaben zu erledigen.
Kommunikation: Eine vertikale Hierarchie
Die Kommunikation zwischen den Schichten folgt einer strikten vertikalen Hierarchie. Eine Schicht kann nur mit der unmittelbar darunter liegenden Schicht interagieren und Dienstleistungen über klar definierte Schnittstellen anfordern. Diese klar definierte Kommunikation sorgt dafür, dass Änderungen in einer Schicht kontrolliert und mit minimalen Auswirkungen auf andere Schichten umgesetzt werden können.
Welche Vor- und Nachteile bietet die Schichtenarchitektur?
Vorteile
Modularität: Schichten können unabhängig entwickelt und getestet werden, was die Wiederverwendbarkeit des Codes und schnellere Entwicklungszyklen fördert.
Wartbarkeit: Änderungen innerhalb einer Schicht haben minimale Auswirkungen auf andere, was die Wartung vereinfacht und das Risiko neuer Fehler reduziert.
Skalierbarkeit: Neue Schichten können hinzugefügt oder bestehende geändert werden, ohne dass sich dies auf das gesamte System auswirkt, was eine leichtere Anpassung an veränderte Anforderungen ermöglicht.
Nachteile
Performance-Overhead: Der schichtweise Aufbau kann aufgrund der Kommunikation zwischen den Schichten zu einem gewissen Leistungsmehraufwand führen.
Komplexität der bereichsübergreifenden Funktionen: Die Implementierung von Funktionen, die mehrere Schichten betreffen (z. B. Sicherheit, Logging), kann herausfordernd sein.
Beispiel: Online eine Pizza bestellen
Ein schichtweiser Ansatz für die Pizzalieferung
Stell dir vor, du bestellst online eine Pizza:
Die Präsentationsschicht stellt die Website oder App dar, die du zur Bestellung verwendest. Die Geschäftslogikschicht verarbeitet deine Bestellung, überprüft die Zahlung und sendet sie an die Küche. Die Datenzugriffsschicht interagiert mit der Datenbank, um Menüpunkte abzurufen, Bestelldetails zu speichern und Kundeninformationen zu verwalten.
Kommunikationsfluss: Von der Bestellung bis zur Lieferung
Zuerst gibst du eine Bestellung über die Präsentationsschicht auf. Dann validiert die Geschäftslogikschicht deine Bestellung und verarbeitet die Zahlung. Anschließend speichert die Datenzugriffsschicht deine Bestelldetails und ruft die notwendigen Informationen für die Küche ab. Zum Schluss erhält die Küche die Bestellung, bereitet deine Pizza zu und sendet sie zur Lieferung.
Lernziele
- die Nachteile einer geschichteten Architektur erklären, wobei die Hauptnachteile (d.h. verringerte Effizienz, nicht klar zuweisbare Mechanismen über Schichten hinweg) anhand konkreter Szenarien klar beschrieben werden müssen.
- die Vorteile einer geschichteten Architektur erklären, wobei die Hauptvorteile (d.h. Austauschbarkeit der Komponenten, die Schichtdienste realisieren, Abstraktion der Komplexität) anhand konkreter Szenarien klar beschrieben werden müssen.
- die Kommunikation in einer geschichteten Architektur veranschaulichen, wobei die Kommunikationsflüsse korrekt erklärt werden müssen.
- wie die Schichten vertikal miteinander interagieren abzurufen, wobei die Interaktionsmechanismen (d.h. untere Schichten bieten oberen Schichten Dienste an, obere Schichten nutzen Dienste der unteren Schichten) korrekt beschrieben werden müssen.
- die Notwendigkeit von geschichteten Architekturen erklären, wobei die Hauptgründe und -merkmale (d.h. „Trennung der Zuständigkeiten“ durch Definition von Diensten, aber nicht deren Implementierung für verschiedene Schichten) klar erläutert und durch Fallbeispiele belegt werden müssen.