Introduzione alla multitenancy
La multitenancy è un'architettura software in cui una singola istanza software viene adoperata da più gruppi di utenti, o tenant, in un ambiente condiviso. I prodotti Software-as-a-Service (SaaS) sono un esempio di architettura multitenant.
Nel cloud computing, la multitenancy può anche riferirsi all'hosting condiviso, in cui le risorse server sono suddivise tra diversi clienti.
La multitenancy è l'opposto della tenancy singola, in cui un'istanza software o un sistema informatico prevede un solo utente finale o gruppo di utenti.
In genere le applicazioni multitenant prevedono un livello di personalizzazione per i tenant, come la customizzazione dell'aspetto dell'applicazione o la possibilità di prendere decisioni relative a specifiche autorizzazioni e restrizioni di controllo dell'accesso per gli utenti.
Dal timesharing al SaaS
L'idea di multitenancy esiste da decenni. Negli anni '60, le università dotate di mainframe potenti e costosi svilupparono software di timesharing che consentivano a più utenti di accedere al computer contemporaneamente.
Il concetto non è mai scomparso del tutto: oggi la multitenancy è alla base del cloud computing. Un cloud pubblico suddivide tra più tenant un insieme di risorse condivise, ossia potenza di elaborazione e memoria. I dati e i carichi di lavoro di ciascun tenant restano isolati, anche se a livello fisico vengono eseguiti sulla stessa macchina o sullo stesso gruppo di macchine.
Applicando questa idea all'architettura software, si arriva al moderno Saas. Un provider SaaS esegue una singola istanza di un'applicazione offrendo l'accesso ai singoli clienti. I dati di ciascun utente restano isolati, anche se tutti loro accedono allo stesso software.
Quando si fa riferimento a una piattaforma di orchestrazione dei container come Kubernetes, il termine multitenancy indica in genere un singolo cluster impiegato per più progetti. Il cluster è configurato in modo tale che ciascun progetto sia isolato dagli altri.
Risorse da Red Hat
Multitenancy e cloud computing a confronto
Come indicato in precedenza, il concetto di multitenancy è una caratteristica importante del cloud computing perché consiste in una singola istanza di un'applicazione software fornita a più tenant. I cloud sono considerati Platforms-as-a-Service (PaaS), al contrario della multitenancy, che è spesso associata alle applicazioni SaaS.
I provider di servizi cloud forniscono agli utenti la piattaforma e l'infrastruttura IT sottostante necessaria per il cloud computing da un pool di risorse che vengono quindi allocate a più utenti (o tenant).
Con architettura cloud si intende il modo in cui tutti i componenti e le funzionalità necessari per creare un cloud sono connessi per erogare una piattaforma online sui cui eseguire le applicazioni.
Per progettare una piattaforma cloud occorrono infatti livelli aggiuntivi di sviluppo per integrare le tecnologie di containerizzazione, orchestrazione, interfacce di programmazione delle applicazioni (API), routing, sicurezza, gestione e software di automazione.
Architettura di cloud pubblico: ambienti cloud creati con risorse, la cui proprietà non è dell'utente finale, che possono quindi essere ridistribuite ad altri tenant.
Architettura di cloud privato: spesso definiti come ambienti cloud dedicati esclusivamente all'utente finale, in genere si trovano all'interno del firewall dell'utente e a volte sono on premise.
Vantaggi dell'architettura multitenant
La multitenancy offre numerosi vantaggi, evidenti nella diffusione del cloud computing.
La multitenancy consente di risparmiare denaro. L'elaborazione è più economica su scala ridotta e la multitenancy consente di consolidare e allocare le risorse in modo efficiente, risparmiando così 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 a tenant singolo.
La multitenancy offre flessibilità. Se hai investito in componenti hardware e software, questi potrebbero raggiungere la capacità massima nei periodi di richiesta elevata o rimanere inattivi nei periodi di richiesta bassa. Un cloud multitenant, invece, può allocare un pool di risorse agli utenti che ne hanno bisogno, man mano che le esigenze di tali utenti aumentano e diminuiscono. In qualità di cliente di un provider di cloud pubblico, puoi accedere a capacità aggiuntive quando ne hai bisogno e non pagare quando non ti servono.
La multitenancy può essere più efficiente. La multitenancy riduce la necessità per i singoli utenti di gestire l'infrastruttura, gli aggiornamenti e la manutenzione. I singoli tenant possono fare affidamento su un provider di cloud centrale, anziché sui propri team, per gestire le operazioni di routine.
Quando è preferibile il tenant singolo
Nonostante i vantaggi della multitenancy, in alcuni scenari i sistemi informatici a singolo tenant risultano più adatti, come ad esempio un cloud privato o il proprio datacenter.
In particolare, la sicurezza dei dati per le applicazioni che includono dati altamente sensibili. Gli ambienti di cloud pubblico e i prodotti SaaS sono progettati per isolare carichi di lavoro e dati e per supportare processi complessi. Tuttavia, nei test controllati, i ricercatori hanno scoperto vulnerabilità che potrebbero, almeno in teoria, consentire attacchi tra tenant in ambienti cloud.
In pratica, questi rischi sono relativamente ridotti. Le vulnerabilità della tenancy condivisa sono rare e richiedono alti livelli di sofisticazione, secondo un rapporto del 2020 sulle vulnerabilità del cloud della U.S. National Security Agency. Dopo il rapporto della NSA, non sono stati documentati attacchi cross-tenant a nessuno dei principali provider di cloud pubblico. La NSA considera questi rischi inferiori ai rischi derivanti da un controllo degli accessi scarso e da configurazioni errate.
Ambienti multitenant in Linux
Chiunque crei un ambiente multitenant dovrà scegliere se isolare gli ambienti utilizzando macchine virtuali (VM) o container.
Con le VM, un hypervisor avvia computer guest, ciascuno con il proprio sistema operativo, nonché applicazioni e dipendenze. Inoltre, l'hypervisor fa in modo che gli utenti siano isolati l'uno dall'altro.
Rispetto alle VM, i container offrono un modello più ottimizzato, flessibile e con una scalabilità semplice. I container semplificano i deployment multitenancy di più applicazioni su un singolo host, usando il kernel e il runtime del container per avviare ciascun container. Rispetto alle VM, ciascuna delle quali include il proprio kernel, le applicazioni eseguite in container condividono un kernel, anche tra più tenant.
In Linux®, i namespace consentono a più container di utilizzare la stessa risorsa contemporaneamente senza creare un conflitto. Proteggere un container è come proteggere qualsiasi processo in esecuzione.
Se si utilizza Kubernetes per l'orchestrazione dei container, è possibile configurare ambienti multitenant mediante un singolo cluster Kubernetes. È possibile separare i tenant nei relativi namespace e creare policy che impongano l'isolamento dei tenant.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.