API Composition
API Composition verbindet getrennte Datenquellen im Lesepfad.
- ComposerZerlegt die Anfrage und verbindet Antworten ohne Besitzübernahme.
- ZeitbudgetBegrenzt Fan-out und entscheidet über Abbruch oder Teilergebnis.
- AktualitätZeigt, zu welchem Zeitpunkt jedes kombinierte Feld gilt.
Einordnung
Warum das wichtig ist
Sie erhält Datenbesitz, macht aber Latenz und Teilfehler zu Eigenschaften jeder Abfrage.
Das Beispiel startet als interne Modulkomposition. Verteilte Aufrufe sind hypothetisch; aktuell bleiben sieben Module und eine gemeinsame Datenbank.
Abfragestrategien für die Auftragsansicht
Der aktuelle Shop besitzt sieben Module in einem modularen Monolithen und eine gemeinsame Datenbank. Der Kundenservice benötigt eine Auftragsansicht aus Bestellung, Zahlung und Versand. Ein interner Composer ruft die drei Modul-APIs parallel auf, begrenzt jede Teilanfrage und kennzeichnet einen fehlenden Versandstatus als vorübergehend unbekannt. Erst bei einer hypothetischen späteren Dienstaufteilung entstehen Netzwerkfehler; Messungen zu p95-Antwortzeit, Fan-out und Teilergebnissen entscheiden dann, ob eine materialisierte Lesesicht sinnvoller wird.
So liest du das Bild
- Composer Antwortfelder auf Besitzer abbilden
- Zeitbudget Teilaufrufe parallel mit Deadline
- Aktualität Feldweise Aktualität ausweisen
| Vergleich | Strategie | Stärke | Preis |
|---|---|---|---|
| API Composition | Quellen bleiben maßgeblich | Aktuelle Daten bei erfolgreichem Aufruf | Fan-out und Teilfehler je Anfrage |
| Materialisierte Lesesicht | Eine schnelle Abfrage | Explizit beobachtbare Projektion | Verzögerung, Aufbau und Korrektur |
| Clientkomposition | Client bestimmt Darstellung | Weniger Serverlogik | Viele Roundtrips und duplizierte Fehlerlogik |
Nutzen & Grenzen
Hilft, wenn
- Wenige Quellen und überschaubare Abfragen brauchen Daten zur Anfragezeit.
- Teilergebnisse lassen sich fachlich klar als unbekannt oder veraltet kennzeichnen.
- Eine Übergangslösung soll getrennten Datenbesitz erhalten, bevor eine Projektion gerechtfertigt ist.
Grenzen
- Die langsamste Quelle und Wiederholungen bestimmen die Gesamtantwort und können Last vervielfachen.
- Mehrstufige Joins und große Ergebnismengen machen Laufzeitkomposition teuer und unvorhersehbar.
- Der Composer darf keine zweite Quelle fachlicher Wahrheit oder versteckte Schreibschnittstelle werden.
In der Praxis
- Baue die Auftragsübersicht aus Bestellstatus und Versandstatus auf. Notiere pro Teilabfrage Eigentümer, Zeitbudget und Verhalten bei einem fehlenden Ergebnis.
- Verzögere den Versandaufruf und miss die Gesamtlatenz der zusammengesetzten Antwort. Prüfe, ob Teilresultate angezeigt werden dürfen oder die Ansicht geschlossen fehlschlägt.
- Vergleiche Laufzeitkomposition mit einem gepflegten Lesemodell für häufige Abfragen. Beziehe Aktualität, Betriebsabhängigkeiten und Änderungsaufwand in die Wahl ein.
Ausführliche Erklärung lesen
Ein Composer zerlegt eine Abfrage, ruft die Besitzer der benötigten Daten parallel oder abhängig voneinander auf und verbindet Antworten über stabile Schlüssel. Er besitzt die kombinierte Darstellung, während Fachregeln und Schreibzugriffe bei den Quellen bleiben.
Jeder Laufzeitaufruf verbraucht Antwortzeit und fügt einen Ausfallpfad hinzu. Der Antwortvertrag muss deshalb Deadline, fehlende Teilantworten, Caching und sichtbare Aktualität pro Feld festlegen.
CQRS kann eine vorbereitete Lesesicht liefern, wenn Fan-out oder Antwortzeit gegen Laufzeitkomposition sprechen. API-Verträge sichern Form und Bedeutung der Quellantworten.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Wer besitzt die kombinierten Fachdaten?
Lösung mit Begründung ansehen
Die Quellmodule; der Composer besitzt nur die Antwortdarstellung.
AnwendenAuf eine neue Lage übertragen
Wie behandelt die Auftragsansicht fehlenden Versandstatus?
Lösung mit Begründung ansehen
Sie liefert verfügbare Daten und kennzeichnet Versand innerhalb des Budgets als unbekannt.
BewertenEine Alternative abwägen
Wann spricht mehr für eine Lesesicht?
Lösung mit Begründung ansehen
Bei hohem Fan-out, strikter Antwortzeit oder wiederkehrenden komplexen Joins.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.