Application multi-tenant : quel modèle d'isolation ?
Concevoir une application SaaS impose tôt une décision structurante : comment isoler les données de chaque client. Cet article compare les quatre modèles multi-tenant, du plus mutualisé au plus cloisonné — base partagée avec discriminant tenant_id, schéma par client, base par client (silo) et instance par client. Pour chacun, les vrais arbitrages : cloisonnement et risque de fuite, RGPD, coût d'infrastructure et de migrations, noisy neighbor, personnalisation et passage à l'échelle. Avec une grille de décision, le côté concret côté Symfony (résolution du tenant par le host, filtre Doctrine en pooled, bascule de connexion DBAL en silo), un rappel que l'isolation ne s'arrête pas à la base mais s'étend aux fichiers et au stockage objet, au cache, à la recherche et aux files de messages, trois cas terrain anonymisés positionnés sur l'axe d'isolation, et un parti pris assumé : l'isolation par construction dès que les données sont sensibles.