der blubito blog

Die Multi-Tenancy-Architektur einfach erklärt

Eine Software-Instanz, mehrere Anwender – geht das? Auf diese Frage gehen wir im folgenden Artikel ein und beleuchten sowohl die Vor- als auch die Nachteile der mandantenfähigen Architektur.

Lesezeit: 11 min
Multi-Tenancy-Architektur

Inhalt dieses Artikels

SKALIERBARKEIT, AGILITÄT UND KOSTENEFFIZIENZ

Die Türen, die durch Multi-Tenancy geöffnet werden

Die Multi-TenancyArchitektur ist zu einem sehr zentralen Thema für viele Wirtschaftszweige geworden, insbesondere für den eCommerce-Bereich. Beginnen wir mit dem folgenden Beispiel:  

Eine Softwareanwendung wurde lediglich für den Verkauf von Waren entwickelt. Was für Waren das sind, spielt für unseren Anwendungsfall keine Rolle. Die Kunden, die die Software nutzen, haben unterschiedliche Anforderungen, wie die Software aufgestellt sein sollte, oder genauer genommen, sie haben bestimmte Anforderungen daran, wie ihre Daten aufbewahrt werden sollten. Sie möchten zum Beispiel, dass andere Kunden keinen Zugriff darauf haben. Das würde bedeuten, dass wir die Daten in der Datenbank getrennt verwalten müssen. Für eine Single-Tenant-Anwendung wäre dies ein Albtraum. Glücklicherweise gibt es so etwas wie die Multi-Tenant-Anwendung, die uns den Tag rettet.

Durch die Multi-Tenant-Umgebung (sog. Mandantenfähigkeit) wird nämlich für jeden Kunden eine eigene Instanz mit einer eigenen benutzerspezifischen Konfiguration eingerichtet.  

Dies ist nur eine der Lösungen, die uns diese Systemarchitektur für derartige Probleme bietet. Im Grunde gibt uns die Mandantenfähigkeit die Möglichkeit, Clients physisch zu gruppieren, während sie logisch getrennt sind. 

RESSOURCENEINSATZ OPTIMIEREN

Multi-Tenant vs. Single Tenant

Ein „Tenant (Mandant) ist eine Gruppe von Benutzern, die einen gemeinsamen Zugang mit bestimmten Zugriffsberechtigungen und Nutzungsmöglichkeiten für eine konkrete Softwareinstanz haben. Die Tenants sollten niemals voneinander wissen und ihre Daten sollten getrennt sein.  

Single vs. Multi-Tenancy Grafik
Multi-Tenancy öffnet die Türen für eine einzige in hoher Weise skalierbare, agile und kosteneffiziente Softwarelösung, die viele verschiedene Kunden bedienen kann.

Maßgeschneiderte Softwareentwicklung  

Sie haben das Problem, wir liefern die Lösung.

Genau wie bei jedem anderen Architekturmodell müssen auch bei der mandantenfähigen Architektur zwei sich widersprechende Faktoren in Einklang gebracht werden:

Optimierung der Nutzung von Ressourcen

Ein Rechner pro Mandant ist in den meisten Fällen eine Verschwendung von Ressourcen, da ein einzelner Mandant höchstwahrscheinlich nicht in der Lage sein wird, die volle Rechenleistung auszunutzen. Daher sollte ein einzelner Rechner von mehreren Mandanten gemeinsam verwendet werden.

Datenschutz zwischen den Mandanten

In einer mandantenfähigen Architektur steht die Gewährleistung von Datenschutz, Vertraulichkeit und Konsistenz der gespeicherten Daten im Vordergrund. Es muss mit so genannten "Noisy Neighbors" (lauten Nachbarn) umgegangen werden. Dies bedeutet, dass ein Tenant, der sich auf unerwartete Weise verhält, die anderen Tenants nicht beeinträchtigen sollte.

Die Mühe eine „Fool-proof“ Trennung zu gewährleisten, kann sich wohl lohnen, da wir dann von den Vorteilen der gemeinsamen Nutzung von Ressourcen profitieren können, und zwar:

Niedrigere Kosten:

Wird ein Rechner von mehreren Tenants verwendet, senken automatisch die Kosten des Softwareanbieters.

Elastizität & Agilität:

Das Onboarding neuer Mandanten ist nicht nur kosteneffizienter, sondern auch viel einfacher, zügiger und flexibler.

WIE INFORMATIONEN AUFGETEILT WERDEN KÖNNEN

Arten der Mehrmandanten-Anwendung

Die größte Herausforderung einer mandantenfähigen Softwarearchitektur besteht darin, die Daten pro Mandant aufzuteilen und zugleich Ressourcen mehrfach zu verwenden. Derzeit existieren drei verschiedene mandantenfähige Software-Architekturen. Ihr Hauptunterschied besteht darin, wie die Informationen für jeden Mandanten physisch aufgeteilt werden.

1. Gemeinsame Datenbank, die eine Diskriminatorspalte verwendet

Multi-Tenancy Architecture - Shared DB + discriminator row "tenant_id"
Dieses Modell verwendet eine Datenbank, in der für jede Datentabelle eine Mandanten-Spalte hinzugefügt wird. Diese wird als Diskriminatorspalte bezeichnet, in der die Tenant-ID gespeichert wird. Das bedeutet, dass bei jedem CRUD-Vorgang (CREATE; READ; UPDATE; DELETE) die Tenant-ID in die Query aufgenommen werden muss. Dieses System ist das schwächste im Hinblick auf den Datenschutz. Darüber hinaus ist es sehr schwierig, Backups pro Mandant zu erstellen, da die Informationen nicht auf Datenbankebene getrennt sind. Im Hinblick auf die Infrastruktur ist das allerdings die am einfachsten zu implementierende Lösung.

Pros

Platz sparend

Für mehrere Mandanten
geeignet

Cons

Erhöht die Komplexität der Datenbank

Kann nicht einfach skaliert werden

2. Ein Schema pro Mandant

Multi-Tenancy Architecture - Shared DB + Schema Based
Auch in diesem Szenario wird eine einzige Datenbankinstanz verwendet. Jeder Mandant verfügt jedoch über ein eigenes Datenbankschema, so dass die Daten logisch isoliert sind. D.h. in diesem Fall kann eine einzelne Datenbankinstanz mehrere Schemata haben und jedes Schema hat keine Kenntnis von den in den anderen Schemata gespeicherten Informationen. Wenn ein Schema außerdem verschiedenen Datenbankbenutzern pro Tenant gehört, bietet die Datenbank-Sicherheitsfunktion eine zusätzliche Ebene des Datenschutzes. Wichtig ist jedoch zu beachten, dass bei dieser Lösung der Datenbankverbindungspool nicht von der Datenzugriffsschicht wiederverwendet werden kann.

Pros

Geringe Hardwarekosten

Cons

Die Wiederherstellung von Daten ist schwieriger

Keine lose Kopplung zwischen den Komponenten

3. Eine Datenbank pro Mandant

Multi-Tenancy Architecture - Database per Tenant

Die dritte Alternative ist die Bereitstellung einer einzelnen Datenbankinstanz je Mandanten. Dies ist wahrscheinlich die intuitivste Lösung, wenn es um Multi-Tenancy geht. Bei diesem Ansatz werden die Daten des Mandanten physisch von denen der anderen Mandanten getrennt. Auf diese Weise ist der Datenschutz und die Vertraulichkeit der Informationen gewährleistet. Zudem lassen sich Backups und andere administrative Maßnahmen viel einfacher durchführen. Die Kosten für diese Lösung sind allerdings deutlich höher, da mehrere Datenbankinstanzen verwaltet werden müssen.

Pros

Einfach für Backups und Wiederherstellung

Größere Sicherheit

Unkomplizierte Implementierung

Cons

Hohe Kosten

Scagile - Agile Projektmanagement App in SharePoint Hintergrundbild
Meet scagile

created by agile natives for agile natives

Die erste all-in-one scaled agile Projektmanagement Suite für SharePoint.

DAS GLEICHGEWICHT FINDEN

Auswahl einer Multi-Tenant Softwarearchitektur

Wenn es um die Wahl eine Art mandantenfähiger Architektur geht, gibt es kein Richtig oder Falsch. Jedes Modell bringt seine Vor- und Nachteile mit sich, daher hängt die Wahl hauptsächlich von den Anforderungen der Anwendung ab. Wenn Sie zum Beispiel eine kleine Anzahl von Mandanten haben, sagen wir weniger als tausend, und eine starke Datenisolierung berücksichtigen wollen, dann sind Lösung 2 (Schema pro Mandant) oder 3 (Datenbank pro Mandant) von Bedeutung. Schema pro Mandant ist in der Regel die erste Wahl, weil sie ein gutes Gleichgewicht zwischen Datenisolierung und Wiederverwendung von Ressourcen bietet. Wenn die Anwendung eine sehr große Anzahl von Mandanten unterstützen soll, ist die gemeinsame Datenbank mit einer Diskriminatorspalte möglicherweise die einzige Wahl. 

Im Grunde genommen ist der realistischste Ansatz ein gemischtes Modell, bei dem verschiedene Kundensegmente mit unterschiedlichen Merkmalen unterstützt werden.  

Scagile Blog

Besuchen Sie unseren Blog über agiles Projektmanagement.

Neueste Beiträge