Il concetto di multi tenancy è alla base di architetture e servizi oggi molto diffusi. Ecco cos’è, quali sono le sue caratteristiche, applicazioni, vantaggi ed esempi applicativi


Prima di spiegare cos’è la multi tenancy partiamo da una previsione di IDC. Entro la fine dell’anno in corso, la società di consulenza stima che l’80% delle imprese avrà messo in atto un meccanismo per passare all’infrastruttura e alle applicazioni cloud-centric due volte più velocemente di prima della pandemia. Il cloud computing ha alla base un’architettura multi-tenant, quella in cui diverse aziende usano una singola istanza dell’applicazione con un singolo database. È diversa dall’architettura multi-istanza, in cui diverse aziende eseguono la propria istanza separata dell’applicazione, con il proprio database. In questo caso, ogni azienda ha accesso ai propri dati in modo separato da un’altra.

Cos’è la multi tenancy?

Multi tenancy è il concetto che definisce un’architettura multi-tenant, in cui una singola istanza di un’applicazione software serve più utenti o, più precisamente, viene usata da più fruitori (chiamati appunto tenant). Tale architettura può essere hardware e software. Multi tenancy ha la propria radice nel termine tenant, ossia “inquilino”. Ogni inquilino è integrato fisicamente, ma separato logicamente: ciò significa che una singola istanza del software verrà eseguita su un server e poi servirà più tenant.

In altre parole, un’architettura multi tenancy si basa su un’amministrazione centrale e comporta un’applicazione di codice comune. Gestisce una singola istanza comune di applicazione per più inquilini. In un’architettura di questo genere, l’applicazione è progettata per segregare la configurazione e i dati per assicurare che ogni tenant lavori con un’istanza virtuale personalizzata dell’applicazione.

Il concetto di multi tenancy ha una storia pluridecennale. Si possono già trovare negli anni Sessanta esempi di condivisione, nel caso specifico di time-sharing, un approccio interattivo che definisce la condivisione della potenza di calcolo tra più utenti per ridurre le spese di calcolo. Il time sharing è una componente tipica dei servizi “multi-inquilino”, insieme all’hosting e alle web application. Quest’ultimo termine lo si ritrova, debitamente evoluto, nell’ambiente multi-tenant.

Come detto, una caratteristica chiave del cloud computing è la multi tenancy, che è una componente basilare del Software-as-a-service (SaaS), un modello di servizio del cloud computing.

Come si sa, Saas è spesso offerto in uno stile multi-tenant, dove i clienti dell’applicazione e i loro utenti finali condividono risorse come software e hardware tra tutti gli utenti, senza necessariamente condividere i dati.

Le architetture multi-tenancy si trovano sia nel public cloud che nel cloud privato, permettendo ai dati di ogni tenant di essere separati l’uno dall’altro. Per esempio, in un cloud pubblico multi-tenant, gli stessi server saranno utilizzati in un ambiente per ospitare più utenti. A ogni utente viene dato uno spazio separato e idealmente sicuro all’interno di quei server per memorizzare i dati.

I vantaggi del multi tenancy

Sono diversi i vantaggi offerti dalla multi-tenancy e nell’implementare un ambiente applicativo multi-tenant.

  • Economia: un’applicazione multi-tenant può fornire risparmi riducendo i costi di sviluppo e distribuzione alle aziende che realizzano applicazioni. Questi risparmi possono essere passati ai clienti – aumentando i vantaggi competitivi per tutte le parti coinvolte. I risparmi creati dal multi-tenancy provengono dalla condivisione delle stesse risorse con più tenant.

Abbiamo detto che la multi tenancy è una componente basilare del Saas. Ecco, allora, che l’esempio principe dell’architettura multi-tenant è il public cloud dove si paga quello che si usa. Poiché tutti gli utenti accedono ai loro servizi dalla stessa piattaforma tecnologica, è molto più facile accedere ad aggiornamenti automatici e frequenti. Non è più necessario pagare per le personalizzazioni dei report o per aggiungere nuove funzionalità. Le nuove release e gli aggiornamenti sono inclusi nell’abbonamento e si viene informati regolarmente di ogni cambiamento in arrivo.

  • Flessibilità: uno dei vantaggi della multi tenancy è la flessibilità, necessaria per scalare l’uso dell’applicazione verso l’alto o verso il basso rapidamente in base alle esigenze, mantenendo così le spese in linea con l’uso (con una struttura di costi per abbonamento o per utente). Inoltre consente di aumentare l’efficienza dell’utilizzo delle risorse e di integrare facilmente con altri software di terze parti. Allevia il peso delle risorse IT interne e riduce la necessità di un’infrastruttura on-premises. Infine permette di ricevere automaticamente gli aggiornamenti e le nuove funzionalità.
  • Sicurezza. L’online banking è un buon esempio di multi tenancy. Quando una banca crea la sua applicazione bancaria online, ogni utente finale riceve le sue informazioni individuali e sicure attraverso la sicurezza multi tenancy. Un fornitore SaaS può eseguire un’istanza della sua applicazione su un’istanza di un database e fornire un accesso web a più clienti. I dati di ogni tenant sono isolati e rimangono invisibili agli altri tenant.

Gli svantaggi

Anche la multi tenancy ha i suoi lati negativi.

Ripartiamo dalla sicurezza: qualsiasi azione che riguarda il database influenzerà tutti i clienti condivisi. Un ambiente “multi-inquilino” condivide infatti la possibilità di incorrere in danni collaterali. Anche se i sistemi di protezione sono sempre più elevati, la corruzione dei dati può diffondersi da un utente a tutti.

Un’applicazione multi-tenancy ha meno flessibilità di un’applicazione single-tenant quando si tratta di configurare personalizzazioni o modifiche di basso livello. In generale, non è così preoccupante, ma se un’applicazione richiede personalizzazioni significative per ogni nuovo inquilino, allora un’architettura multi-tenant potrebbe non essere la soluzione migliore.

Le interruzioni possono fare notizia quando accadono. I fornitori SaaS tendono a costruire abbastanza ridondanza nel sistema per minimizzare questo problema, raro ma possibile.

Infine, se un tenant sta utilizzando una quantità eccessiva di potenza di calcolo, allora questo potrebbe rallentare prestazioni degli altri tenant all’interno di un ambiente condiviso.

Quando utilizzare un’architettura multi tenant

La multi tenancy permette di consolidare e allocare le risorse in modo efficiente, risparmiando in definitiva sui costi operativi. Per un singolo utente, pagare per l’accesso a un servizio cloud o a un’applicazione SaaS è spesso più conveniente rispetto all’esecuzione di hardware e software in single-tenant.

D’altra parte, l’opzione singolo tenent offre il beneficio di “un singolo cliente e un singolo server”, che sono spesso contenuti in un hardware sicuro usato da un numero limitato di persone. Con un intero ambiente dedicato a un solo cliente, le risorse sono abbondanti e disponibili in qualsiasi momento. Il controllo sull’intero ambiente permette la personalizzazione e l’aggiunta di funzionalità, se lo si desidera. Tutto questo, ovviamente, ha un costo superiore rispetto al multi-tenant.

Infine, se si avesse un problema di affrontare un rapido time-to-market e si dovesse sviluppare rapidamente una soluzione SaaS, è preferibile puntare su un’architettura multi-tenant perché è più facile da impostare. D’altra parte, se si dovesse avere bisogno di sviluppare una soluzione più robusta e sicura, sarebbe opportuno puntare invece per un’architettura multi-istanza per beneficiare dell’isolamento totale dei dati.

Alcuni esempi pratici

Torniamo al software-as-a-service. Come detto, può essere citato come l’esempio più noto di multi tenancy. Le applicazioni Saas multi-tenant includono la gestione delle relazioni con il cliente (CRM), i sistemi informativi gestionali, la pianificazione delle risorse aziendali (ERP), la gestione dei contenuti, solo per citarne alcuni. Se poi pensiamo all’architettura multi-tenant in funzione dei servizi anche Gmail può essere un esempio. I client di posta elettronica sono i primi esempi di SaaS che non richiede l’impostazione e la manutenzione.

La multi-tenancy può anche essere implementata in sistemi multi-tier come un sistema SAP, composto da un database back-end e un paio di server di applicazioni web con servizi web scalabili.

Infine, citiamo Shopify: più tenant usano questa soluzione per ospitare le loro piattaforme mentre condividono il database con altri proprietari di siti web.