Verteilte Locks: Arbeit über mehrere Knoten koordinieren

Horizontale Skalierung löst Durchsatzprobleme, führt aber zu einer neuen Klasse von Bugs: zwei Instanzen desselben Services führen gleichzeitig dieselbe Arbeit aus. Eine doppelte E-Mail zu versenden, einen Kunden doppelt zu belasten oder einen gemeinsamen Zustand zu korrumpieren — das sind Race Conditions auf Infrastrukturebene, und ein einzelnes SELECT ... FOR UPDATE in der Datenbank rettet dich nicht, wenn der konkurrierende Prozess auf einer anderen Maschine läuft.

Verteilte Locks sind das Werkzeug dafür. Sie sind auch eine der am häufigsten missbrauchten Primitiven im Backend-Engineering. Die Ausfallmodi sind subtil, die Literatur voller Kontroversen (siehe die Redlock-Debatte), und die meisten Tutorials hören auf, bevor sie die Teile abdecken, die in der Produktion wirklich wichtig sind: Ablauf, Erneuerung und was passiert, wenn der Lock-Besitzer stirbt.