GraphQL verschiebt viele API-Entscheidungen vom Endpunkt in das Schema. Flexible Clients erzeugen neue Anforderungen an Typmodell, Berechtigungen, Abfragekosten, Caching und Beobachtbarkeit.
Der Kurs entwickelt einen Graphen von der einzelnen Anwendung bis zur föderierten Architektur. Jede Stufe enthält messbare Qualitätskriterien für Schemaentwicklung, Datenzugriff, Sicherheit, Echtzeitkommunikation und Betrieb.
Inhaltsübersicht
- Lernziele
- Schema-Design und API-Vertrag
- Resolver, Module und Datenzugriff
- Sicherheit und Abfragekontrolle
- Subscriptions und Echtzeitdaten
- Federation und verteilter Graph
- Praxisprojekt: Föderierter Produkt- und Bestellgraph
- Prüfpunkte und typische Fehler
Lernziele
- Code-first- und Schema-first-Ansätze anhand konkreter Projektbedingungen auswählen.
- Stabile Typen, Eingaben, Mutationen, Verbindungen und Fehlerverträge modellieren.
- Resolver modular strukturieren und Datenzugriff ohne N+1-Probleme implementieren.
- Authentifizierung, feld- und objektbezogene Autorisierung sowie Abfragebegrenzung umsetzen.
- Subscriptions mit Authentifizierung, Filterung, Lebenszyklus und Skalierung betreiben.
- Federation, Ownership, Entity-Auflösung, Verträge und verteilte Tests planen.
Schema-Design und API-Vertrag
Das Schema wird als langfristiger Vertrag behandelt. Fachliche Begriffe, Nullbarkeit, Identitäten und Mutationsgrenzen werden unabhängig von internen Tabellen modelliert.
- Typen nach fachlichen Ressourcen und Anwendungsfällen statt nach Tabellen modellieren.
- Nullbarkeit bewusst einsetzen und fehlend, unbekannt und nicht berechtigt unterscheiden.
- Input Types von Output Types trennen und Mutationen eindeutig benennen.
- Globale Objektidentitäten und stabile Cursor für Pagination definieren.
- Deprecation statt abruptem Entfernen von Feldern verwenden.
- Fehler als konsistenten Vertrag aus Transport-, Validierungs- und Fachfehlern gestalten.
Entscheidungskriterien und Hinweise
- Schemaänderungen werden auf Client-Kompatibilität geprüft.
- Nullbarkeit ist Teil des Vertrags und keine bloße Implementierungsbequemlichkeit.
Resolver, Module und Datenzugriff
Resolver bleiben dünne Adapter. Fachlogik liegt in Application Services; Datenzugriffe werden pro Request geplant und gebündelt.
- GraphQL-Modul konfigurieren und Kontext mit Identität sowie Loader-Registry bereitstellen.
- Object Types, Inputs, Queries und Mutations nach Fachmodulen organisieren.
- Resolver an Application Services anbinden.
- Batch Loader für relationale und servicebasierte Abhängigkeiten pro Request erzeugen.
- N+1-Szenario messen, Loader ergänzen und Zahl der Datenzugriffe erneut prüfen.
- Cursor-Pagination mit stabiler Sortierung und begrenzter Seitengröße implementieren.
- Resolver-Ausnahmen in einen einheitlichen Fehlervertrag übersetzen.
Entscheidungskriterien und Hinweise
- Loader sind requestgebunden und dürfen keine Daten zwischen Nutzern vermischen.
- Resolver erzeugen keine versteckten Kaskaden über mehrere Dienste.
Sicherheit und Abfragekontrolle
Sicherheitsentscheidungen müssen auf Operation, Feld, Objekt und Datenmenge bezogen werden. Netzwerkregeln am einzelnen HTTP-Endpunkt reichen nicht aus.
- Identität im GraphQL-Kontext bereitstellen und Guards für Queries, Mutationen und Resolver kombinieren.
- Objekt- und feldbezogene Policies für Mandant, Besitz und sensible Attribute einsetzen.
- Introspection und Entwicklungsoberflächen je Umgebung kontrollieren.
- Abfragetiefe, Komplexität, Aliase, Batch-Größe und Ausführungszeit begrenzen.
- Persistierte oder zugelassene Operationen für kontrollierte Clients bewerten.
- Fehlermeldungen und Logs von Variablen, Tokens und personenbezogenen Daten bereinigen.
- Rate Limiting anhand von Identität und Abfragekosten planen.
Entscheidungskriterien und Hinweise
- Top-Level-Autorisierung schützt nicht automatisch untergeordnete sensible Felder.
- Abfragekosten werden mit realen Resolvern und Datenzugriffen gemessen.
Subscriptions und Echtzeitdaten
Subscriptions verbinden langlebige Abonnements mit fachlichen Ereignissen. Authentifizierung, Reconnect, Filterung und Backpressure werden ausdrücklich definiert.
- Fachliche Ereignisse und abonnierbare Zustandsänderungen auswählen.
- Verbindungsaufbau authentifizieren und Token-Ablauf berücksichtigen.
- Topics und Payloads mandantenfähig und minimal gestalten.
- Berechtigungsprüfung bei jeder relevanten Auslieferung durchführen.
- Reconnect, verpasste Ereignisse und Wiederaufnahme semantisch definieren.
- Mehrere Instanzen über einen gemeinsamen Ereigniskanal synchronisieren.
- Last, langsame Clients und Verbindungsabbau automatisiert testen.
Entscheidungskriterien und Hinweise
- Subscriptions ersetzen keine persistente fachliche Historie.
- Verpasste Ereignisse benötigen Snapshot oder nachvollziehbare Nachlieferung.
Federation und verteilter Graph
Federation wird als Verantwortungsstruktur behandelt. Jeder Teilgraph besitzt klare Felder und Entitäten; Änderungen werden über Verträge und Kompatibilitätsprüfungen abgesichert.
- Domänengrenzen, Feld-Ownership und Entity-Schlüssel festlegen.
- Referenzauflösung ohne versteckte Kaskaden implementieren.
- Schema-Komposition und Breaking-Change-Prüfung in die Pipeline integrieren.
- Fehler, Timeouts und partielle Ergebnisse für abhängige Teilgraphen definieren.
- Tracing und Korrelationsdaten über Gateway und Teilgraphen weitergeben.
- Contract-, Kompositions- und End-to-End-Tests für den Gesamtgraphen aufbauen.
Entscheidungskriterien und Hinweise
- Teilgraphen folgen fachlichen Verantwortlichkeiten und nicht nur Teamstrukturen.
- Entity-Auflösung darf keine unkontrollierten Netzwerkfächer erzeugen.
Praxisprojekt: Föderierter Produkt- und Bestellgraph
Ein Produkt- und Bestellsystem wird zunächst als modularer Graph umgesetzt. Danach werden Produkt, Bestand und Bestellung in getrennte Teilgraphen überführt. Ein Client verwendet Queries, Mutationen und eine Status-Subscription.
Messungen zu Datenzugriffen, Abfragekomplexität und Fehlerpfaden begleiten die Umsetzung. Ein ausgefallener Teilgraph sowie ein inkompatibles Schema-Update werden gezielt simuliert.
- Fachliches Schema mit Typen, Inputs, Pagination und Fehlervertrag entwerfen.
- Modulare Resolver und Application Services implementieren.
- N+1-Abfrage nachweisen und durch requestgebundene Loader beseitigen.
- Policies, Komplexitätsgrenzen und kontrollierte Fehlerausgaben ergänzen.
- Statusänderungen als authentifizierte Subscription bereitstellen.
- Anwendung in Teilgraphen zerlegen und Entity-Auflösung implementieren.
- Kompositions-, Contract- und End-to-End-Tests ausführen.
- Timeout, Teilgraph-Ausfall und Schema-Inkompatibilität behandeln.
Prüfpunkte und typische Fehler
- Das Schema spiegelt keine internen Tabellen ungefiltert wider.
- Resolver enthalten keine umfangreiche Fachlogik und keine unkontrollierten Datenzugriffe.
- Berechtigungen werden auch unterhalb der Top-Level-Operation geprüft.
- Abfragekosten und Seitengrößen besitzen harte, getestete Grenzen.
- Subscriptions definieren Reconnect, Token-Ablauf und verpasste Ereignisse.
- Federation folgt fachlichen Verantwortlichkeiten und stabilen Verträgen.
Fachbereichsleitung und Trainerteam
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 3 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 1.797 zzgl. MwSt. Inhaus: € 5.100 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | NestJS- und TypeScript-Entwickler, API-Designer, Softwarearchitekten und Teams für datenintensive Web- oder Mobile-Anwendungen |
| Voraussetzungen: | Gute NestJS- und TypeScript-Kenntnisse, Erfahrung mit REST-APIs, Datenbanken und automatisierten Tests |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Fachvortrag, Live-Coding, Demonstrationen, praktische Übungen und strukturierte Auswertung am System |
| Seminararten: | Öffentlich, Webinar, Inhouse, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
