Bewährte Verfahren für Multi-Tenant-Umgebungen können nach hinten losgehen
- von Derek Comartin
- Veröffentlicht bei Derek Comartin (CodeOpinion)
- Aufgenommen am
- Architecture
Sie betreiben ein Mandantensystem und entdecken einen ziemlich üblen Fehler. Wie kann das sein? Sie haben doch alle Best Practices befolgt!
Ihre HTTP-API stellt eine Nachricht in eine Warteschlange, um eine Rechnung zu generieren. Ein Hintergrundprozess verarbeitet diese Nachricht. Alles scheint funktioniert zu haben. Es gab keine Ausnahmen, keine fehlgeschlagenen Datenbankabfragen und keine Fehler in den Protokollen.
Doch dann ging etwas furchtbar schief.
Die Anfrage sollte für Mandant A ausgeführt werden, tatsächlich wurde sie aber für Mandant B ausgeführt. Den falschen Mandanten.
YouTube
Schaut euch meinen YouTube-Kanal an, wo ich alle möglichen Inhalte zum Thema Softwarearchitektur und -design veröffentliche, einschließlich dieses Videos, das alles aus diesem Beitrag zeigt.
Sie haben wahrscheinlich versucht, dies von vornherein zu verhindern. Vielleicht haben Sie bewusst entschieden, dass die Mandanten-ID nicht überall präsent sein und von Ihrer HTTP-API über Nachrichten und Hintergrundprozesse bis hin zu Ihrer Datenbank weitergegeben werden soll.