web-dev-qa-db-fra.com

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

Selon la définition disponible en ligne est "Multi-tenancy est une architecture dans laquelle une seule instance d'une application logicielle sert 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 qui dépendent de leur base de données distincte. Je dois donc fournir schoolmanagement.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?.

13
Nomi Ali

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

Multi-tenancy 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, alors 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
8
Christophe

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é.

1
Andy