Mandantenfähige Webapps mit Laravel
Mandantenfähigkeit (Multitenancy) bedeutet, dass eine einzige Software-Anwendung mehrere Kunden gleichzeitig bedienen kann – jeder mit seinen eigenen Daten und Einstellungen.
In einer mandantenfähigen Umgebung nutzen alle Kunden dieselbe Anwendung, sehen aber nur ihre eigenen Daten. Besonders SaaS-Produkte setzen auf diese Architektur.
Der größte Vorteil für Sie: Sie sparen Entwicklungs- und Wartungskosten. Updates müssen nur einmal eingespielt werden und stehen sofort allen Nutzern zur Verfügung. So bleibt Ihr Budget planbar, während Ihre Software mit jedem Kunden wächst.
Was ist Mandantenfähigkeit?
Stellen Sie sich vor, Sie betreiben ein Bürogebäude: Jedes Unternehmen hat sein eigenes Büro mit eigenem Schlüssel, nutzt aber gemeinsam Aufzüge, Heizung und Hausmeister. Genauso funktioniert mandantenfähige Software: Jeder Kunde (Mandant) hat seinen eigenen abgeschlossenen Bereich, teilt sich aber die technische Infrastruktur mit anderen.
Jeder Mandant verfügt über seinen eigenen Bereich mit Daten, Einstellungen und Benutzern. So können Sie beispielsweise ein Kundenportal oder ein individuelles CRM-System betreiben, das viele verschiedene Unternehmen gleichzeitig nutzen – ohne dass diese voneinander etwas mitbekommen.
Wozu dient mandantenfähige Software?
Mit mandantenfähiger Software bedienen Sie viele Kunden mit einer einzigen Anwendung. Jede Kundengruppe arbeitet in ihrem eigenen, geschützten Bereich – vollständig getrennt von anderen.
Das bedeutet, dass verschiedene Kunden die gleiche Software verwenden können, ohne dass ihre Informationen miteinander vermischt werden.
Welche Multi-Tenant-Architektur ist geeignet?
Die passende Architektur hängt von Ihrem konkreten Vorhaben ab: Wie sensibel sind die Daten? Gibt es rechtliche Vorgaben? Wie viele Mandanten erwarten Sie? Diese Fragen klären wir gemeinsam, bevor wir mit der Entwicklung beginnen.
Grundsätzlich gibt es zwei Wege: eine gemeinsame Datenbank für alle Mandanten oder getrennte Datenbanken pro Kunde. In den meisten Fällen ist die gemeinsame Datenbank die bessere Wahl – sie ist einfacher zu warten und günstiger zu betreiben.
Multitenancy mit einer gemeinsamen Datenbank
Bei dieser Variante speichern alle Mandanten ihre Daten in einer gemeinsamen Datenbank. Die Trennung erfolgt über eine eindeutige Kennung – ähnlich wie Aktenordner in einem gemeinsamen Aktenschrank, die klar beschriftet sind.
Technisch wird jedem Datensatz eine Organisations-Kennung zugewiesen. So stellt die Software sicher, dass jeder Mandant nur seine eigenen Daten sieht – die Trennung passiert automatisch im Hintergrund.
Wichtig zu wissen: Die Daten liegen physisch am selben Ort. Das ist in den allermeisten Fällen kein Problem – solange keine besonderen rechtlichen Anforderungen eine strikte physische Trennung vorschreiben.
Ein häufiger Einwand: Ist eine gemeinsame Datenbank nicht unsicherer? Die kurze Antwort: Nein, wenn die Software sauber entwickelt ist.
Praktisch jeder Online-Shop arbeitet nach demselben Prinzip: Alle Kundendaten liegen in einer zentralen Datenbank. Entscheidend ist die Qualität der Software und eine lückenlose Testabdeckung. Getrennte Datenbanken sind kein Ersatz für saubere Entwicklungsarbeit – sie machen das Projekt nur teurer und komplexer.
Vorteile von Multitenancy mit einer Datenbank
Mit Laravel als Basis profitieren Sie von einem ausgereiften Framework, das mandantenfähige Systeme optimal unterstützt. Die Entwicklung bleibt effizient und die Wartung einfach.
Da keine tiefen Eingriffe ins Framework nötig sind, bleiben Updates unkompliziert. Sie können Ihr System langfristig aktuell und sicher halten.
Neue Kunden können Sie in Sekunden freischalten – ein einfacher Registrierungsprozess genügt. Keine aufwendige Einrichtung, keine manuellen Schritte.
Multitenancy mit getrennten Datenbanken
Bei dieser Variante erhält jeder Mandant seine eigene Datenbank. Die Daten sind damit physisch voneinander getrennt. Das kann erforderlich sein, wenn strenge gesetzliche Vorgaben dies verlangen – etwa bei besonders sensiblen Gesundheits- oder Finanzdaten.
Achtung: Sackgasse!
Diese Variante ist deutlich aufwendiger und teurer. Einmal gewählt, lässt sie sich kaum noch rückgängig machen. Deshalb prüfen wir zu Projektbeginn genau, ob eine getrennte Datenbankarchitektur wirklich notwendig ist. Ohne zwingende Anforderungen raten wir davon ab.
Mehrere Datenbanken mit Laravel nutzen
Wenn eine physische Datentrennung unvermeidbar ist, unterstützt Laravel auch diese Architektur. Für jeden Mandanten wird eine eigene Datenbank angelegt. Das bietet maximale Isolation – ist aber mit deutlich höherem Aufwand verbunden.
Für diese Variante empfehlen wir das bewährte Package „Multitenancy" von Spatie. Es erleichtert die Verwaltung separater Datenbanken erheblich und liefert nützliche Werkzeuge für den Alltag mit.
Zusätzliche Herausforderungen durch ein Multi-Database Setup
Bei mehreren Datenbanken muss die Software jederzeit wissen, welcher Mandant gerade aktiv ist. Das betrifft alle Bereiche der Anwendung – eine zusätzliche Komplexitätsebene, die sorgfältig umgesetzt werden muss.
Onboarding neuer Kunden
Auch das Anlegen neuer Kunden wird aufwendiger: Für jeden Mandanten muss eine eigene Datenbank eingerichtet werden. Das lässt sich zwar automatisieren, bedeutet aber zusätzliche Infrastruktur-Komplexität – und damit höhere Kosten.
Ohne Automatisierung müssen neue Mandanten manuell angelegt werden – ein Prozess, der bei wachsender Kundenzahl schnell zum Engpass wird.
Wirkliche Vorteile von Mandantenfähiger Software
Der größte Gewinn liegt in der Skalierbarkeit: Mit jedem neuen Kunden steigt Ihr Umsatz, während die Betriebskosten nahezu gleich bleiben. Gleichzeitig profitiert jeder Mandant von Verbesserungen, die Sie an einer zentralen Stelle vornehmen.
Umsetzung mit Laravel Boardmitteln
Da separate Datenbanken nur in Ausnahmefällen nötig sind, konzentrieren wir uns auf die bewährte Ein-Datenbank-Lösung.
Laravel bringt alles mit, was Sie für ein mandantenfähiges System brauchen – ganz ohne zusätzliche Erweiterungen. Im Kern steht eine „Organisations"-Tabelle, an die alle anderen Daten geknüpft werden.
Alle Daten der Anwendung werden mit dieser Organisation verknüpft. Durch automatisierte Tests stellen wir sicher, dass kein Mandant Zugriff auf fremde Daten erhält. Test Driven Development (TDD) ist bei mandantenfähigen Systemen unverzichtbar – die Investition in gründliche Tests zahlt sich langfristig aus.
Laracon Talk zum Thema Multi Tenancy
Im Rahmen der Laracon 2017 wurde ein Vortrag zum Thema Multi-Tenancy von Tom Schlick gehalten.
Unsere Empfehlung
Eine gemeinsame Datenbank ist für die meisten Projekte die richtige Wahl. Sie ermöglicht schnelles Wachstum, einfache Wartung und hält die Kosten überschaubar.
Sofern keine rechtlichen Vorgaben eine physische Datentrennung verlangen, empfehlen wir die Ein-Datenbank-Lösung. Sie möchten eine mandantenfähige Software entwickeln lassen? Sprechen Sie uns an – wir beraten Sie gerne.
Weiteres Material:
- Vortrag von Tom Schlick zu Multitenancy in Laravel, Laracon 2017
- Wikipedia zu Mandantenfähiger Software
- Case Study: Multi-Tenant Architektur mit Statamic
- Foto von Joshua Coleman