Du gibst die eine verteilte Transaktion auf und nutzt eine Saga: eine Folge lokaler Transaktionen, bei der jeder Schritt ein Event publisht, das den nächsten auslöst, und jeder Schritt eine kompensierende Aktion zum Rückgängigmachen hat. Konsistenz wird eventual, die Designarbeit besteht also darin zu entscheiden, was kompensiert, was wiederholt und was an einen Menschen eskaliert wird. Modelliere den Ablauf explizit, entweder choreografiert über Events oder koordiniert von einem Orchestrator.
Warum Interviewer das fragen
Der Interviewer testet, ob du zu Two-Phase-Commit greifst oder verstehst, warum das über Services hinweg fast niemand betreibt. Er will kompensierende Aktionen hören, Idempotenz, den semantischen Unterschied zwischen Rollback und Rückerstattung, und wie du den State Machine sichtbar hältst. Es prüft auch, ob du die Servicegrenzen überhaupt hinterfragen würdest, denn manche dieser Schritte gehören vielleicht zusammen.
So baust du deine Antwort auf
- Erklär, warum eine verteilte Transaktion nicht die Antwort ist.
- Definier die Saga: lokale Transaktionen plus Kompensationen.
- Stell Choreografie und Orchestrierung gegenüber und entscheide dich.
- Geh auf die unschönen Teile ein: Teilausfälle, Retries, Eskalation an Menschen.
Beispielantwort
Ein Two-Phase-Commit über drei Services und drei Datenbanken heißt, Locks über das Netzwerk zu halten, plus ein Koordinator, der beim Ausfall alles blockieren kann, das würde ich also nicht machen. Stattdessen wird der Ablauf eine Saga. Jeder Service macht seine eigene lokale Transaktion und emittiert ein Event, und jeder Schritt hat eine definierte Kompensation: kann Shipping nicht allozieren, geben wir die Inventory-Reservierung frei und erstatten oder stornieren die Zahlung. Wichtig ist, dass Kompensation eine fachliche Aktion ist und kein Rollback; eine Rückerstattung hinterlässt eine sichtbare Spur, und das ist korrekt so. Bei allem mit mehr als etwa drei Schritten nehme ich einen Orchestrator statt reiner Choreografie, denn bei Choreografie steht der tatsächliche Ablauf nirgendwo, und niemand kann beantworten, wo eine Bestellung hängt. Ein Orchestrator gibt mir eine State Machine, Timeouts pro Schritt und einen abfragbaren Status. Jeder Schritt ist idempotent und wird mit Backoff wiederholt, und alles, was die Retries aufbraucht, landet mit der Bestell-id in einer Operations-Queue, denn manche Fehler brauchen wirklich einen Menschen.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Was machst du, wenn die kompensierende Aktion selbst fehlschlägt?
- Wie würdest du einem Kunden den Status einer laufenden Bestellung zeigen?
- Wann würdest du zwei Services zusammenlegen, statt eine Saga zwischen ihnen zu fahren?
Weitere Fragen für Backend-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen