Solutions SaaS - Quelle est la différence entre une architecture multi-instance et multi-tenant?

Rappel : Qu'est-ce que le SaaS ?

Avant d'aborder le sujet, il peut être intéressant de rappeler ce qu'est une solution SaaS : Software as a Service, ou le logiciel en tant que service. Il s'agit d'une méthode de distribution de logiciels qui implique généralement un modèle d'abonnement pour accéder à un produit, un outil ou un service.

À quelques exceptions près, ces logiciels sont hébergés dans le cloud et sont accessibles directement depuis un navigateur ou un appareil mobile, ce qui augmente considérablement l'accessibilité.

Nouveaux modes de consommation

Pour utiliser une application ou un logiciel, il fallait traditionnellement l'installer sur ses serveurs d'application. Pour ce faire, vous deviez avoir un ou plusieurs employés dans votre entreprise capables de gérer toutes les couches, de la mise en réseau à la maintenance de l'application elle-même. Surtout, il fallait souvent posséder l'infrastructure.

Puis sont venus les concepts d'hébergement IaaS (Infrastructure as a Service) et, un peu plus tard, PaaS (Platform as a Service). Ces nouvelles façons de consommer les ressources informatiques ont fourni une couche d'abstraction et de simplification pour déployer et installer nos logiciels ou ceux de nos clients. C'est dans cette lignée de nouvelles façons de consommer les commodités informatiques qu'est né le SaaS.

Le problème est alors simple : Permettre à mon client d' utiliser simplement mon logiciel.

Pas besoin de l'installer, de gérer les mises à jour ou de maintenir l'infrastructure.

Iaas - SaaS - PaaS

Architectures SaaS

Les solutions SaaS se reposent principalement sur deux types d'architectures : multi-instance d'un côté et multi-tenant de l'autre.
« Tenant » (locataire) fait référence à l'équipe ou à l'organisation de vos clients.

Nous ne les verrons pas ici, mais il existe aussi des architectures comme la mono-instance, la multi-instance avec base de données partagée ou encore la flex tenancy qui sont un peu moins courantes.

Multi-tenant vs multi-instance

Le but de cet article n'est pas de prendre le parti d'une architecture particulière, car chacune répond à des besoins différents. L'idée est plutôt de pouvoir comparer les deux types d'architecture, afin de choisir celle qui vous convient le mieux, en fonction de vos besoins et de ceux de vos clients.

Notez que le résultat ne sera pas très différent pour l'utilisateur final. Cependant, il variera considérablement dans la conception de l'architecture du système, des données et de l'accès, ainsi que dans la configuration et la gestion des utilisateurs.

Examinons donc les avantages et les inconvénients de chacun d'eux, en commençant par les architectures multi-instance.

Architecture multi-instance

Multi-instance

Dans une architecture multi-instance, plusieurs entreprises exécuteront leur propre instance distincte de l'application, avec leur propre base de données. Chaque entreprise aura donc accès à ses données séparément d'une autre.

Ce type d'architecture offre les avantages suivants :

  • Isolation des données
    Chaque organisation (ou équipe) possède sa propre base de données et sa propre infrastructure. Il en résulte un isolement total des données et offre une garantie de confidentialité pour vos clients. Les pirates auront donc moins intérêt à attaquer votre système car ils seront moins intéressés à récupérer l'accès d'un petit segment de vos données totales.
  • Évolutivité simplifiée
    Augmenter les ressources est plus facile pour un client car seule son infrastructure devra être modifiée. Nous pourrons allouer plus de CPU, de RAM ou de stockage en fonction de leurs besoins.
    Augmentation de la disponibilité globale :
    si une instance tombe en panne pour une raison quelconque, ce problème n'affectera pas tous vos clients.
  • Personnalisation
    Chacun de vos clients peut recevoir des personnalisations de votre SaaS (fonctionnalités dédiées, mises à jour programmées, etc…) que vous pourrez facilement transformer en arguments commerciaux.

Cependant, comme aucune architecture n'est parfaite, on notera tout de même les points négatifs suivants :

  • Plus compliqué à déployer et à maintenir
    Comme vous l'avez compris, chacun de vos clients possède sa propre infrastructure dédiée, vous devrez provisionner chaque infrastructure, la maintenir et la mettre à jour séparément.
  • Coût total plus élevé
    Ce choix d'architecture est moins rentable lorsqu'il s'agit de créer et de configurer chaque environnement comme la base de données ou l'application car les coûts ne sont pas partagés.

Architecture multi-tenant

Multi-tenant

Intéressons-nous maintenant à un autre type d'architecture, le multi-tenant. Ici, plusieurs entreprises utiliseront une seule instance de l'application (qui peut bien sûr être répliquée si nécessaire), avec une seule base de données. Cette architecture n'offre pas beaucoup de flexibilité mais simplifie le processus d'ajout de fonctionnalités et de correction des bogues de code.

