À propos de la multilocation

Malheureusement, ce terme n’a pas de bon analogue en russe. WikipĂ©dia donne traduction "multi-location, location multiple." C'est ce qu'on appelle parfois la « propriĂ©tĂ© multiple ». Ces termes peuvent prĂȘter Ă  confusion, car le sujet n’est pas intrinsĂšquement associĂ© Ă  la location ou Ă  la propriĂ©tĂ©. Il s'agit d'une question d'architecture logicielle et d'organisation de son fonctionnement. Et ce dernier n’est pas moins important.

Nous avons commencĂ© Ă  formuler notre comprĂ©hension de la multilocation en mĂȘme temps que nous avons commencĂ© Ă  concevoir une approche du modĂšle de travail cloud (service) dans 1C:Enterprise. C'Ă©tait il ya plusieurs annĂ©es. Et depuis lors, notre comprĂ©hension n’a cessĂ© de s’élargir. Nous dĂ©couvrons sans cesse de nouveaux aspects de ce sujet (avantages, inconvĂ©nients, difficultĂ©s, fonctionnalitĂ©s, etc.).

À propos de la multilocation

Parfois, les dĂ©veloppeurs comprennent la multilocation comme un sujet trĂšs simple : « pour que les donnĂ©es de plusieurs organisations soient stockĂ©es dans une seule base de donnĂ©es, vous devez ajouter une colonne avec l'identifiant de l'organisation Ă  toutes les tables et dĂ©finir un filtre dessus ». Bien entendu, nous avons Ă©galement commencĂ© notre Ă©tude de la question Ă  partir de ce moment-lĂ . Mais ils se sont vite rendu compte qu’il ne s’agissait que d’une clairiĂšre (ce qui n’est d’ailleurs pas facile). En gĂ©nĂ©ral, il s'agit d'un « pays entier ».

L'idĂ©e de base de la multilocation peut ĂȘtre dĂ©crite Ă  peu prĂšs comme ceci. Une application typique est un chalet conçu pour accueillir une famille, qui utilise ses infrastructures (murs, toiture, alimentation en eau, chauffage, etc.). Une application multilocation est un immeuble d’appartements. Dans ce document, chaque famille utilise la mĂȘme infrastructure, mais l'infrastructure elle-mĂȘme est mise en Ɠuvre pour toute la maison.

L’approche multilocation est-elle bonne ou mauvaise ? Vous pouvez trouver des avis trĂšs diffĂ©rents Ă  ce sujet. Il semble qu’il n’y ait pas de « bon ou mauvais » du tout. Vous devez comparer les avantages et les inconvĂ©nients dans le contexte des tĂąches spĂ©cifiques Ă  rĂ©soudre. Mais c'est un autre sujet...

Dans son sens le plus simple, l’objectif de la multilocation est de rĂ©duire le coĂ»t de maintenance d’une application en « socialisant » les coĂ»ts d’infrastructure. C’est le mĂȘme mouvement que de rĂ©duire le coĂ»t d’une application en utilisant une solution de production (Ă©ventuellement avec personnalisation et modification), plutĂŽt que de l’écrire « sur commande ». Dans un cas seulement, le dĂ©veloppement est socialisĂ© et dans l'autre, l'exploitation.

Par ailleurs, nous le rĂ©pĂ©tons, il n’y a pas de lien direct avec le mode de vente. L'architecture mutualisĂ©e peut Ă©galement ĂȘtre utilisĂ©e dans une infrastructure informatique d'entreprise ou dĂ©partementale pour automatiser un grand nombre de succursales et d'entreprises holding similaires.

On peut dire que la multilocation n’est pas seulement une question d’organisation du stockage des donnĂ©es. Il s'agit d'un modĂšle de fonctionnement de l'application dans son ensemble (incluant une partie significative de son architecture, de son modĂšle de dĂ©ploiement et de son organisation de maintenance).

La chose la plus difficile et la plus intĂ©ressante Ă  propos du modĂšle multi-tenant, nous semble-t-il, est que l’essence de l’application « bifurque ». Une partie de la fonctionnalitĂ© fonctionne avec des zones de donnĂ©es spĂ©cifiques (appartements) et n'est « pas intĂ©ressĂ©e » par le fait qu'il y ait des rĂ©sidents dans d'autres appartements. Et certains perçoivent la maison dans son ensemble et travaillent pour tous les rĂ©sidents Ă  la fois. Dans le mĂȘme temps, ces derniers ne peuvent ignorer le fait qu’il s’agit aprĂšs tout d’appartements sĂ©parĂ©s et qu’il est nĂ©cessaire d’assurer le niveau de granularitĂ© et de sĂ©curitĂ© nĂ©cessaire.

