Un SaaS multi-tenant sert plusieurs clients (les « tenants ») avec une seule application. La question qui se pose dès le départ : où ranger les données de chacun ?
Option 1 : une base partagée
Toutes les tables contiennent une colonne tenant_id, et chaque requête est filtrée sur le client courant. Avec Laravel, un global scope appliqué automatiquement évite les oublis.
protected static function booted(): void
{
static::addGlobalScope('tenant', function (Builder $query) {
$query->where('tenant_id', tenant()->id);
});
}
Avantages
- Une seule base à sauvegarder, migrer et surveiller.
- Coût d'hébergement faible, idéal pour démarrer.
- Statistiques globales faciles à produire.
Points de vigilance
- Un oubli de filtre peut exposer les données d'un autre client : les tests sont indispensables.
- Un client très volumineux peut ralentir les autres.
Option 2 : une base par client
Chaque client possède sa propre base. L'application choisit la connexion au début de chaque requête, souvent à partir du sous-domaine.
Avantages
- Isolation forte des données, appréciée des clients exigeants (santé, finance, institutions).
- Sauvegarde et restauration client par client.
- Possibilité d'héberger un client dans une région précise.
Points de vigilance
- Les migrations doivent être exécutées sur toutes les bases.
- Plus de bases à surveiller, donc une exploitation plus lourde.
Comment choisir ?
- Vous démarrez, vos clients sont des PME : base partagée, avec des tests d'isolation solides.
- Vos clients exigent une séparation contractuelle des données : base par client.
- Entre les deux : commencez partagé, et prévoyez dès le départ une couche d'accès aux données qui permettra de migrer les gros clients vers une base dédiée.
Le point commun : l'authentification
Quel que soit le choix, un SaaS sérieux a besoin d'une authentification unique (SSO) et d'une gestion fine des rôles (RBAC), propres à chaque client. C'est souvent là que se joue la sécurité réelle de la plateforme.
Le bon choix n'est pas le plus élégant techniquement : c'est celui qui correspond à vos clients et à votre capacité d'exploitation.
Vous concevez un SaaS ? Je peux vous aider à poser une architecture saine dès le premier jour.
Mahoulolo SEBIO