Principaux avantages :

  • Meilleure rentabilité
    Utiliser la même infrastructure et les mêmes ressources vous coûtera moins cher car les ressources seront partagées entre vos clients.
  • Simplicité liée à l'infrastructure partagée
    Comme il n'y a qu'une seule infrastructure, elle est plus facile à entretenir.
  • Gain de temps
    Ce type d'architecture a l'avantage d'être plus simple à mettre en place qu'une architecture multi-instance. Cela facilite le développement de votre application SaaS et nécessite moins de temps et de ressources pour sa maintenance.
  • Toujours à jour
    Les mises à jour ne seront effectuées qu'une seule fois afin qu'elles profitent à tous vos utilisateurs.

Inconvénients :

  • Base de données partagée :
    Toute action affectant la base de données affectera tous les clients partagés. C'est donc au niveau applicatif qu'il faudra faire la séparation des données et donc l'équipe de développeurs empêchera l'exposition des données d'un client à l'autre, ce qui augmentera la complexité de la couche applicative. Toute faille de sécurité a un effet massif, car elle affectera tous les utilisateurs du système.
  • Moins personnalisable :
    Vous pourrez moins facilement personnaliser l'offre que vous proposez à vos clients. Il est toujours possible de verrouiller certaines fonctionnalités dans le code de l'application, mais là encore, cela peut entraîner une complexité liée au développement.

Quelle architecture choisir ?

Vous avez maintenant les cartes en main pour comprendre les différences entre les deux types d'architectures.

Pour résumer, si j'avais une problématique de "fast time-to-market" et besoin de développer rapidement une solution SaaS, je privilégierais plutôt une architecture multi-tenant car plus simple à mettre en place. En revanche, si j'avais besoin de développer une solution plus robuste et sécurisée, j'opterais plutôt pour une architecture multi-instance et bénéficierais d'une isolation totale des données.

Pour aller plus loin, construisez votre architecture avec Kubernetes

Kubernetes a l'avantage de vous permettre de construire une architecture multi-instance ainsi qu'une architecture multi-tenant. Vous pourrez alors orchestrer vos déploiements, mettre à jour, répliquer ou encore « self-scaling » votre infrastructure. Chez Scaleway, nous avons développé une offre Kubernetes Managed : Kubernetes Kapsule.

Créez des clusters Kubernetes en quelques secondes

👉 Créer un compte

Voyons quelques fonctionnalités incontournables :

  • Provisionnement automatique
    Pour une architecture multi-instance, les utilisateurs finaux demanderont finalement le déploiement de l'application dans Kubernetes. Pour ce faire, vous devez envisager d'intégrer votre application à l'API Kubernetes. Il n'est pas rare non plus de pré-provisionner des instances qui seront attribuées à vos clients au moment de la création du compte. Cela vous fera gagner les quelques minutes de provisionnement de l'infrastructure et rendra le parcours utilisateur plus agréable.
Kubernetes
  • Nom d'hôte personnalisable
    Dernièrement, les utilisateurs finaux attachent leur domaine aux applications. Kubernetes a mis en place des outils pour faciliter ce processus et même arriver au point où il devient self-service (utilisateurs appuyant sur un bouton pour faire pointer leur domaine vers le pod qui leur est attribué). Vous pouvez utiliser des contrôleurs d'entrée tels que Nginx Ingress pour y parvenir.
  • Mise à l'échelle automatique des nœuds
    Lorsque vos nœuds seront pleins, vous devrez certainement en provisionner davantage, afin que vos applications puissent continuer à fonctionner sans ralentir. Kubernetes Kapsule fournit une option pour vous permettre de dimensionner automatiquement vos nœuds.
Install Kubernetes
  • Mise à l'échelle de l'application
    Vous pourrez faire évoluer votre application (vers le haut ou vers le bas) en fonction de l'utilisation. Kubernetes fournit cette fonctionnalité "prête à l'emploi" avec des déclencheurs qui dimensionnent automatiquement les déploiements. Par exemple, en exécutant cette commande : kubectl autoscale deployment myapp —cpu-percent=70 —min=1 —max=10
    cette commande définira le myapp déploiement pour qu'il évolue jusqu'à 10 pods lorsque le pourcentage de CPU dépasse 70.
  • Portabilité
    Notre offre Kubernetes Kapsule est certifiée par la CNCF (Cloud Native Computing Foundation). Kubernetes Kapsule respecte donc les normes CNCF pour apporter sécurité, stabilité et robustesse. Cette garantie permet la conception d'applications et d'infrastructures hybrides et multi-cloud. Cela vous donne également la garantie que vous pouvez concevoir une architecture avec Kubernetes afin qu'elle puisse fonctionner avec n'importe quelle offre Kubernetes gérée sur le marché qui est certifiée.
CNCF

Kubernetes Kapsule est un excellent outil pour gérer votre infrastructure cloud. Si vous rencontrez des difficultés pour faire évoluer votre application, envisagez de passer à une architecture basée sur Kubernetes. Vous constaterez une augmentation significative de la productivité de vos DevOps dans les déploiements, la mise en cluster et la stabilité globale.

Cet article est extrait du Webinaire "Découvrez les avantages de Kubernetes pour héberger une solution SaaS". N'hésitez pas à le regarder sur Youtube :

Articles recommandés