Dans 1C:Enterprise, le modĂšle multitenancy est implĂ©mentĂ© au niveau de plusieurs technologies. Ce sont les mĂ©canismes de la plateforme 1C:Enterprise, les mĂ©canismes de1C : Technologie pour les solutions de publication 1cFresh"Et"1C : Technologie de dĂ©veloppement de solutions 1cFresh", mĂ©canismes BSP (bibliothĂšques de sous-systĂšmes standards).

Chacun de ces Ă©lĂ©ments contribue Ă  la construction de l'infrastructure globale d'un immeuble Ă  appartements. Pourquoi cela est-il implĂ©mentĂ© dans plusieurs technologies, et pas dans une seule, par exemple dans une plateforme ? Tout d’abord parce que certains mĂ©canismes, Ă  notre avis, sont tout Ă  fait appropriĂ©s pour ĂȘtre modifiĂ©s pour une option de dĂ©ploiement spĂ©cifique. Mais en gĂ©nĂ©ral, c'est une question difficile, et nous sommes constamment confrontĂ©s Ă  un choix : Ă  quel niveau est-il prĂ©fĂ©rable de mettre en Ɠuvre tel ou tel aspect de la multilocation.

Évidemment, la partie fondamentale des mĂ©canismes devait ĂȘtre implĂ©mentĂ©e dans la plateforme. Eh bien, par exemple, la sĂ©paration des donnĂ©es proprement dite. C’est lĂ  que les gens commencent gĂ©nĂ©ralement Ă  parler de multilocation. Mais au final, le modĂšle multi-tenant a « parcouru » une partie importante des mĂ©canismes de la plateforme et a nĂ©cessitĂ© leur perfectionnement, et dans certains cas, leur refonte.

Au niveau de la plateforme, nous avons implémenté exactement les mécanismes de base. Ils vous permettent de créer des applications qui s'exécutent dans un modÚle multi-tenant. Mais pour que les applications « vivent et travaillent » dans un tel modÚle, vous devez disposer d'un systÚme de gestion de leurs « activités de vie ». Les technologies 1cFresh et une couche de logique métier unifiée au niveau BSP en sont responsables. Tout comme dans un immeuble d'appartements, l'infrastructure fournit aux résidents tout ce dont ils ont besoin, les technologies 1cFresh fournissent tout ce dont ils ont besoin pour les applications exécutées dans un modÚle multi-tenant. Et pour que les applications puissent interagir avec cette infrastructure (sans modifications significatives), les « connecteurs » correspondants y sont placés sous forme de sous-systÚmes BSP.

Du point de vue des mĂ©canismes de la plate-forme, il est facile de remarquer qu'Ă  mesure que nous acquĂ©rons de l'expĂ©rience et dĂ©veloppons le cas d'utilisation du cloud « 1C : Enterprise », nous Ă©largissons la composition des mĂ©canismes impliquĂ©s dans cette architecture. Donnons un exemple. Dans le modĂšle mutualisĂ©, les rĂŽles des participants aux services d’application changent considĂ©rablement. Le rĂŽle (niveau de responsabilitĂ©) des responsables de l'exploitation des applications augmente considĂ©rablement. Il leur est devenu nĂ©cessaire de disposer d’outils de contrĂŽle des applications plus puissants. Parce que les utilisateurs de l'application (rĂ©sidents) font avant tout confiance au fournisseur avec lequel ils travaillent. Pour ce faire, nous avons mis en place un nouveau mĂ©canisme de profil de sĂ©curitĂ©. Ce mĂ©canisme permet aux administrateurs du fournisseur de limiter la libertĂ© des dĂ©veloppeurs d'applications au niveau de sĂ©curitĂ© requis - en substance, d'isoler le fonctionnement de l'application pour chaque locataire dans un certain bac Ă  sable.

