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.