Multi-tenancy deriva dalla parola tenant (inquilino) ed indica sostanzialmente un principio nell’architettura del software o dell’hardware in cui una singola istanza di un software, eseguita da server, può essere utilizzata da più inquilini o tenant.
La multi-tenancy rappresenta una conseguenza fondamentale della virtualizzazione, grazie alla quale è possibile attuare un approccio multi-tenant sulle risorse infrastrutturali, in quanto si assiste alla creazione di ambienti virtuali logicamente separati sui medesimi componenti fisici condivisi – l’aggettivo virtuale intende evidenziare come tale tecnologia permetta di costruire una separazione logica delle risorse.
Bisogna tuttavia prestare attenzione a non confondere il concetto di multi-tenancy con quello di architettura multi-istanza: nella prima l’applicazione è infatti progettata per partizionare virtualmente i propri dati e la propria configurazione fornendo a ciascun tenant l’utilizzo di una delle istanze applicative personalizzate; nella seconda abbiamo invece istanze software separate o sistemi hardware separati resi disponibili a differenti organizzazioni.
Alcuni esempi
Sebbene sia ormai chiaro che il concetto si associa alla condivisione di risorse infrastrutturali, è bene precisare che le risorse possono divenire multi-tenant a differenti livelli. Sulla piattaforma Amazon, la condivisione di una stessa macchina tra più utenti è un classico esempio multi-tenant a livello hardware; la condivisione di dati nelle stesse tabelle del database (Force.com di Salesforce) è invece un esempio multi-tenant a livello di database.
La prima (AWS), per evitare che eterogenee attività entrino in conflitto, si affida ad un hypervisor. La seconda (Salesforce) ad una query re-writer ed ai metadati. L’approccio multi-tenancy è possibile in questo caso solo grazie ai metadati – relativi alle funzioni comuni del programma ed alla configurazioni dei diversi utenti. In questo modo i singoli componenti vengono adattati in “tempo reale” garantendo sicurezza, affidabilità, velocità usabilità e rapidità delle applicazioni – requisiti indispensabili per l’attuazione dell’approccio multi-tenant stesso.
Se al livello più alto la multi-tenancy permette di condividere un database, non consente tuttavia di migliorare automaticamente la collaborazione tra tenant o di condividere i dati tra i vari “inquilini”. Per esigenze simili occorre affidarsi invecead architetture SOA (Service Oriented Architecture) le cui peculiarità, ben diverse da quelle delle controparti AWS (hypervisor isolation) e Salesforce (database isolation), offrono la possibilità di esplicitare membership, creare gruppi di lavoro etc.
Multi-tenancy: problematiche
In generale occorre tenere a mente che l’approccio multi-tenancy, in base alle esigenze dell’utenze ed ai casi di utilizzo, può presentare anche delle problematiche inerenti:
- sicurezza. I sistemi di sicurezza odierni offrono un elevato livello di protezione ma è chiaro che non esiste un perimetro di difesa invalicabile. Nel caso in cui un hacker riuscisse ad accedere ad un servizio database multi-tenant avrebbe a disposizione i dati di tutti i clienti – in quanto ospitati nel medesimo DB. Anche un semplice errore umano potrebbe esporre i dati a potenziali rischi ma si tratta di imprevisti che riguardano teoricamente qualsiasi scenario;
- flessibilità del servizio. Pretendere che un determinato servizio sia eseguito da infrastrutture presenti solo su territorio nazionale sarebbe ad esempio una richiesta difficile da ottenere, così come l’evitare che i propri dati siano archiviati nello stesso server in cui risiedono i dati di un competitor. Le modalità operative adottate dai provider (erogazione del servizio da differenti data center) e lo stesso approccio multi-tenant rendono inattuabili determinate richieste del cliente
- costi aggiuntivi. Lo spostamento dei dati in una piattaforma multi-tenant e la necessaria riprogrammazione delle applicazioni adoperate è destinata ad incidere sui budget aziendali – in particolare modo per le piccole realtà ciò significherà sostenere un importante investimento.