ThinkPink Studio Logo
ThinkPink Studio
BlogShopAcademy
MULTITENANT
SAAS
LARAVEL
ARCHITETTURASOFTWARE
ISOLAMENTODATI
GLOBALSCOPES
SVILUPPOBACKEND
CTO
DEBITOTECNICO
CYBERSECURITY
PMI
SCALABILITÀ

Multi-Tenant, la madre di tutti i casini (o la chiave per non andare a gambe all'aria)

TP

ThinkPink Studio

12 maggio 2026

Multi-Tenant, la madre di tutti i casini (o la chiave per non andare a gambe all'aria)

Ore tre del mattino. Il telefono che vibra è quello del cliente più grosso. L'incubo è servito.

C'è una scena che ogni CTO o lead developer ha vissuto, o che teme come la peste: un cliente inferocito che al telefono ti urla di vedere i dati di un altro. Panico. Non è un film, è il risultato quasi inevitabile di un'architettura SaaS multi-tenant tirata su in fretta e furia. Nel 2026, con un mercato che vale una vagonata di miliardi e il 90% del software venduto come servizio, pensare che "a me non succederà" non è ottimismo, è idiozia. Qui in ThinkPink, tra Rosignano e Kampala, di progetti promettenti annegati nel debito tecnico per colpa di un isolamento dati fatto coi piedi ne abbiamo visti fin troppi.

Mettere in piedi un SaaS B2B non è come montare un mobile dell'IKEA. La prima decisione, quella che ti marchia a fuoco per gli anni a venire, è come gestire i dati dei clienti. Database separati? Bello, pulito, un inferno da mantenere. Immagina di dover lanciare una migrazione per una nuova feature su 500 database diversi. Ci vuole un team dedicato solo a quello. L'alternativa, un database unico con isolamento logico, è la strada più sensata per chi non vuole buttare soldi e tempo. Un comando, una migrazione. I costi si abbassano, i backup diventano una cosa umana.

Il patto col diavolo: l'architettura condivisa e i suoi fantasmi

Il concetto di multi-tenancy è semplice: un'applicazione, tanti clienti. Tutti usano la stessa roba, ma ognuno deve vivere nel suo piccolo fortino di dati, senza vedere cosa fa il vicino. Facile a dirsi. Il problema è che basta una query scritta male, una distrazione del dev più stanco, e il castello di carte crolla. Le vulnerabilità negli ambienti condivisi sono il pane quotidiano degli hacker. E una violazione dei dati non è solo una multa del GDPR – che già da sola può far chiudere una PMI italiana – ma è una pugnalata alla schiena della tua reputazione. La fiducia è l'unica moneta che conta davvero.

Laravel e l'arte di non fidarsi dell'essere umano

L'essere umano sbaglia. Si distrae. Si dimentica un `where`. È un dato di fatto. L'unica soluzione è togliergli la possibilità di sbagliare. Automatizzare. È qui che Laravel, se usato con la testa, diventa il tuo migliore amico. La strategia per una multi-tenancy a prova di bomba si regge su due gambe: un TenantContext e i cari, vecchi Global Scopes.

Il TenantContext è una specie di post-it che, ad ogni richiesta che arriva al server, si appiccica addosso l'ID del cliente che la sta facendo. Un Middleware (che potremmo chiamare il "buttafuori") si assicura che solo chi ha il biglietto giusto possa entrare e dice a tutta l'applicazione: "Ok, per i prossimi millisecondi, lavoriamo solo per Tizio".

La vera furbata, però, è il trait BelongsToTenant. Lo appiccichi a tutti i modelli Eloquent che gestiscono dati sensibili (Clienti, Fatture, Progetti) e questo, come un guardiano silenzioso, fa due cose in automatico:

  1. In lettura, mette i paraocchi: Qualsiasi query su quel modello – una `find`, una `all`, una `where` complicatissima – viene filtrata *d'ufficio* con l'ID del tenant. Il programmatore non deve più ricordarsi di aggiungere `->where('tenant_id', ...)`. Mai più. Un problema in meno, centinaia di bug evitati.
  2. In scrittura, mette il timbro: Quando crei un nuovo dato, se ti sei scordato di specificare a chi appartiene, ci pensa lui. Prende l'ID del tenant dal contesto e lo infila nel campo `tenant_id`. Fine delle dimenticanze.

Questo approccio, che i nostri ragazzi a Kampala hanno affinato fino alla nausea, non solo ti para le spalle, ma lascia i developer liberi di pensare a cose più utili che scrivere query ripetitive. E rende persino più semplice e sicura la funzione di "impersonificazione", quella che permette a un admin di vedere l'applicazione con gli occhi del cliente, senza rischiare di fare disastri.

La realtà del campo di battaglia: dettagli che fanno la differenza

Il mercato SaaS, nel 2026, è una giungla. Scalabilità e sicurezza non sono più un "plus", sono il minimo sindacale. Normative come il GDPR sono diventate armi nelle mani di utenti e concorrenti. Per non andare a gambe all'aria, devi curare dei dettagli che il 90% dei tutorial online ignora:

  • Indici Unici Compositi: Se in una tabella hai un campo che deve essere unico (tipo, un indirizzo email), ricorda che deve essere unico *per quel tenant*. L'indice sul database deve essere quindi su `(tenant_id, email)`, altrimenti due clienti diversi non potranno mai usare lo stesso indirizzo. Un classico errore da principianti che ti fa bestemmiare in produzione.
  • **UUID, non ID numerici:** Usare un ID intero e progressivo per i tenant (1, 2, 3...) è come lasciare la porta di casa aperta. Permette a chiunque di indovinare gli ID degli altri clienti. Usa gli UUID. Sono brutti, lunghi, ma ti salvano la pelle.
  • **Testa tutto, come se non ci fosse un domani:** Non basta sperare che i Global Scope funzionino. Devi scrivere test che *provano a romperli*. Un test chiamato `test_un_cliente_non_deve_vedere_i_dati_di_un_altro` non è una finezza, è la tua polizza sulla vita. La speranza, lo diciamo sempre, non è una strategia.
  • **Le performance, queste sconosciute:** Quando i tenant diventano migliaia, un database progettato male diventa una palla al piede. L'indicizzazione delle colonne giuste, specialmente quelle composite con il `tenant_id`, e una strategia di cache che tenga conto del tenant, sono vitali per non far addormentare gli utenti davanti a una rotellina che gira.

Molti ci chiedono: meglio un pacchetto pronto come `spatie/laravel-multitenancy` o farsela in casa? I pacchetti sono ottimi, ti fanno risparmiare tempo all'inizio. Ma quando il gioco si fa duro e arrivano le richieste strane del cliente, avere una soluzione tua, che conosci come le tue tasche, ti dà un controllo e una flessibilità impagabili. A Rosignano abbiamo visto clienti con esigenze talmente specifiche che nessun pacchetto standard avrebbe potuto gestire. La scelta dipende da quanta strada devi fare e da quanto è preparato chi guida.

Dalla Toscana all'Uganda: trasformare la paranoia in un vantaggio competitivo

Le PMI italiane sono strane. Accelerano sulla digitalizzazione ma quando si tratta di investire seriamente in architetture solide, tirano il freno a mano. Vedono il SaaS come un modo per risparmiare, non per costruire valore. Errore mortale. Un'architettura multi-tenant ben fatta non è un costo, è un passaporto per scalare a livello globale. Abbassa i costi di gestione nel lungo periodo, semplifica la vita e, soprattutto, costruisce quel muro di fiducia con i clienti che ti permette di vendere non solo un software, ma la tranquillità.

Il futuro che ci aspetta è fatto di AI che prendono decisioni, di sistemi che si auto-configurano. Integrare questa roba su un'architettura che fa acqua da tutte le parti non è innovazione, è suicidio. Senza un isolamento dei dati a prova di bomba, ogni nuova tecnologia che aggiungi è solo un nuovo potenziale punto di rottura.

Noi di ThinkPink abbiamo imparato sul campo, tra i capannoni di Rosignano e il caos di Kampala, che la resilienza non è una parola da riempire in un post su LinkedIn. È il risultato di una sana e costante paranoia. Costruiamo software che funziona, che dura e che, soprattutto, protegge i dati. Perché i nostri clienti, la notte, devono poter dormire sonni tranquilli. E anche noi.

Il tuo SaaS ti tiene sveglio la notte? Parliamone.

Torna al blog

Ultimo aggiornamento: