Architektur & Migration

Nicht jede App braucht eine Datenbank

„Wir brauchen noch schnell eine Datenbank." Und schon wird für ein Showcase, das drei Wochen lebt, ein ganzes Postgres-Cluster hochgezogen — HA, Backups, PITR. Ich sehe das ständig. Meistens ist es Overkill.

Eine Datenbank ist kein Gratis-Baustein. Sie kostet Setup, Betrieb, Upgrades, Failover, Migrations — und jemanden, der das pflegt. Für ein Produkt mit echter Last lohnt sich das. Für eine Demo, einen Prototyp oder ein kleines internes Tool zahlt man Komplexität, die man nie einlöst.

Aus Spass habe ich eine komplette Postkorb-Applikation auf einem simplen JSON-File-Store gebaut. Daten beim Start in den Speicher, Indexe im RAM, Writes atomar zurück auf Disk (temp-File + rename). Absurd schnell, null externe Abhängigkeiten, in Minuten deployed.

„Und die Daten?" Wir laufen auf Kubernetes mit verschlüsseltem, dreifach repliziertem und gesichertem Storage — mehr Sicherheit, als manche selbstgehostete Produktions-DB je hatte.

Nur die Begriffe darf man nicht verwechseln: Replikation schützt vor Hardware-Ausfall, nicht vor einem falschen Write — der wird sauber mitrepliziert. Dagegen hilft das Backup. Und Point-in-Time-Recovery, auf die Sekunde vor dem kaputten Deploy zurück, ist eine Anforderung, die ein Showcase schlicht nicht hat. Also zahlt man sie auch nicht.

Ehrlich bleibt der Ansatz nur, wenn man die Grenze kennt: Ein File-Store will genau einen Writer. Sobald mehrere Pods gleichzeitig schreiben, Transaktionen über mehrere Entitäten nötig sind, die Daten nicht mehr in den RAM passen oder man ad-hoc darüber reporten will — dann ist die Datenbank kein Overkill, sondern die richtige Antwort.

Und dazwischen liegt ohnehin SQLite: eine Datei, ACID, echte Queries, crash-sicher — ganz ohne Server. Für erstaunlich viele „richtige" Anwendungen reicht genau das.

Die Frage ist nicht „welche Datenbank", sondern „brauche ich überhaupt eine". Default sollte das Einfachste sein, das die Anforderung erfüllt — nicht das, was im Architektur-Diagramm am seriösesten aussieht.

Wo zieht ihr die Grenze — ab wann muss es bei euch die „richtige" Datenbank sein?

◰ Alle Insights