Qu'est-ce qu'une application multi-locataire exactement?

15

Selon la définition disponible en ligne, "la multi-location est une architecture dans laquelle une seule instance d'une application logicielle dessert plusieurs clients ". Cela signifie que j'ai un site Web de restaurant ou d'école et que je donne accès à différents restaurants ou écoles pour utiliser mon application avec leurs propres données en utilisant leurs informations d'identification que je fournis une fois qu'ils ont acheté mon produit de gestion d'école. Comme mon site Web est comme schoolmanagement.com et je fournis différents sous-domaines aux clients des différentes écoles comme school1.schoolmanagement.com & school2.schoolmanagement.com mais le code est le même derrière ces deux sous-domaines. Les deux écoles ont des fonctionnalités ou des thèmes différents selon leur base de données distincte. Je dois donc fournirschoolmanagement.com pour la connexion et une fois que mon client s'est connecté en fonction de ses informations de connexion, je redirige vers son URL respective, par exemple school1.schoolmanagement.com .

C'est ma compréhension de l'application multi-locataire. Ma compréhension est-elle correcte? Existe-t-il une application multi-locataire en ligne que je peux utiliser?

Nomi Ali
la source
1
Qu'entendez-vous par «Existe-t-il une application multi-locataire en ligne que je puisse utiliser»? Souhaitez-vous obtenir la source, ou essayer en tant que locataire, ou exécuter en tant qu'hôte? Comme vous le remarquez, l'hébergement de domaine est un exemple multi-locataire commun, avec des entreprises hôtes grandes et petites. Google Apps for Business (ou quelle que soit la marque actuelle) est également une application multi-locataire assez répandue.
Kristian H
1
Jusqu'à présent, vous êtes sur la bonne voie. La multi-location concerne la propriété des données. Les données sont segmentées par tenans (propriétaires). L'application est la même pour une raison simple: économie d'échelle. Le stockage des données pourrait également être le même ou il pourrait être différent pour chaque tenan. Les données ne sont pas accessibles aux partagés entre les tenans (ou généralement pas, à ce que je sache).
Laiv
@KristianH merci pour l'exemple d'hébergement de domaine, je l'ai.
Nomi Ali
@Laiv Nous pouvons donc avoir des bases de données différentes pour chaque client avec leur propre configuration distincte?
Nomi Ali
2
Oui. C'est (IMO) la voie préférable. Mais c'est aussi le plus cher. Quand je dis différentes bases de données, elles peuvent être: a) des schémas différents ou des instances db dans le même SGBDR ou b) des SGBDR totalement différents.
Laiv

Réponses:

9

Oui c'est ça. Mais la définition de wikipedia n'est pas assez générale. Il ne traite pas des architectures à plusieurs niveaux ou des formes d'architecture plus récentes comme SOA ou microservices.

La multi-location concerne les systèmes logiciels et l'isolement des données . Quelques exemples:

  • un système à plusieurs niveaux avec une base de données unique peut être à plusieurs locataires. Exemple: un système SAP est composé d'un backend de base de données et de quelques serveurs d'applications Web qui exposent de manière évolutive les services Web. Il est multi-locataire: vous pouvez ajouter un nouveau client sans modifier l'installation du logiciel en cours, et plusieurs clients peuvent utiliser le système sans jamais se connaître. Les données sont complètement isolées (technologie propriétaire).
  • votre système est composé d'un ou plusieurs processus exécutant des services Web qui sont exposés à différents clients via différents noms de domaine (mais ce sont toujours les mêmes processus qui l'exécutent sur le serveur). L'isolement des données est réalisé avec des bases de données distinctes. C'est définitivement multi-locataire.
  • un système de microservices pourrait également exécuter plusieurs ensembles de services Web faiblement couplés, chacun utilisant sa propre micro-base de données. Si nécessaire pour évoluer, vous pouvez démarrer de nouveaux clones des mêmes microservices et ils via une fonction d'enregistrement trouveraient leurs pairs et se connecteraient automatiquement à eux, offrant à l'utilisateur le comportement d'une seule application. Ensuite, deux scénarios sont possibles:
    • si, lorsque vous souhaitez servir un nouveau client, vous devez démarrer un nouvel ensemble distinct de microservices et organiser que les microservices d'un seul client se connectent uniquement aux microservices relatifs au même client, il s'agit d'un locataire unique.
    • mais si vous pouviez servir de nouveaux clients à l'aide des instances en cours d'exécution (et que de nouveaux microservices ne seraient nécessaires que pour les performances), alors c'est multi-tenant