Non moins intĂ©ressante est l'architecture de gestion des applications fonctionnant en mode multitenancy (ce qui est implĂ©mentĂ© dans les technologies 1cFresh et BSP). Ici, par rapport au modĂšle de dĂ©ploiement conventionnel, les exigences en matiĂšre d'automatisation des processus de gestion sont considĂ©rablement accrues. Il existe des dizaines de processus de ce type : crĂ©ation de nouvelles zones de donnĂ©es (« appartements »), mise Ă  jour des applications, mise Ă  jour des informations rĂ©glementaires, sauvegardes, etc. Et, bien sĂ»r, les exigences en matiĂšre de niveau de fiabilitĂ© et de disponibilitĂ© augmentent. Par exemple, pour garantir une interaction fiable entre les applications et les composants du systĂšme de contrĂŽle, nous avons mis en Ɠuvre une technologie de systĂšme d'appel asynchrone avec une livraison garantie.

Un point trĂšs subtil est la maniĂšre de socialiser les donnĂ©es et les processus. Cela semble simple (si cela semble Ă  quelqu'un) seulement Ă  premiĂšre vue. Le plus grand dĂ©fi rĂ©side dans l’équilibre entre la centralisation des donnĂ©es et des processus et la dĂ©centralisation. D'une part, la centralisation permet de rĂ©duire les coĂ»ts (espace disque, ressources processeur, efforts des administrateurs...). En revanche, cela limite la libertĂ© des « locataires ». C'est exactement l'un des moments de « bifurcation » de l'application, oĂč le dĂ©veloppeur doit penser simultanĂ©ment Ă  l'application au sens Ă©troit (au service d'un « appartement ») et au sens large (au service de tous les « locataires » Ă  la fois) .

A titre d'exemple d'un tel « dilemme », on peut citer les informations rĂ©glementaires et de rĂ©fĂ©rence. Bien sĂ»r, la tentation est grande de la rendre commune Ă  tous les « locataires » de la maison. Cela vous permet de le stocker en une seule copie et de le mettre Ă  jour pour tout le monde en mĂȘme temps. Mais il arrive que certains rĂ©sidents aient besoin de changements spĂ©cifiques. Curieusement, dans la pratique, cela se produit mĂȘme pour les informations spĂ©cifiĂ©es par les rĂ©gulateurs (organismes gouvernementaux). Cela s’avĂšre ĂȘtre une question difficile : socialiser ou ne pas socialiser ? Il est bien entendu tentant de rendre l’information gĂ©nĂ©rale pour tout le monde et privĂ©e pour ceux qui le souhaitent. Et cela conduit dĂ©jĂ  Ă  une mise en Ɠuvre trĂšs difficile. Mais nous y travaillons...

Un autre exemple est la conception de la mise en Ɠuvre de processus rĂ©guliers (exĂ©cutĂ©s selon un planning, initiĂ©s par le systĂšme de contrĂŽle, etc.). D’une part, ils peuvent ĂȘtre mis en Ɠuvre sĂ©parĂ©ment pour chaque zone de donnĂ©es. C'est plus facile et plus pratique. Mais d’un autre cĂŽtĂ©, une granularitĂ© aussi fine crĂ©e une charge importante sur le systĂšme. Pour rĂ©duire la charge, vous devez mettre en Ɠuvre des processus socialisĂ©s. Mais ils nĂ©cessitent une Ă©tude plus approfondie.

Bien entendu, cela soulĂšve une question trĂšs importante. Comment les dĂ©veloppeurs d’applications peuvent-ils assurer la multilocation ? Que doivent-ils faire pour cela ? Bien entendu, nous nous efforçons de faire en sorte que le fardeau des problĂšmes technologiques et d'infrastructure repose autant que possible sur les Ă©paules de la technologie fournie, et que le dĂ©veloppeur d'applications ne pense qu'en termes de tĂąches de logique mĂ©tier. Mais comme pour d’autres problĂšmes architecturaux importants, les dĂ©veloppeurs d’applications doivent avoir une certaine comprĂ©hension du travail dans le modĂšle multi-tenant et des efforts seront nĂ©cessaires lors du dĂ©veloppement d’applications. Pourquoi? Car il y a des points que la technologie ne peut pas fournir automatiquement sans prendre en compte la sĂ©mantique des donnĂ©es. Par exemple, la mĂȘme dĂ©finition des limites de la socialisation de l'information. Mais nous essayons de limiter ces difficultĂ©s. Il existe dĂ©jĂ  des exemples de mise en Ɠuvre de telles applications.

Un point important dans le contexte de la mise en Ɠuvre de la multilocation dans 1C:Enterprise est que nous crĂ©ons un modĂšle hybride dans lequel une application peut fonctionner Ă  la fois en mode multilocation et en mode normal. Il s’agit d’une tĂąche trĂšs difficile et qui fait l’objet d’une discussion distincte.

Source: habr.com

Ajouter un commentaire