Présentation
Une architecture multi-client est une architecture logicielle qui permet de servir plusieurs groupes d'utilisateurs différents à partir d'une instance logicielle unique. Les offres SaaS (Software-as-a-Service) sont un exemple d'architecture multi-client.
Dans le domaine du cloud computing, ce terme désigne également un hébergement mutualisé, dans lequel les ressources du serveur sont réparties entre différents clients.
L'architecture multi-client s'oppose au modèle de client unique, selon lequel une instance logicielle ou un système informatique fournit ses services à un seul utilisateur final ou groupe d'utilisateurs.
En général, les clients peuvent personnaliser les applications multi-clients jusqu'à un certain point, par exemple la disposition et l'aspect de l'interface ou les niveaux d'autorisation et de restriction à appliquer aux utilisateurs.
De la technique du temps partagé au SaaS
Le principe d'architecture multi-client existe depuis plusieurs dizaines d'années. Dans les années 1960, les universités qui disposaient de mainframes puissants et onéreux ont développé des logiciels de temps partagé pour permettre à plusieurs utilisateurs d'accéder à un même ordinateur en même temps.
Si le cloud computing existe aujourd'hui, c'est grâce à ce concept qui est resté. Un cloud public répartit un ensemble de ressources partagées (mémoire et puissance de traitement) entre plusieurs clients. Les données et les charges de travail de chaque client sont isolées, même si elles sont exécutées sur une même machine physique ou un même groupe de machines.
C'est en appliquant ce principe à l'architecture logicielle qu'est né le concept plus moderne de SaaS. Le fournisseur exécute l'instance unique de l'application et fournit un accès à chacun de ses clients. Les données de chaque utilisateur restent isolées, même s'il accède au même logiciel que les autres utilisateurs.
Lorsqu'on fait référence à une plateforme d'orchestration des conteneurs comme Kubernetes, le terme d'architecture multi-client désigne généralement un cluster unique qui sert plusieurs projets. Le cluster est configuré de sorte de chaque projet s'exécute indépendamment des autres.
Architecture multi-client et cloud computing
Comme nous l'avons vu plus haut, l'architecture multi-client est une facette importante du cloud computing, car elle permet à une application logicielle unique de servir plusieurs clients. Si les clouds sont considérés comme des PaaS, les architectures multi-clients sont plutôt associées aux applications SaaS.
Les fournisseurs de cloud mettent à disposition des utilisateurs la plateforme et l'infrastructure informatique sous-jacente nécessaire au cloud computing, et ce, à partir d'un ensemble de ressources qui sont ensuite allouées à plusieurs utilisateurs (ou clients).
L'architecture cloud indique la manière dont les composants et fonctionnalités nécessaires à la conception d'un cloud sont connectés afin de fournir une plateforme en ligne sur laquelle les applications s'exécuteront.
Pour concevoir cette architecture, il faut ajouter des niveaux de développement supplémentaires pour intégrer la conteneurisation, l'orchestration, les API, le routage, la sécurité, la gestion et des logiciels d'automatisation.
Architecture de cloud public : environnement cloud créé à partir de ressources qui n'appartiennent pas à l'utilisateur final et qui peuvent être redistribuées à d'autres clients.
Architecture de cloud privé : généralement décrite comme un environnement cloud réservé à l'utilisateur final, la plupart du temps à l'intérieur du pare-feu et parfois sur site.
Avantages d'une architecture multi-client
Une architecture multi-client présente toute une série d'avantages, qui expliquent la popularité du cloud computing.
L'architecture multi-client permet de réaliser des économies. L'informatique est moins coûteuse à grande échelle. L'architecture multi-client permet de consolider et d'allouer les ressources de manière efficace et en fin de compte de réduire les coûts d'exploitation.Il est souvent plus économique pour un utilisateur individuel de payer pour avoir accès à un service cloud ou à une application SaaS, que d'utiliser du matériel et un logiciel réservés à un client unique.
L'architecture multi-client apporte de la flexibilité. Si vous investissez dans vos propres logiciel et matériel, ils peuvent atteindre leurs limites en cas de forte demande ou rester inactifs quand la demande diminue. À l'inverse, un cloud multi-client est capable d'allouer un ensemble de ressources aux utilisateurs en fonction de leurs besoins et de la façon dont ils évoluent. En tant que client d'un fournisseur de cloud public, vous bénéficiez d'un surcroît de capacité quand vous en avez besoin, que vous ne payez pas le reste du temps.
L'architecture multi-client est gage d'efficacité. Les utilisateurs individuels ont moins besoin de gérer l'infrastructure, les mises à jour et la maintenance. Chaque client peut compter sur un fournisseur de cloud central, plutôt que sur ses propres équipes, pour traiter ces tâches courantes.
Vous ne savez pas encore tout sur les environnements cloud…
Quand privilégier l'architecture à client unique ?
Malgré les avantages de l'architecture multi-client, certains cas d'utilisation sont mieux adaptés aux systèmes informatiques à client unique, notamment dans les clouds privés et les datacenters privés,
par exemple, la sécurisation des applications qui traitent des données extrêmement sensibles, pour ne citer qu'elles. Les environnements de cloud public et les solutions SaaS sont conçus pour isoler les données et les charges de travail, et ils ont fait leurs preuves. Néanmoins, lors de tests contrôlés, des chercheurs ont découvert des vulnérabilités qui pourraient théoriquement mener à des attaques entre clients au sein des environnements cloud.
En pratique, ces risques sont relativement minimes. Selon un rapport sur les vulnérabilités du cloud publié en 2020 par la NSA, l'agence nationale de sécurité des États-Unis, les vulnérabilités de l'architecture multi-client sont rares et requièrent un haut degré de sophistication. Depuis la publication de ce rapport, aucune attaque entre clients n'a été signalée chez les grands fournisseurs de cloud public. La NSA estime que ces risques sont plus faibles que ceux liés à un mauvais contrôle des accès et aux erreurs de configuration.
Environnements multi-clients sous Linux
Si vous souhaitez mettre en place une architecture multi-client, vous devez isoler les environnements avec des machines virtuelles ou des conteneurs.
Si vous optez pour des machines virtuelles, un hyperviseur met en route des machines invitées qui utilisent un système d'exploitation, des applications et des dépendances propres. L'hyperviseur veille également à ce que les utilisateurs soient isolés les uns des autres.
Comparés aux machines virtuelles, les conteneurs offrent un modèle plus léger, flexible et facile à mettre à l'échelle. Les différents conteneurs sont exécutés à partir d'un noyau et d'un environnement d'exécution communs, et plusieurs applications sont hébergées sur un même hôte, ce qui simplifie les déploiements multi-clients. Contrairement aux machines virtuelles, qui possèdent chacune leur propre noyau, les applications exécutées dans des conteneurs partagent le même noyau, y compris entre plusieurs clients.
Sous Linux®, les espaces de noms permettent à plusieurs conteneurs d'utiliser la même ressource simultanément sans créer de conflit. La sécurisation d'un conteneur s'apparente à celle de n'importe quel processus exécuté.
Si vous utilisez Kubernetes pour l'orchestration des conteneurs, il est possible de mettre en place des environnements multi-clients à l'aide d'un même cluster Kubernetes. Vous pouvez alors isoler les clients dans leur propre espace de noms et créer des politiques pour faire respecter cet isolement.