Le multi-tenancy (ou architecture multi-locataire) est un modèle architectural dans lequel une seule instance d'application sert plusieurs clients (appelés « tenants »). Chaque tenant dispose de son propre espace de données isolé, tout en partageant le même code applicatif et la même infrastructure.
Trois modèles principaux existent : base de données partagée avec discrimination par colonne (le plus économique), schéma séparé par tenant (bon compromis isolation/coût), et base de données séparée par tenant (isolation maximale). Le choix dépend des exigences de sécurité, des contraintes réglementaires et du volume de données par client.
Les défis techniques du multi-tenant incluent : l'isolation stricte des données (un tenant ne doit jamais voir les données d'un autre), la personnalisation par tenant (domaine, branding, configuration), la gestion des migrations de schéma, le monitoring par tenant et la scalabilité. Dans Symfony, des filtres Doctrine et des listeners permettent d'implémenter le filtrage automatique des données par tenant de manière transparente.