Eine Instanz je Einrichtung
Warum Schulmittag jeder Gemeinde und jeder Schule ihre eigene, isolierte Instanz gibt — und was das mit Vertrauen, Datenschutz und ruhigem Schlaf zu tun hat.
Die bequeme Architektur — und die richtige
Wer eine Plattform für viele Kunden baut, wählt fast immer dieselbe Architektur: eine große Datenbank, alle Mandanten darin, getrennt durch eine Spalte namens tenant_id. Das ist billiger zu betreiben, schneller zu bauen und in jedem SaaS-Lehrbuch der Standard. Es gibt nur ein Problem: Die Trennung existiert nur, solange jede einzelne Abfrage sie respektiert. Ein vergessener Filter, und Daten einer Schule stehen im Export einer anderen.
Bei Schulmittag haben wir uns gegen das Lehrbuch entschieden. Jede Einrichtung — jede Gemeinde, jede Schule, jeder Hort — bekommt eine eigene Instanz: eigene Datenbank, eigene Serverressourcen, auf europäischen Servern. Die Trennung ist keine Konvention im Code, sondern eine Eigenschaft der Infrastruktur. Sie kann nicht vergessen werden, weil sie nicht im Code lebt.
Was eine Gemeinde wirklich fragt
In Gesprächen mit Gemeinden kommt selten die Frage nach Features. Es kommen andere Fragen: Wo liegen die Daten unserer Eltern und Kinder? Wer hat Zugriff? Was passiert, wenn ihr einen anderen Kunden verliert — betrifft uns das?
Mit einer Instanz je Einrichtung sind die Antworten kurz. Die Daten liegen in der eigenen Datenbank der Einrichtung, auf europäischen Servern. Ein Vorfall bei einem Mandanten kann strukturell nicht auf einen anderen übergreifen. Und wenn eine Einrichtung geht, wird ihre Instanz abgeschaltet und gelöscht — nicht aus einer geteilten Tabelle herausoperiert.
Das ist keine technische Spitzfindigkeit. Für eine Schulausspeisung melden Eltern ihre Kinder an; es geht um Namen, Essgewohnheiten, Abrechnungen. Wer solche Daten verwaltet, schuldet den Menschen dahinter mehr als eine WHERE-Klausel.
Der Einwand: Skaliert das denn?
Der klassische Einwand gegen isolierte Instanzen ist der Betriebsaufwand: Hundert Instanzen heißt hundertmal ausrollen, hundertmal aktualisieren. Der Einwand stimmt — wenn man von Hand arbeitet.
Deshalb haben wir das Ausrollen selbst zur Software gemacht. fleetdeck, unsere eigene Deployment-Infrastruktur, liegt offen auf GitHub und bringt eine neue Instanz in Minuten in Betrieb. Updates laufen über denselben Weg, für jede Einrichtung gleich. Die Isolation kostet uns dadurch nicht die Skalierbarkeit — sie kostet uns die Bequemlichkeit der Abkürzung. Diesen Preis zahlen wir gern.
Ehrlich bleiben
Schulmittag ist keine Erfolgsgeschichte im Prospektformat, sondern ein laufendes Projekt: Unter Vertrag sind die Stadtgemeinde Gallneukirchen, das Petrinum Linz und die Sportmittelschule Tulln; weitere Einrichtungen sind in Vorbereitung. Abgerechnet wird als Jahreslizenz je Einrichtung — ein Betrag, den ein Gemeinderat budgetieren kann, ohne versteckte Kosten.
Ich schreibe das so nüchtern auf, weil die Architekturentscheidung genau daraus entstanden ist: aus der Frage, was wir Menschen versprechen können, die sich auf uns verlassen. Eine Instanz je Einrichtung ist unsere Antwort. Sie ist teurer als das Lehrbuch. Sie ist auch richtiger.