Case Study
Dal mono-tenant al multi-tenant: la trasformazione di un progetto Laravel
schedule3 min
calendar_today11 dicembre 2024
syncCaricamento...

Quando un software deve essere insieme personalizzabile e scalabile, il passaggio da un sistema mono-tenant a un'architettura multi-tenant è una sfida tecnica interessante. In questo articolo condivido l'esperienza della trasformazione di un progetto Laravel per due realtà specifiche, Valmontone e Barberino: l'uso di middleware per gestire database distinti e le complessità tecniche che questa scelta ha comportato.
Punto di partenza: un sistema mono-tenant
Il progetto iniziale era concepito come un sistema mono-tenant, con una configurazione standard di Laravel che utilizzava un unico database. Questa architettura funzionava, ma era limitante rispetto alla necessità di gestire due entità distinte, ciascuna con il proprio database e le proprie configurazioni.
L'idea multi-tenant
L'obiettivo era creare un sistema multi-tenant che permettesse a Valmontone e Barberino di condividere la stessa base di codice, garantendo allo stesso tempo l'isolamento totale dei loro dati. La soluzione individuata è stata l'uso di middleware personalizzati per indirizzare ogni richiesta al database corretto in base al tenant.
Tecnologie e tecniche utilizzate
- Middleware multi-tenant: La chiave del progetto è stata la creazione di un middleware in grado di intercettare ogni richiesta HTTP, identificare il tenant attivo (in base al dominio o a un parametro specifico) e configurare dinamicamente la connessione al database corretto.
- Gestione delle code e dei comandi: Una delle sfide maggiori è stata far funzionare correttamente gli altri sistemi di Laravel, come le code, i comandi artisan e i task pianificati. Ogni operazione doveva rispettare il contesto del tenant attivo, e questo ha richiesto un'integrazione personalizzata.
- Database relazionali: Il progetto ha utilizzato database relazionali separati per ciascun tenant, garantendo l'isolamento completo dei dati. La configurazione dinamica delle connessioni è stata gestita con il metodo
config()di Laravel, che permette di sovrascrivere al volo i parametri di connessione. - Test multi-tenant: Per garantire la qualità del sistema sono stati sviluppati test automatizzati specifici, che verificano che tutte le funzionalità si comportino correttamente in contesti multi-tenant.
Sfide affrontate e soluzioni
- Integrazione con le code e i comandi Artisan:
- Le code di Laravel non rispettano automaticamente il contesto del tenant. Il problema è stato risolto implementando job personalizzati che ereditano le informazioni del tenant e le reiniettano nel contesto durante l'esecuzione.
- I comandi Artisan sono stati adattati per accettare parametri aggiuntivi, che permettono di specificare il tenant.
- Prestazioni:
- Il middleware aggiunge un overhead alle richieste, quindi è stato necessario ottimizzare la logica di routing e la gestione delle connessioni ai database.
- Manutenzione e scalabilità:
- Per semplificare la manutenzione, la logica multi-tenant è stata centralizzata e documentata con cura, così che il sistema resti scalabile quando in futuro si aggiungeranno nuovi tenant.
- Task pianificati:
- Il sistema di scheduling è stato modificato per eseguire i task in un ciclo su tutti i tenant, garantendo che ogni operazione fosse eseguita nel contesto corretto.
I vantaggi dell'architettura multi-tenant
La trasformazione ha portato diversi benefici:
- Efficienza: L'uso di un'unica base di codice ha semplificato lo sviluppo e la manutenzione.
- Isolamento: Ogni tenant ha un database indipendente, a garanzia di sicurezza e privacy.
- Scalabilità: La struttura è pronta a supportare nuovi tenant senza modifiche significative.
Conclusione
La migrazione da un sistema mono-tenant a uno multi-tenant è stata l'occasione per affrontare problemi tecnici complessi e mettere in pratica soluzioni nuove. Grazie a Laravel e alle sue funzionalità è stato possibile costruire un sistema che bilancia flessibilità, isolamento e scalabilità, e che offre basi solide per le espansioni future. Questa esperienza mostra come le tecnologie giuste, unite a una progettazione attenta, permettano di trasformare le difficoltà in occasioni di crescita.
forum
Devi servire più clienti con lo stesso software? Chiedimi come passare al multi-tenant.
Ti rispondiamo subito e, se vuoi, prepariamo il preventivo per il tuo caso.