SaaS multi-tenant : architecturer l'isolation des données client

Le multi-tenancy est la capacité d'un SaaS à servir plusieurs clients (tenants) depuis une seule instance, en garantissant que les données de chaque client restent isolées des autres. C'est l'un des sujets d'architecture les plus structurants d'un projet SaaS.

Le choix du modèle de tenancy a des implications sur la sécurité, les performances, les coûts d'infrastructure et la complexité de maintenance pour les années à venir.

Les trois modèles d'architecture multi-tenant

Shared database, shared schema : tous les tenants partagent la même base de données et les mêmes tables. L'isolation est assurée par une colonne `tenant_id` sur chaque table. C'est le modèle le moins coûteux mais qui exige une rigueur maximale dans le code pour éviter les fuites de données entre tenants.

Shared database, isolated schema : chaque tenant a son propre schéma dans la même base. Plus d'isolation, mais des coûts de gestion de schémas qui augmentent avec le nombre de tenants.

Database per tenant : chaque tenant a sa propre base de données. Isolation maximale, mais coûts d'infrastructure qui croissent linéairement avec le nombre de tenants. Adapté aux clients enterprise avec des exigences contractuelles fortes.

Sécurité : éviter les fuites de données inter-tenant

Dans un modèle shared schema, chaque requête à la base de données doit filtrer par `tenant_id`. La mise en place d'un middleware qui injecte automatiquement ce filtre sur toutes les requêtes (Row Level Security sous PostgreSQL, ou middleware applicatif) est la protection principale contre les fuites accidentelles.

Les tests de sécurité multi-tenant doivent vérifier explicitement qu'un utilisateur d'un tenant ne peut jamais accéder aux données d'un autre tenant, même en manipulant les paramètres de requête.

Onboarding et provisioning d'un nouveau tenant

Le processus de création d'un nouveau tenant doit être automatisé : inscription, création de l'espace tenant, configuration initiale, envoi des emails de bienvenue, et démarrage de l'essai ou de l'abonnement. Ce processus doit fonctionner sans intervention manuelle dès la v1.

En modèle isolated schema ou database per tenant, la création automatisée du schéma ou de la base inclut l'exécution des migrations initiales. Ce processus doit être idempotent et gérer les erreurs proprement.

Performances dans un contexte multi-tenant

Dans un modèle shared schema, les index sur `tenant_id` + les colonnes de filtrage courantes sont critiques pour les performances. Une requête qui ne filtre pas par `tenant_id` en premier peut scanner toute la table sur un SaaS avec des milliers de tenants.

La surveillance des slow queries par tenant permet d'identifier les tenants dont le volume de données est disproportionné et qui impactent les performances des autres. Un plan de quotas ou de migration vers un schéma isolé peut être nécessaire pour ces cas extrêmes.

Questions fréquentes

Quel modèle de tenancy choisir pour un SaaS en démarrage ?

Shared database, shared schema est le bon choix pour démarrer. Il est le moins coûteux et le plus simple à maintenir. La migration vers un modèle plus isolé est possible si les contraintes clients l'exigent, mais elle est rare avant d'atteindre une taille significative.

Row Level Security PostgreSQL est-il suffisant ?

C'est une excellente couche de sécurité supplémentaire. Combiné à des politiques RLS bien définies, il garantit l'isolation au niveau de la base de données. Il n'est pas un substitut à une gestion correcte des `tenant_id` dans le code applicatif.

Comment gérer les migrations de schéma sur un SaaS multi-tenant ?

En shared schema, une migration s'applique à tous les tenants simultanément. En schéma isolé, les migrations doivent être appliquées à chaque schéma, soit en parallèle, soit progressivement. Des outils comme Flyway ou Liquibase gèrent cela nativement.

Architecting votre SaaS multi-tenant

Décrivez votre contexte : nous revenons vers vous rapidement.

Votre besoin (optionnel)

Délai souhaité

Formulaire protégé par anti-spam. Réf. page : saas-multi-tenant · build