Zum Inhalt springen
Enterprise-SaaS-Produkt

Multi-Tenant-ERP-Plattform

Ein Microservices-ERP, von Tag eins für Mandantenisolation, unabhängige Bereitstellung und ehrliche technische Skalierbarkeit konzipiert.

Jahr 2025
Dauer 14 Monate
Team 4 Ingenieure
Status Live · erste Kunden

Ein Blick auf das Produkt.

Wir wollten ein modernes ERP bauen, das kleine und mittelständische Unternehmen nicht in die klassische „Monolith oder nichts"-Falle zwingt. Fertige Systeme wie SAP oder Odoo brachten entweder Enterprise-Lizenzkosten mit sich oder erforderten monatelange Anpassung, um reale Arbeitsabläufe abzubilden.

Unsere These war einfach: das Problem von Tag eins in kleine, unabhängig bereitstellbare Services zerlegen — selbst wenn jeder Instinkt in einem kleinen Team sagt, einen modularen Monolithen auszuliefern und später zu extrahieren. Vierzehn Monate später hat diese Entscheidung jede technische und betriebliche Weichenstellung seither geprägt.

Herausforderung

Einzelhandel, Dienstleistungen und Vertrieb brauchen alle ein CRM, ein Buchhaltungsmodul und ein Lagersystem — aber Regeln, Felder und Abläufe unterscheiden sich deutlich. Ein traditioneller Monolith begegnet dieser Divergenz, indem er Konfigurations-Flags stapelt, bis der Code zu einem Museum für Sonderfälle wird.

Unsere Anforderungen waren strenger: vollständige Datenisolation pro Mandant (keine gemeinsamen Schemata), unabhängige Release-Zyklen pro Modul (CRM deployt, ohne Inventory zu blockieren), Subsekunden-Konsistenz zwischen Services und eine kohärente UI trotz fragmentiertem Backend — alles auf Infrastruktur, die sich ein KMU leisten kann.

Ansatz

Für Deployment-Unabhängigkeit wählten wir Polyrepo statt Monorepo. Insgesamt 41 Repositories: 16 Backend-Services, 10 Vue-3-Microfrontends, eine gemeinsame UI-Bibliothek, ein JWT-Authentication-SDK und Infrastrukturmodule. Jeder Backend-Service ist eine fokussierte Laravel-App mit eigenem PostgreSQL-Schema.

Services kommunizieren ausschließlich über NATS JetStream — keine direkten HTTP-Aufrufe zwischen Services. Synchrone Browseranfragen laufen über ein Kong-API-Gateway, das an den passenden Service routet und die JWT-Validierung übernimmt. Die UI wird zur Laufzeit mit Rsbuild Module Federation zusammengesetzt, sodass CRM und Inventory neue Features unabhängig ausliefern können, ohne die Shell neu zu bauen.

Die Mandantenisolation wird auf Datenbankebene durch PostgreSQL Row-Level Security erzwungen, von CloudNativePG pro Mandant bereitgestellt. Eine Tenant-ID reist im Header jeder NATS-Nachricht mit. Vergisst ein Service, eine Abfrage zu scopen, greift RLS — nicht menschliche Wachsamkeit.

Wir haben uns ab Tag eins für Microservices entschieden — selbst wenn jeder Instinkt in einem kleinen Team sagt, einen Monolithen auszuliefern und später zu extrahieren.

Wichtige Funktionen ausgeliefert.

  • 16 fokussierte Laravel-Services für CRM, Buchhaltung, Lager, HR, Workflow, Ticketing, Reporting und mehr
  • Mandantenisolierte PostgreSQL-Schemas mit durchgesetztem Row-Level Security
  • NATS-JetStream-Eventbus mit garantierter Zustellung zwischen Services
  • 10 Vue-3-Microfrontends, zur Laufzeit föderiert — unabhängig ausgeliefert
  • Helm-basierte Kubernetes-Deployments auf RKE2-Clustern
  • Gemeinsames JWT-Auth-SDK, von jedem Service und Microfrontend genutzt
  • Vollständiger Observability-Stack: Prometheus-Metriken, Loki-Logs, Tempo-Traces
  • Automatisiertes Tenant-Provisioning mit eigener Datenbank pro Kunde

Greifbare Ergebnisse, in der Produktion gemessen.

Deploy Time
2–3 Min.
Git-Push bis Produktion pro Service
p95 Latency
< 180ms
Unter realistischen Lasttests
Tenant Leaks
Null
6 Monate Pen-Testing, kein mandantenübergreifender Zugriff
Scale
41 Repos
Klare Grenzen, klare Verantwortlichkeit pro Service

Die Plattform unterstützt beliebig viele Mandanten ohne Kreuzkontamination. Jeder Service wird unabhängig über Helm-Charts auf RKE2-Kubernetes deployt, mit vollständiger Observability via Prometheus, Grafana, Loki und Tempo. Durchschnittliche Deployment-Zeit: unter 3 Minuten pro Service.

Verwendete Technologien, nach Rolle gruppiert.

Backend
Laravel 12 PostgreSQL NATS JetStream Valkey CloudNativePG
Frontend
Vue 3 TypeScript Rsbuild Module Federation
Infrastruktur & Observability
Kubernetes (RKE2) Helm Prometheus Grafana Loki Tempo