Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Architekturstile: Schichten, Dienste, Ereignisse

Nach dieser Lektion: Ich kann aus den Bedürfnissen eines Systems einen Architekturstil wählen.

Lektion, 60 Min.8 BefehlePostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Ein Architekturstil ist ein bewährter Bauplan

Ein Architekturstil ist ein bewährtes Muster dafür, wie die großen Teile eines Systems angeordnet sind und miteinander sprechen. Drei sind besonders verbreitet: Schichten, Dienste und Ereignisse.

Welcher passt, hängt von den Anforderungen ab. Heute lernen Sie, ihn aus den Bedürfnissen zu wählen.

Am Ende dieser Lektion

Notiz

Ich kann aus den Bedürfnissen eines Systems einen Architekturstil wählen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Architekturdie Anordnung der großen Teile eines Systems
SchichtenarchitekturTeile liegen übereinander, jede nutzt nur die darunter
Dienstein eigenes kleines Programm mit einer AufgabeDer Dienst Konten
Ereigniseine Meldung, dass etwas geschehen ist
Skalierungein System für mehr Last ausbauen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Schichten: jede Ebene nutzt nur die darunter

In einer Schichtenarchitektur liegen die Teile übereinander. Oben steht, was Nutzende sehen, in der Mitte die Regeln, unten die Daten.

Das ist einfach zu verstehen und passt zu einem Team. Es wird eng, wenn viele Teams gleichzeitig am selben Block arbeiten.

Dienste: kleine Programme mit je einer Aufgabe

In einer Dienstarchitektur ist jede Aufgabe ein eigenes kleines Programm: Konten, Ausleihe, Mahnungen. Die Dienste sprechen über Schnittstellen.

Jedes Team kann seinen Dienst allein ändern und ausbauen. Dafür kostet der Betrieb mehr, weil viele Teile laufen und sich finden müssen.

Ereignisse: melden, ohne zu wissen, wer zuhört

In einer ereignisgesteuerten Architektur meldet ein Teil: Es ist etwas geschehen. Andere Teile, die zuhören, reagieren darauf.

Der Sender kennt die Empfänger nicht. Neue Empfänger lassen sich ergänzen, ohne ihn zu ändern. Das macht die Kopplung sehr lose.

Im Lab: Schichten und ein Ereignis

Das Lab selbst ist geschichtet: Das Terminal fragt die API, die API fragt die Datenbank.

Danach senden Sie mit notify ein Ereignis. Niemand hört zu, und es geschieht kein Fehler. So lose sind Sender und Empfänger gekoppelt.

psql das Passwort geben

Befehl
export PGPASSWORD=shop

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Von vorn beginnen

Befehl
psql -h db -U shop -c "drop table if exists geraete"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tabelle geraete anlegen

Befehl
psql -h db -U shop -c "create table geraete (id serial primary key, name text not null unique, art text not null)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Gerät eintragen

Befehl
psql -h db -U shop -c "insert into geraete (name, art) values ('Notebook 1', 'Notebook')"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der API sagen, dass sie neu schaut

Befehl
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die unterste Schicht fragen

Befehl
psql -h db -U shop -At -c "select name from geraete"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Dieselben Daten über die Schicht darüber

Befehl
curl -s -w "\n" "http://api:3000/geraete?select=name"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Ereignis senden

Befehl
psql -h db -U shop -c "notify ausleihe, 'neues Notebook'"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: wann welcher Stil passt

StilPasst gut beiKostet
SchichtenEinem Team und einem kleinen SystemWenig
DiensteMehreren Teams und getrenntem AusbauMehr Betrieb
EreignisseVielen Empfängern und späteren ErweiterungenSchwerer nachzuverfolgen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, der modernste Stil sei immer der beste. Dienste und Ereignisse lösen Probleme, die ein kleines System nicht hat. Wählen Sie den einfachsten Stil, der Ihre Bedürfnisse erfüllt, und wechseln Sie erst, wenn ein Bedürfnis ihn sprengt.

Über dieses Lab und seinen Quellcode: PostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.