Leider hat dieser Begriff kein gutes deutsches Ăquivalent. Die âWikipediaâ schlĂ€gt vor, â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.

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 "» und â", die Mechanismen (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 . 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