Christophe
la source
1

Je dirais que oui, votre compréhension est fondamentalement correcte. L'application est partagée par plusieurs clients, et les données de chaque client sont également mélangées dans la base de données. Le partage du même code sans que les données de différents clients ne soient regroupées dans la même base de données ne serait probablement pas considéré comme mutualisé.

Andy
la source
2
@NomiAli Non, je ne considérerais pas ce multi-locataire. Cela crée un environnement distinct pour chaque client. l'un des avantages du multitenant est que la base de données et le logiciel sont mis à niveau pour tous les clients en même temps. Un déploiement, et tout le monde est sur la dernière version. Ce dont vous parlez, c'est que chaque client a sa propre installation séparée. Je suppose que vous pourriez avoir une base de code partagée mais des bases de données différentes, mais ce serait stupide car vous devez faire très attention à vos modifications de base de données, ce qui les rend plus coûteuses, ce qui va à l'encontre de l'objectif du multitenant.
Andy
1
@NomiAli Un schéma par client aurait encore plus d'inconvénients qu'une base de données par client, c'est encore plus difficile à gérer car vous devez exécuter les mêmes scripts en changeant simplement les noms de schéma. Encore une fois, ce n'est pas impossible, mais le but d'une application multi-locataire est de réduire les coûts pour le fournisseur de logiciels; les choses que vous demandez les poussent vers le haut.
Andy
2
Donc, si ma base de données solitaire, qui contient tous les tenans, tombe en panne ou est compromise ... Où va la réduction des coûts? Et que se passe-t-il lorsque chaque tenan a des besoins différents en termes de ressources et de performances? Et s'ils veulent avoir accès au stockage de données? ... Oui. Différents magasins de données par tenan et différents schémas est multitenacy. Ici, la stratégie commerciale et les services que nous voulons fournir au client sont plus importants que les détails de mise en œuvre. La multi-location est une fonctionnalité, une valeur différentielle. Plus les besoins des clients sont proches, mieux c'est.
Laiv
2
Cela pourrait vous intéresser softwareengineering.stackexchange.com/q/340531/222996
Laiv
4
Vous surestimez un peu l'aspect multi-base de données. Plusieurs bases de données ne sont qu'une décision de conception; plusieurs bases de données peuvent partager le même schéma et utiliser un script pour les mettre à jour simultanément. Toutes les applications multi-locataires doivent séparer les données de chaque client des autres clients; le mécanisme par lequel cela se fait est un détail de mise en œuvre, et dépend de facteurs comme le degré d'isolement souhaité, etc.
Robert Harvey
0

La multi-location est une architecture dans laquelle une seule instance d'une application logicielle dessert plusieurs clients. Chaque client est appelé locataire. Les locataires peuvent avoir la possibilité de personnaliser certaines parties de l'application, telles que la couleur de l'interface utilisateur (UI) ou les règles métier, mais ils ne peuvent pas personnaliser le code de l'application.

Dans une architecture multi-locataire, plusieurs instances d'une application fonctionnent dans un environnement partagé. Cette architecture peut fonctionner car chaque locataire est physiquement intégré, mais logiquement séparé; ce qui signifie qu'une seule instance du logiciel s'exécutera sur un serveur et servira ensuite plusieurs locataires. De cette façon, une application logicielle dans une architecture multi-locataire peut partager une instance dédiée de configurations, de données, de gestion des utilisateurs et d'autres propriétés.

Veuillez vous référer à https://whatis.techtarget.com/definition/multi-tenancy pour plus d'informations.

Comme dans votre cas, tous les membres de l'école qui s'abonnent à votre site seront autorisés sur la base des rôles de location et des autorisations et auront accès à leurs bases de données respectives via la même application. Une seule application connectée à plusieurs bases de données. Si vous créez un sous-domaine pour chaque école, cela le ramène au même modèle de location simple.

J'espère que cela répond à votre question.

Suraj Gauraje
la source
1
Bienvenue en génie logiciel ! Veuillez modifier votre réponse pour inclure une référence à sa source ; en ce moment c'est un cas de plagiat .
Glorfindel