Was genau ist eine mandantenfähige Anwendung?

13

Gemäß der online verfügbaren Definition lautet " Mandantenfähigkeit ist eine Architektur, in der eine einzelne Instanz einer Softwareanwendung mehrere Kunden bedient ". Das bedeutet, dass ich eine Restaurant- oder Schulwebsite habe und Zugriff auf verschiedene Restaurants oder Schulen habe, um meine Anwendung mit ihren eigenen Daten zu verwenden, indem ich deren Anmeldeinformationen verwende, die ich beim Kauf meines Schulverwaltungsprodukts zur Verfügung stelle. Wie meine Website ist wie schoolmanagement.com und ich biete verschiedene Sub - Domains zu verschiedenen Schulen Kunden wie school1.schoolmanagement.com & school2.schoolmanagement.com aber der Code ist elbe hinter diesen beiden Subdomains. Beide Schulen haben unterschiedliche Funktionen oder Themen, abhängig von ihrer separaten Datenbank. Also muss ich sorgenschoolmanagement.com für die Anmeldung und sobald sich mein Kunde basierend auf seinem Login-Berechtigungsnachweis anmeldet, leite ich zu seiner jeweiligen URL weiter, z . B. school1.schoolmanagement.com .

Dies ist mein Verständnis der Mandantenanwendung. Ist mein Verständnis richtig? Gibt es eine Online-Mandantenanwendung, die ich durchgehen kann?

Nomi Ali
quelle
1
Was meinen Sie mit "Gibt es eine Online-Mandantenanwendung, die ich durchgehen kann?"? Möchten Sie die Quelle abrufen, als Mandant ausprobieren oder als Host ausführen? Wie Sie bemerken, ist Domain-Hosting ein gängiges Beispiel für mehrere Mandanten, sowohl bei großen als auch bei kleinen Host-Unternehmen. Google Apps for Business (oder was auch immer das aktuelle Branding ist) ist auch eine ziemlich weit verbreitete Multi-Tenant-App.
Kristian H
1
Bisher sind Sie auf dem richtigen Weg. Die Mandantenfähigkeit bezieht sich auf das Dateneigentum. Die Daten werden nach Mietern (Eigentümern) segmentiert. Die Anwendung war aus einem einfachen Grund dieselbe: Skaleneffekt. Der Datenspeicher kann auch derselbe sein oder für jeden Tenan unterschiedlich sein. Die Daten sind nicht für Mieter zugänglich (oder normalerweise nicht, soweit ich weiß).
Laiv
@KristianH danke für das Domain-Hosting-Beispiel, ich habe es bekommen.
Nomi Ali
@Laiv Also können wir für jeden Client eine andere Datenbank mit einer eigenen Konfiguration haben?
Nomi Ali
2
Ja. Das ist (IMO) der bevorzugte Weg. Aber es ist auch das teure. Wenn ich verschiedene Datenbanken sage, können dies sein: a) verschiedene Schemas oder Datenbankinstanzen innerhalb desselben RDBMS oder b) völlig unterschiedliche RDBMS.
Laiv

Antworten:

8

Ja das ist es. Aber wikipedia Definition ist nicht allgemein genug. Es werden keine mehrschichtigen Architekturen oder neueren Architekturformen wie SOA oder Microservices behandelt.

