© Excellent backgrounds/Shutterstock.com
Kolumne: EnterpriseTales

Kolumne: EnterpriseTales


Mandantenfähigkeit (aka „Multi-Tenancy“) war ursprünglich eines der großen Features, die für Java EE 7 angekündigt waren. Aufgrund von Zeitmangel und fehlender Erfahrung in diesem Bereich wurde dieses Feature allerdings auf Java EE 8 verschoben [1]. Für alle, die jetzt schon Mandantenfähigkeit in ihrer Anwendung benötigen, bedeutet das, dass sie meistens selbst Hand anlegen müssen. Einige Specs und Frameworks unterstützen aber bereits Mandantenfähigkeit Out of the Box.

Eine Anwendung gilt als mandantenfähig, wenn sie in der Lage ist, gleichzeitig mehrere Kunden oder Auftraggeber („Mandanten“) zu bedienen und dabei sicherzustellen, dass diese die Anwendung voneinander unabhängig nutzen können. Mandantenfähigkeit bezieht sich dabei auf ein je nach Mandant unterschiedliches Erscheinungsbild, separate Datenhaltung und teilweise unterschiedliche Businesslogik. Die Anforderungen an eine mandantenfähige Software sind also ungleich höher als bei einer „normalen“ Ein-Mandanten-Anwendung.

Arten von Mandantenfähigkeit

Generell kann die Mandantentrennung auf Oberflächenebene, in der Businesslogik und auf Datenebene realisiert werden. Wie sie innerhalb dieser drei Bereiche umgesetzt werden kann und muss, hängt von verschiedenen Faktoren ab. Ein Aspekt dabei ist die Datenhaltung. Müssen sich die Daten (z. B. aus rechtlichen Gründen) in separaten Datenbanken befinden oder dürfen sie in einer Datenbank abgelegt werden, sollen unterschiedliche Schemata verwendet werden oder befinden sich die Daten verschiedener Mandanten in denselben Tabellen?

Auch beim Deployment gibt es Unterschiede: Werden alle Mandantendaten innerhalb einer Deployment-Einheit (WAR, EAR) deployt oder gibt es pro Mandant ein Deployment? Von all diesen Fragen hängt es ab, in welcher Form die tatsächliche Mandantentrennung umgesetzt werden kann.

Mandantenspezifische Oberfläche

Der Punkt, an dem für den Endkunden die Mandantentrennung unmittelbar sichtbar wird, ist die Oberfläche. Mandantenspezifisches Aussehen kann hier durch unterschiedliche Style Sheets, aber auch durch komplett andere Seiten bis hin zu einem ausgetauschten Template passieren. Je nach Deployment-Szenario gestaltete sich ein solcher Austausch bisher einigermaßen kompliziert. Seit Servlet 3.0 ist es immerhin möglich, Webressourcen in JARs abzulegen und zwar im Ordner META-INF/resources. Auf diese Weise kann man alle mandantenspezifischen Dateien in JARs verpacken und für den Fall, dass ein Deployment durchgeführt wird (ein WAR pro Mandant...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang