Über Multitenancy

Leider hat dieser Begriff kein gutes deutsches Äquivalent. Die „Wikipedia“ schlĂ€gt vor, Übersetzung „MultimietverhĂ€ltnis, Mehrfachmiete“. Manchmal wird auch von „gemeinsamem Besitz“ gesprochen. Diese Begriffe können etwas verwirrend sein, da das Thema im Grunde nichts mit Miete oder Besitz zu tun hat. Es geht dabei um die Architektur von Software und deren Betriebsgestaltung, wobei letzteres nicht weniger wichtig ist.

Wir haben begonnen, unser VerstĂ€ndnis von Multitenancy gleichzeitig mit der Entwicklung unseres Ansatzes zur Cloud (Service-)Modellierung fĂŒr „1C:Unternehmen“ zu formen. Das war vor einigen Jahren. Seitdem erweitert sich unser VerstĂ€ndnis stĂ€ndig. Wir entdecken immer neue Aspekte (VorzĂŒge, Nachteile, KomplexitĂ€ten, Besonderheiten usw.) zu diesem Thema.

Über Multitenancy

Manchmal verstehen Entwickler unter Multitenancy ein recht einfaches Konzept: „Damit die Daten mehrerer Organisationen in einer Datenbank gespeichert werden können, muss in alle Tabellen eine Spalte mit der Organisations-ID hinzugefĂŒgt und ein Filter darauf gesetzt werden.“ NatĂŒrlich haben auch wir unsere Überlegungen zu diesem Thema von diesem Punkt aus gestartet. Aber wir haben schnell erkannt, dass das nur eine Wiese ist (auch diese ist ĂŒbrigens nicht einfach). Insgesamt handelt es sich dabei um ein „ganzes Land“.

Die grundlegende Idee der Multitenancy lĂ€sst sich ungefĂ€hr so beschreiben. Eine typische Anwendung ist ein Einfamilienhaus, das fĂŒr eine Familie ausgelegt ist, die dessen Infrastruktur (WĂ€nde, Dach, Wasserversorgung, Heizung usw.) nutzt. Eine Multitenancy-Anwendung hingegen ist ein Mehrfamilienhaus. Dort nutzt jede Familie dieselbe Infrastruktur, aber diese Infrastruktur ist fĂŒr das gesamte Haus implementiert.

Ist der Ansatz der Multitenancy gut oder schlecht? DarĂŒber gibt es viele unterschiedliche Meinungen. Es scheint, dass es kein „gut oder schlecht“ im Allgemeinen gibt. Man muss die Vor- und Nachteile im Kontext der spezifischen Aufgaben vergleichen, die gelöst werden sollen. Aber das ist ein eigenes Thema...

Im einfachsten Sinne besteht das Ziel der Multitenancy darin, die Kosten fĂŒr den Betrieb einer Anwendung durch die „Gemeinschaftlichkeit“ der Infrastrukturkosten zu senken. Das ist eine Ă€hnliche Bewegung wie die Senkung der Kosten fĂŒr eine Anwendung durch die Nutzung einer Standardlösung (eventuell mit Anpassungen), anstatt eine „maßgeschneiderte“ Lösung zu entwickeln. Nur wird im einen Fall die Entwicklung gemeinschaftlich gestaltet und im anderen der Betrieb.

Übrigens, um es zu wiederholen, gibt es hier keinen direkten Bezug zu einer Verkaufsart. Die Multitenancy-Architektur kann durchaus auch in der Unternehmens- oder behördlichen IT-Infrastruktur zur Automatisierung einer großen Zahl Ă€hnlicher Filialen oder Unternehmenszweige eingesetzt werden.

Man kann sagen, dass Multitenancy nicht nur eine Frage der Organisation der Datenspeicherung ist. Es handelt sich um ein Arbeitsmodell der gesamten Anwendung (einschließlich eines wesentlichen Teils ihrer Architektur, des Bereitstellungsmodells und der Organisation des Supports).

Das Schwierigste und Interessanteste an dem Multitenancy-Modell ist unserer Ansicht nach, dass die Essenz der Anwendung "zweigeteilt" wird. Ein Teil der FunktionalitĂ€t arbeitet mit spezifischen Datenbereichen (Wohnungen) und "interessiert sich nicht" dafĂŒr, dass es andere Bewohner in anderen Wohnungen gibt. Ein anderer Teil betrachtet das GebĂ€ude als Ganzes und arbeitet sofort fĂŒr alle Bewohner. Dabei kann letzterer nicht abstrahieren, denn es handelt sich schließlich um separate Wohnungen, und es muss ein erforderliches Maß an GranularitĂ€t und Sicherheit gewĂ€hrleistet werden.

In "1C:Unternehmung" wird das Multitenancy-Modell auf der Ebene mehrerer Technologien umgesetzt. Das sind die Mechanismen der Plattform "1C:Unternehmung", die Mechanismen "1C:Technologie zur Veröffentlichung von 1cFresh-Lösungen» und „1C:Technologie zur Entwicklung von 1cFresh-Lösungen", die Mechanismen BSP (Bibliotheken von StandardunterstĂŒtzungssystemen).

Jedes dieser Elemente trÀgt zur Schaffung der gemeinsamen Infrastruktur eines Mehrfamilienhauses bei. Warum wird es in mehreren Technologien und nicht in einer, zum Beispiel in der Plattform, umgesetzt? ZunÀchst einmal, weil wir der Meinung sind, dass es durchaus sinnvoll ist, einige Mechanismen im konkreten Bereitstellungsvariante zu modifizieren. Aber im Allgemeinen ist dies keine einfache Frage, und wir stehen stÀndig vor der Wahl, auf welcher Ebene der eine oder andere Aspekt von Multitenancy besser umgesetzt werden kann.

Offensichtlich war es notwendig, den Grundteil der Mechanismen in der Plattform umzusetzen. Nun, zum Beispiel die tatsĂ€chliche Trennung der Daten. Das, womit man normalerweise das GesprĂ€ch ĂŒber Multitenancy beginnt. Aber letztendlich hat das Multitenancy-Modell einen wesentlichen Teil der Mechanismen der Plattform durchlaufen und erforderte deren Weiterentwicklung, und in einigen FĂ€llen sogar ein erneutes Nachdenken.

Auf der Ebene der Plattform haben wir tatsĂ€chlich die grundlegenden Mechanismen implementiert. Diese ermöglichen die Erstellung von Anwendungen, die im Modell der Multitenancy arbeiten. Damit Anwendungen in diesem Modell „leben und arbeiten“, benötigt man ein Managementsystem fĂŒr deren „Lebenszyklus“. DafĂŒr sind die Technologien 1cFresh und die vereinheitlichte Ebene der GeschĂ€ftslogik auf BSP-Ebene verantwortlich. Ebenso wie in einem Mehrfamilienhaus die Infrastruktur den Bewohnern alles Notwendige bietet, liefern die Technologien 1cFresh alles Notwendige fĂŒr Anwendungen, die im Multitenancy-Modell arbeiten. Damit Anwendungen mit dieser Infrastruktur interagieren können (ohne wesentliche Anpassungen), werden entsprechende „Schnittstellen“ in Form von BSP-Subsystemen integriert.

Aus der Perspektive der Plattformmechanismen ist leicht zu erkennen, dass wir mit zunehmender Erfahrung und der Entwicklung der Cloud-Nutzung von „1C:Unternehmen“ die Zusammensetzung der Mechanismen erweitern, die in diese Architektur einbezogen sind. Ein Beispiel sei genannt. Im Modell der Multitenancy verĂ€ndert sich die Rollenverteilung der Teilnehmer am Anwendungsmanagement erheblich. Die Rolle (Verantwortungsgrad) derjenigen, die fĂŒr den Betrieb der Anwendungen verantwortlich sind, gewinnt erheblich an Bedeutung. Sie benötigen leistungsfĂ€higere Kontrollinstrumente fĂŒr die Anwendungen. Denn die Anwender der Anwendungen (Mieter) vertrauen in erster Linie dem Anbieter, mit dem sie arbeiten. Zu diesem Zweck haben wir in der Version 8.3 einen neuen Sicherheitsprofil-Mechanismus. Dieser Mechanismus ermöglicht es den Administratoren des Anbieters, die Freiheit der Anwendungsentwickler auf das erforderliche Sicherheitsniveau zu beschrĂ€nken – im Wesentlichen die Arbeit der Anwendung fĂŒr jeden Mieter in bestimmten Rahmen einer „Sandbox“ zu isolieren.

Genauso faszinierend ist die Architektur fĂŒr das Management von Anwendungen, die im Multitenancy-Modus betrieben werden (was in 1cFresh- und BSP-Technologien umgesetzt wird). Hier steigen im Vergleich zu einem normalen Bereitstellungsmodell die Anforderungen an die Automatisierung von Managementprozessen erheblich. Solcher Prozesse gibt es Dutzende: Erstellung neuer Datenbereiche („Wohnungen“), Aktualisierung von Anwendungen, Aktualisierung von Norminformationen, Datensicherung usw. Und natĂŒrlich steigen die Anforderungen an die ZuverlĂ€ssigkeit und VerfĂŒgbarkeit. Zum Beispiel haben wir eine Technologie fĂŒr ein asynchrones Aufrufsystem mit garantierter Zustellung implementiert, um die zuverlĂ€ssige Interaktion zwischen Anwendungen und den Komponenten des Managementsystems zu gewĂ€hrleisten.