Bei der Mandantenfähigkeit geht es um Softwaresysteme und Datenisolation . Einige Beispiele:

  • Ein mehrschichtiges System mit einer eindeutigen Datenbank kann mandantenfähig sein. Beispiel: Ein SAP-System besteht aus einem Datenbank-Backend und mehreren Webanwendungsservern, die Web-Services auf skalierbare Weise verfügbar machen. Es ist mandantenfähig: Sie können einen neuen Kunden hinzufügen, ohne die laufende Softwareinstallation zu ändern, und mehrere Kunden können das System verwenden, ohne sich jemals zu kennen. Die Daten sind vollständig isoliert (proprietäre Technologie).
  • Ihr System besteht aus einem oder mehreren Prozessen, auf denen Webservices ausgeführt werden, die über unterschiedliche Domänennamen unterschiedlichen Kunden ausgesetzt sind (es sind jedoch immer noch dieselben Prozesse, die es auf dem Server ausführen). Die Datenisolation wird mit separaten Datenbanken erreicht. Es ist definitiv mandantenfähig.
  • Ein Microservice-System könnte in ähnlicher Weise mehrere lose gekoppelte Sätze von Webservices ausführen, die jeweils eine eigene Mikrodatenbank verwenden. Bei Bedarf können Sie zur Skalierung neue Klone derselben Microservices starten. Diese finden über eine Registrierungsfunktion ihre Kollegen und stellen automatisch eine Verbindung zu ihnen her, sodass der Benutzer das Verhalten einer einzelnen Anwendung erhält. Dann sind zwei Szenarien möglich:
    • Wenn Sie, wenn Sie einen neuen Kunden bedienen möchten, einen neuen separaten Satz von Mikrodiensten starten und organisieren müssen, dass die Mikrodienste für einen Kunden nur mit den Mikrodiensten verbunden sind, die sich auf denselben Kunden beziehen, handelt es sich um einen einzelnen Mandanten.
    • Wenn Sie jedoch mithilfe der laufenden Instanzen neue Kunden bedienen könnten (und neue Microservices nur für die Leistung erforderlich wären), ist dies mandantenfähig
Christophe
quelle
1

Ich würde ja sagen, Ihr Verständnis ist grundsätzlich richtig. Die Anwendung wird von mehreren Kunden gemeinsam genutzt, und außerdem werden die Daten jedes Kunden in der Datenbank gespeichert. Das Teilen desselben Codes, ohne dass unterschiedliche Kundendaten in derselben Datenbank gespeichert werden, wird wahrscheinlich nicht als mandantenfähig angesehen.

Andy
quelle
2
@NomiAli Nein, ich würde diesen Multitenant nicht in Betracht ziehen. Damit wird für jeden Kunden eine eigene Umgebung geschaffen. Einer der Vorteile von Multitenant besteht darin, dass die Datenbank und die Software für alle Kunden gleichzeitig aktualisiert werden. Eine Bereitstellung, und jeder ist auf der neuesten Version. Sie sprechen davon, dass jeder Kunde seine eigene separate Installation hat. Ich nehme an, Sie könnten eine gemeinsam genutzte Codebasis haben, aber unterschiedliche Datenbanken, aber das wäre dumm, da Sie bei Ihren DB-Änderungen sehr vorsichtig sein müssen, was sie teurer macht, was den Zweck von Multitenant zunichte macht.
Andy
1
@NomiAli Ein Schema pro Kunde hätte noch mehr Nachteile als eine Datenbank pro Kunde. Es ist noch schwieriger zu verwalten, da Sie dieselben Skripte ausführen müssen, indem Sie nur die Schemanamen ändern. Auch hier ist es nicht unmöglich, aber der Sinn einer Anwendung mit mehreren Mandanten besteht darin, die Kosten für den Softwareanbieter zu senken. Die Dinge, nach denen Sie fragen, schieben sie wieder hoch.
Andy
2
Also, wenn meine einsame Datenbank, die alle Mieter enthält, abstürzt oder kompromittiert wird ... Wohin geht die Kostenreduzierung? Und was passiert, wenn jeder Tenan unterschiedliche Ressourcen- und Leistungsanforderungen hat? Was ist, wenn sie Zugriff auf den Datenspeicher haben möchten? ... Ja. Unterschiedliche Datenspeicher pro Tenan und unterschiedliche Schemata sind Multitenacy. Hier sind die Geschäftsstrategie und die Dienstleistungen, die wir dem Kunden anbieten möchten, wichtiger als die Implementierungsdetails. Mandantenfähigkeit ist ein Merkmal, ein Differenzwert. Je näher die Kundenbedürfnisse sind, desto besser.
Laiv
2
Es könnte Sie interessieren softwareengineering.stackexchange.com/q/340531/222996
Laiv
4
Sie übertreiben den Multi-Datenbank-Aspekt ein wenig. Mehrere Datenbanken sind nur eine Entwurfsentscheidung. Sie können mehrere Datenbanken für dasselbe Schema verwenden und sie mithilfe eines Skripts gleichzeitig aktualisieren. Alle mandantenfähigen Anwendungen müssen die Daten jedes Kunden von den anderen Kunden trennen. Der Mechanismus, mit dem dies durchgeführt wird, ist ein Implementierungsdetail und hängt von Faktoren wie dem gewünschten Isolationsgrad usw. ab.
Robert Harvey