Cosa significa multi-tenancy?

 

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 metadatiL’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.

metadata salesforce

Uno schema relativo all’architettura multi-tenant Force.com (Salesforce).

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.