Dans les discussions sur les architectures logicielles, il est souvent question de « tenant ». Que vous souhaitiez acheter une application Cloud ou créer une plateforme logicielle interne, vous devrez inévitablement choisir entre un environnement multitenant et un environnement monotenant. Mais que signifient réellement ces termes ? Quels sont les avantages de l’un par rapport à l’autre ? Quelle solution est la plus difficile à mettre en œuvre ? Découvrons-le.
Les applications logicielles répondent généralement aux besoins de différents clients ou groupes d’utilisateurs. Chaque client/groupe d’utilisateurs peut être considéré comme un tenant. Une architecture multitenant permet à un seul et même déploiement de logiciel de répondre aux besoins de plusieurs tenants. Les ressources sous-jacentes sont partagées entre tous les tenants, mais chaque tenant se voit assuré du respect de la confidentialité et de certaines personnalisations de configuration.
En revanche, une architecture monotenant ne prend en charge qu’un seul tenant par instance. Chaque tenant dispose d’un ensemble de ressources distinctes et dédiées. L’environnement monotenant permet également aux fournisseurs de logiciels de proposer des produits sur mesure, basés sur les besoins personnalisés des clients.
Par exemple, dans une application web multitenant, le même serveur web traite les demandes de tous les clients. La même base de données est utilisée pour stocker les données de tous les clients. Toutefois, les clients peuvent personnaliser les parties de l’application qui sont configurables, par exemple l’apparence, le mode, etc. Ils ne peuvent pas demander de personnalisation du code source.
On peut comparer un déploiement multitenant à un immeuble d’habitation. Le même immeuble d’habitation fournit le logement, la sécurité et les commodités à différents locataires, par le biais d’appartements indépendants. De la même manière, une instance unique d’une application logicielle répond aux besoins de différents clients, sans jamais compromettre la confidentialité ni la prestation de services de quiconque.
Tout comme un immeuble d’habitation attribue une unité de logement distincte (appartement) à chaque locataire, une application multitenant peut réserver des ressources distinctes pour chaque client. Par exemple, une application peut engendrer différents processus pour traiter les demandes de différents clients. Elle peut également créer des tables différentes pour des clients différents, au sein d’une même base de données.
Les applications multitenant sont faciles à déployer. Vous ne devez configurer qu’une seule instance d’une application logicielle, qui sera en mesure de répondre aux besoins de tous vos clients.
Les architectures multitenant permettent une utilisation efficace des ressources de calcul et matérielles.
Les coûts de possession et de maintenance sont partagés entre plusieurs clients, ce qui réduit les dépenses globales.
L’ajout de nouveaux clients ne nécessite généralement que des changements de configuration, et non le provisioning de nouvelles ressources.
Une instance logicielle unique est beaucoup plus facile à gérer, à sécuriser et à optimiser.
La conception et le développement d’une architecture multitenant efficace et pérenne peuvent s’avérer difficiles.
En cas de violation, les données de tous les clients risquent d’être compromises.
La séparation complète des ressources permet d’obtenir les meilleures performances et le meilleur débit possible.
L’isolement des données des clients réduit le risque d’une cyberattaque touchant plusieurs clients.
Chaque client a la possibilité de personnaliser le produit, dans toute la mesure du possible.
La migration des applications monotenant est plus facile, car elle ne concerne que les données d’un seul client.
Comme il y a autant d’instances logicielles que de clients, les ressources sont souvent sous-utilisées.
Le déploiement des applications monotenant prend plus de temps, car chaque client dispose d’une instance distincte.
Le coût de possession et de maintenance est beaucoup plus élevé.
L’ajout d’un nouveau client nécessite l’ajout d’une nouvelle instance, ce qui implique plus de ressources et plus de coûts.
La maintenance, la sécurisation et l’optimisation de plusieurs instances logicielles sont difficiles et nécessitent une équipe beaucoup plus importante.
Si vous créez une application logicielle, utilisez un environnement multitenant dans les scénarios suivants :
Vous souhaitez prendre en charge plusieurs clients dans un environnement Cloud rentable.
Vous ne souhaitez pas d’encombrement infrastructurel important.
Vous ne disposez pas d’une équipe importante pour le déploiement, la maintenance et le support.
Vous souhaitez une meilleure extensibilité.
Vous disposez d’une équipe de développeurs et d’architectes expérimentés.
Si vous achetez une application logicielle, choisissez un environnement multitenant dans les scénarios suivants :
Votre organisation n’interdit pas le partage des ressources ni des données.
Vous pouvez vous contenter des personnalisations de la configuration du produit et de ses fonctionnalités existantes.
Vous voulez atteindre le rapport idéal entre les performances et les coûts.
Si vous créez une application logicielle, utilisez un environnement monotenant dans les scénarios suivants :
Vous disposez d’une équipe importante pour le déploiement, la maintenance et le support.
Vos clients sont peu nombreux.
Vous ne voyez pas d’inconvénient à ce que l’encombrement infrastructurel soit important.
Vous n’avez pas de restrictions budgétaires.
Vous souhaitez proposer des performances et un débit inégalés.
Vous ne disposez pas d’une équipe de développeurs et d’architectes expérimentés.
Si vous achetez une application logicielle, choisissez un environnement monotenant dans les scénarios suivants :
Vous travaillez dans une entreprise dont la stratégie n’autorise pas le partage des ressources ni des données.
Vous souhaitez transformer complètement le produit en fonction de vos besoins personnalisés.
Vous acceptez de payer un montant beaucoup plus élevé pour des performances légèrement supérieures.
Même si les deux modèles architecturaux ont leurs avantages et leurs inconvénients, une solution multitenant est le meilleur choix dans la plupart des scénarios. Si elle est bien faite, elle vous permet de créer une plateforme pérenne qui optimise l’utilisation des ressources et qui est beaucoup plus facile à gérer.
Une solution multitenant est également une approche qui donne la priorité au Cloud. La plupart des plateformes Cloud sont elles-mêmes construites sur des architectures multitenant. Elles utilisent les mêmes ressources matérielles sous-jacentes pour prendre en charge des centaines de milliers de clients.
Cela étant dit, si les règles de sécurité de votre secteur d’activité ou de votre organisation sont strictes (par exemple, dans le domaine de la santé ou de la finance), une architecture monotenant peut mieux répondre à vos besoins.