Schichtenarchitektur

5 min 4 Abschnitte
Was du nach diesem Konzept kannst 3
  1. Du bist in der Lage, die Vor- und Nachteile einer Schichtenarchitektur zu differenzieren ,

    indem Aspekte wie verbesserte Wartbarkeit, Wiederverwendbarkeit und Austauschbarkeit von Modulen potenziellen Nachteilen wie einem Performance-Overhead durch mehrfache Datenübergaben systematisch gegenübergestellt werden.

  2. Du bist in der Lage, die Interaktion und Kommunikation innerhalb einer geschichteten Architektur zu veranschaulichen ,

    indem der vertikale Informationsfluss, bei dem untere Schichten den oberen Schichten definierte Dienste anbieten, sowie die logische horizontale Kommunikation anhand eines konkreten Beispiels dargestellt werden.

  3. Du bist in der Lage, das Konzept und die Notwendigkeit von geschichteten Architekturen zu erklären ,

    indem das Prinzip der Trennung von Zuständigkeiten (Separation of Concerns) und die Strukturierung komplexer Systeme in überschaubare, modulare Teilbereiche beschrieben werden.

Warum benötigen komplexe IT-Systeme eine Schichtenarchitektur?

Das Problem: Wachsende Komplexität ohne Struktur

Stell dir vor, du entwickelst eine umfangreiche Software, bei der die Benutzeroberfläche, die Berechnungen und das Speichern der Daten in einer einzigen, riesigen Datei wild miteinander vermischt sind. Ein solches System wird schnell zu einem unübersichtlichen Chaos. Wenn du nun eine kleine Änderung am Design der Benutzeroberfläche vornehmen möchtest, läufst du Gefahr, versehentlich die Logik der Datenspeicherung zu zerstören. Ohne eine klare Struktur werden IT-Systeme fehleranfällig, schwer zu testen und nahezu unmöglich im Team weiterzuentwickeln.

Die Lösung: Trennung der Zuständigkeiten

Um dieses Chaos zu verhindern, nutzt die IT die Schichtenarchitektur (Layered Architecture). Das Kernprinzip dahinter nennt sich Trennung der Zuständigkeiten (Separation of Concerns). Das Gesamtsystem wird in übereinanderliegende Schichten (Layers) aufgeteilt. Jede Schicht hat genau eine klar definierte Aufgabe und stellt bestimmte Dienste zur Verfügung, ohne dass die anderen Schichten wissen müssen, wie diese Dienste im Detail programmiert sind. Die Komplexität wird dadurch in überschaubare, modulare Teilbereiche gekapselt. Du kennst dieses Prinzip bereits aus dem TCP/IP-Modell: Die Transportschicht kümmert sich nur um die zuverlässige Zustellung, ohne sich um die physikalische Übertragung der Netzzugangsschicht kümmern zu müssen.

Schichtenarchitektur — dec-it-basics-patterns-layered-architecture_necessity.svg

Wie kommunizieren die Schichten miteinander?

Der vertikale Informationsfluss: Dienstanbieter und Dienstnutzer

Die Interaktion in einer Schichtenarchitektur folgt einer strengen Regel: Untere Schichten bieten Dienste an, obere Schichten nutzen diese Dienste. Eine Schicht ist also gleichzeitig Dienstnutzer (für die Schicht darunter) und Dienstanbieter (für die Schicht darüber). Die Kommunikation verläuft ausschließlich vertikal und schrittweise über fest definierte Schnittstellen (Interfaces). Das Überspringen von Schichten ist verboten. Die obere Schicht verlässt sich blind darauf, dass die untere Schicht ihre Aufgabe korrekt erfüllt. Wenn du in einer App auf "Speichern" klickst, nutzt die Benutzeroberfläche den Dienst der darunterliegenden Logikschicht, ohne zu wissen, wie eine Festplatte physisch funktioniert.

Die logische horizontale Kommunikation

Neben dem physischen, vertikalen Datenfluss gibt es das Konzept der logischen horizontalen Kommunikation. Obwohl die Daten auf einem Gerät physisch von Schicht zu Schicht nach unten wandern (Kapselung), über das Netzwerk übertragen und beim Empfänger wieder nach oben gereicht werden (Entkapselung), "spricht" eine Schicht logisch immer nur mit ihrer Partnerschicht auf der Gegenseite. Ein Webbrowser (Anwendungsschicht auf dem Client) kommuniziert logisch direkt mit dem Webserver (Anwendungsschicht auf dem Server), als gäbe es die darunterliegenden Schichten gar nicht.