Ein sehr heikler Punkt ist der Umgang mit den Daten und Prozessen. Einfach erscheint dies (wenn es jemandem so erscheint) nur auf den ersten Blick. Die grĂ¶ĂŸte Herausforderung besteht im Gleichgewicht zwischen der Zentralisierung von Daten und Prozessen und der Dezentralisierung. Auf der einen Seite ermöglicht die Zentralisierung die Reduzierung von Kosten (Speicherplatz, Prozessorressourcen, Aufwand fĂŒr Administratoren 
). Auf der anderen Seite schrĂ€nkt sie die Freiheit der „Mieter“ ein. Dies ist gerade einer der Punkte der „DualitĂ€t“ der Anwendung, bei dem der Entwickler gleichzeitig an die Anwendung im engen Sinne (die eine „Wohnung“ bedient) und im weiteren Sinne (die alle „Mieter“ bedient) denken muss.

Ein Beispiel fĂŒr eine solche „Dilemma“ wĂ€re die normative Referenzinformation. NatĂŒrlich ist die Versuchung groß, sie fĂŒr alle „Mieter“ des Hauses allgemein zu machen. Das ermöglicht es, sie in einer einzigen Instanz zu speichern und sie sofort fĂŒr alle zu aktualisieren. Doch manchmal benötigt ein Mieter spezifische Anpassungen. MerkwĂŒrdigerweise kommt das in der Praxis vor, selbst bei Informationen, die von Regulierungsbehörden (staatlichen Stellen) spezifiziert sind. Es entsteht die schwierige Frage: Soll man diese Informationen allgemein machen oder nicht? Verlockend ist es natĂŒrlich, allgemeine Informationen fĂŒr alle und private fĂŒr die Interessierten zu schaffen. Doch das fĂŒhrt bereits zu einer recht komplexen Umsetzung. Darauf arbeiten wir 


Ein weiteres Beispiel ist die Gestaltung der Implementierung regelmĂ€ĂŸiger Prozesse (die nach einem Zeitplan ausgefĂŒhrt werden, von einem Verwaltungssystem initiiert werden usw.). Einerseits können sie fĂŒr jeden Datenbereich separat implementiert werden. Das ist einfacher und bequemer. Andererseits erzeugt eine so feine GranularitĂ€t eine hohe Last fĂŒr das System. Um die Last zu reduzieren, mĂŒssen gemeinschaftliche Prozesse implementiert werden. Diese erfordern jedoch eine sorgfĂ€ltigere Ausarbeitung.

NatĂŒrlich stellt sich eine sehr wichtige Frage. Wie können Anwendungsentwickler den Betrieb im Multitenancy-Modus sicherstellen? Was mĂŒssen sie dafĂŒr tun? NatĂŒrlich streben wir danach, dass die Belastung durch technologische und infrastrukturelle Fragen grĂ¶ĂŸtenteils auf die bereitgestellte Technologie entfĂ€llt, wĂ€hrend der Anwendungsentwickler sich nur auf die GeschĂ€ftslogik konzentriert. Aber wie bei anderen wichtigen Architekturfragen mĂŒssen Anwendungsentwickler ein gewisses VerstĂ€ndnis fĂŒr die Arbeit im Multitenancy-Modell haben und einige Anstrengungen bei der Anwendungsentwicklung erfordern. Warum? Weil es Momente gibt, die die Technologie nicht automatisch unter BerĂŒcksichtigung der Semantik der Daten gewĂ€hrleisten kann. Zum Beispiel die Definition der Grenzen der Informationsgemeinschaft. Aber wir bemĂŒhen uns, dass diese Schwierigkeiten gering sind. Es gibt bereits Beispiele fĂŒr die Implementierung solcher Anwendungen.

Ein wichtiger Aspekt im Kontext der Implementierung von Multitenancy in „1C:Unternehmen“ besteht darin, dass wir ein hybrides Modell schaffen, in dem eine Anwendung sowohl im Multitenancy-Modus als auch im normalen Modus arbeiten kann. Das ist eine ziemlich komplexe Aufgabe und ein Thema fĂŒr eine gesonderte Diskussion.

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster