Das Problem
TopSec existiert, um Daten in Echtzeit zu aggregieren, zu synchronisieren und zu visualisieren, ohne sich auf riesige Infrastruktur oder Stacks zu stützen, die für das Produkt überdimensioniert sind. Das Briefing war einfach zu sagen und schwer zu liefern: Daten live, schnell und konsistent halten, während mehrere Dienste gleichzeitig miteinander sprechen.
Die härteste Entscheidung
Eine klare Linie zu ziehen zwischen dem, was im .NET-8-Backend lebt, und dem, was von Next.js gelöst wird. Ein subtiler Fall machte die Linie offensichtlich: /api-Routen plus next-intl-Middleware erzeugten 307-Redirects nach /es/api/*. Technisch valide, praktisch kaputt. Echtzeit- und Stats-Endpoints fielen unter bestimmten Locales lautlos aus.
Der Patch, den niemand verlangt, ist der, der den Engineer-Tarif rechtfertigt: statt Redirect-Regeln einzeln zu fixen, baute ich den Middleware-Matcher neu, um /api komplett auszuschließen. Visuell winzig, architektonisch groß.
Zu früh zu optimieren ist schlecht. Performance vom ersten Tag an zu ignorieren ist schlimmer.
Arbeitsprinzip
Die andere Entscheidung war, PostgreSQL als Single Source of Truth beizubehalten. Für dieses Produkt war Konsistenz und die Fähigkeit zu komplexen Queries mehr wert als jeder Speed-Gewinn, den man mit einem NoSQL-Store hätte herausquetschen können. Langweilig ist in Ordnung, wenn langweilig richtig ist.
Was ich kaputt gemacht habe
Production ist einmal abgestürzt, weil ich annahm, ein Docker-Image sei wirklich neu gebaut worden. Der „neue“ Code verhielt sich weiter wie der alte. Der eigentliche Schuldige: npm ci schlug stillschweigend fehl, weil package-lock fehlte, und ließ den Build inkonsistent zurück. Ich verbrachte Stunden mit dem Debuggen von Anwendungslogik für ein Pipeline-Problem.
Lektion
Misstraue jedem Deployment, bis du mit deinen eigenen Augen verifiziert hast, welches Artefakt wirklich läuft. SHA das Image, prüfe den Container-Hash, logge den Build-Commit beim Boot. Die billigste Minute, die du je ausgeben wirst.
Ergebnis
- Stabile Multi-Service-VPS-Architektur: Backend, Frontend, Redis, PostgreSQL, nginx, alles koordiniert.
- Großer Rückgang von Routing- und Echtzeitfehlern nach dem Middleware-Rewrite.
- Antwortzeiten verbessert durch gezielten Cache und saubere Trennung von Verantwortlichkeiten.
- Architektur bereit, neue Module zu wachsen, ohne den Kern neu zu schreiben.
- Öffentliche Fläche: mkir.es. Tiefere technische Walkthroughs auf Anfrage verfügbar.