Schichtenarchitektur — dec-it-basics-patterns-layered-architecture_communication.svg

Welche Vor- und Nachteile hat die Schichtenarchitektur?

Vorteile: Wartbarkeit und Austauschbarkeit

Der größte Vorteil ist die Austauschbarkeit der Komponenten und die verbesserte Wartbarkeit. Da die Schichten nur über feste Schnittstellen kommunizieren, kannst du die Implementierung einer Schicht komplett austauschen, ohne die anderen Schichten anfassen zu müssen. Szenario: Du möchtest in deiner Anwendung die Datenbank von MySQL auf PostgreSQL wechseln. Da die Datenbankzugriffe in einer eigenen Datenzugriffsschicht gekapselt sind, musst du nur diese eine Schicht anpassen. Die Benutzeroberfläche und die Geschäftslogik bleiben völlig unverändert. Zudem sorgt die Abstraktion der Komplexität dafür, dass Entwickler:innen sich nur auf ihren spezifischen Bereich konzentrieren müssen, was die Wiederverwendbarkeit von Modulen stark erhöht.

Nachteile: Performance-Overhead und Querschnittsfunktionen

Trotz der guten Struktur gibt es auch Nachteile. Der strikte vertikale Weg führt zu einer verringerten Effizienz (Performance-Overhead). Szenario: Wenn eine einfache Textdatei ausgelesen werden soll, muss die Anfrage durch alle Schichten nach unten und die Antwort durch alle Schichten wieder nach oben gereicht werden. Diese mehrfachen Datenübergaben kosten Rechenzeit. Ein weiteres Problem sind Querschnittsfunktionen (Cross-Cutting Concerns) wie IT-Sicherheit oder Logging (Protokollierung). Diese Mechanismen lassen sich oft nicht klar einer einzigen Schicht zuweisen, da beispielsweise jede Schicht Fehler protokollieren oder Zugriffe absichern muss.

Schichtenarchitektur — dec-it-basics-patterns-layered-architecture_advantages.svg

Wie sieht der Kommunikationsfluss in der Praxis aus?

Die 3-Schichten-Architektur einer Pizza-App

Um die Theorie greifbar zu machen, betrachten wir eine klassische 3-Schichten-Architektur (3-Tier-Architecture) am Beispiel einer App für Pizzabestellungen:

  1. Präsentationsschicht (Presentation Layer): Das ist die Benutzeroberfläche (App oder Website). Hier wählst du die Pizza aus und klickst auf "Bestellen".
  2. Geschäftslogikschicht (Business Logic Layer): Das "Gehirn" der Anwendung. Hier wird geprüft, ob die Pizza verfügbar ist, Rabattcodes gültig sind und die Zahlung autorisiert wird.
  3. Datenzugriffsschicht (Data Access Layer): Diese Schicht kommuniziert mit der Datenbank. Sie speichert die fertige Bestellung ab und liest die aktuellen Preise aus.

Der Weg der Bestellung durch die Schichten

Der Kommunikationsfluss bei einer Bestellung läuft strikt vertikal ab: Du tippst in der Präsentationsschicht auf "Kaufen". Diese Schicht weiß nicht, wie man rechnet, also ruft sie einen Dienst der Geschäftslogikschicht auf und übergibt den Warenkorb. Die Geschäftslogik berechnet den Endpreis und prüft die Daten. Um die Bestellung dauerhaft zu sichern, nutzt die Geschäftslogik nun einen Dienst der Datenzugriffsschicht. Diese übersetzt den Speicherbefehl in die Sprache der Datenbank (z. B. SQL) und führt ihn aus. Die Erfolgsmeldung wandert anschließend den exakt gleichen Weg wieder nach oben, bis die Präsentationsschicht dir ein grünes Häkchen anzeigt.

Schichtenarchitektur — dec-it-basics-patterns-layered-architecture_pizza.svg

Teste dein Wissen

Du änderst in einem alten Projekt das Design eines Buttons. Plötzlich schlägt die Datenspeicherung fehl. Welches Architekturprinzip wurde hier missachtet?

Bereit für mehr?

Thema verstanden?

Teste dein Wissen interaktiv in unserer App. 7 Tage kostenlos, dann nur 5 € im Monat.