La multitenancy è un'architettura nella progettazione software in cui una singola istanza di un'applicazione serve più tenant o client. Questo approccio consente un utilizzo efficiente delle risorse, modulabilità e risparmi sui costi, rendendolo popolare in cloud informatica e Software as a Service (SaaS) ambienti.

Che cos'è la multilocazione?
La multitenancy è un approccio architetturale nella progettazione del software in cui una singola istanza di un'applicazione viene utilizzata per servire più tenant o client. Ogni tenant, che potrebbe essere un singolo utente, un'azienda o un'organizzazione, condivide lo stesso software applicazione e banca dati ma rimane isolato e invisibile agli altri. Questo isolamento garantisce la privacy e la sicurezza dei dati di ciascun tenant, consentendo comunque all'applicazione di utilizzare in modo efficiente le risorse di elaborazione.
La multitenancy è particolarmente vantaggiosa in cloud informatica e ambienti Software as a Service (SaaS), in quanto consentono un'erogazione di servizi scalabile ed economicamente vantaggiosa. L'infrastruttura condivisa riduce la necessità di risorse ridondanti, abbassando i costi e semplificando la manutenzione. Inoltre, consente agli sviluppatori di distribuire aggiornamenti e nuove funzionalità a livello centrale, garantendo che tutti gli inquilini traggano vantaggio dai miglioramenti senza la necessità di installazioni individuali. Questa architettura supporta inoltre la personalizzazione dell'esperienza software per ciascun tenant, consentendogli di configurare la propria interfaccia e le impostazioni in base alle proprie esigenze specifiche, sfruttando comunque un'applicazione condivisa e gestita centralmente.
Come funziona la multilocazione?
La multitenancy funziona consentendo a più tenant di condividere una singola istanza di un'applicazione mantenendo i dati e le configurazioni separati e protetti. Ecco come funziona in dettaglio:
- Istanza dell'applicazione condivisa. In un'architettura multitenant, una singola istanza del software viene eseguita su a server o un gruppo di serversQuesta istanza è progettata per gestire più client contemporaneamente, con ogni client denominato tenant.
- Isolamento dell'inquilino. I dati di ciascun inquilino sono isolati dagli altri. Questo isolamento viene ottenuto in vari modi, ad esempio disponendo di database separati per ciascun tenant, utilizzando un database condiviso con tabelle specifiche del tenant o impiegando una combinazione di entrambi. L'isolamento garantisce che gli inquilini non possano accedere ai dati degli altri, garantendo privacy e sicurezza.
- Condivisione di risorse. Le risorse sottostanti, come CPU, memoria e archiviazione sono condivisi tra tutti i tenant. L'applicazione gestisce in modo efficiente queste risorse per garantire prestazioni e scalabilità ottimali. La condivisione delle risorse riduce il costo complessivo, poiché più tenant sfruttano la stessa infrastruttura.
- Ambienti tenant personalizzabili. Ogni tenant può avere un ambiente personalizzato pur condividendo la stessa istanza dell'applicazione. La personalizzazione può includere configurazioni specifiche, interfacce utente e controlli di accesso. L'applicazione gestisce queste personalizzazioni mantenendo un'interfaccia unificata codebase.
- Gestione centralizzata. Le applicazioni multitenant spesso includono strumenti di gestione centralizzata per l'amministrazione, il monitoraggio e la manutenzione. La centralizzazione semplifica la distribuzione di aggiornamenti, patch e nuove funzionalità, poiché le modifiche vengono applicate una volta e propagate a tutti i tenant. Consente inoltre una scalabilità efficiente, poiché è possibile aggiungere nuovi tenant senza modifiche significative all'infrastruttura.
- Misure di sicurezza. Vengono implementate solide misure di sicurezza per garantire che i dati degli inquilini rimangano riservati e sicuri. Queste misure includono autenticazione, autorizzazione, crittografiae meccanismi di controllo per proteggere i dati e conformarsi ai requisiti normativi.
Tipi di architettura multitenant
L'architettura multitenant è progettata per servire più tenant utilizzando un'infrastruttura condivisa garantendo al contempo l'isolamento e la sicurezza dei dati. Esistono diversi tipi di architetture multitenant, ciascuna con il proprio approccio alla gestione di dati e risorse. Ecco le principali tipologie:
- Database condiviso, schema condiviso. In questa architettura tutti i tenant condividono lo stesso database e lo stesso set di tabelle. Ogni riga nelle tabelle è contrassegnata con un identificatore del tenant per distinguere quali dati appartengono a quale tenant. Questo approccio è economicamente vantaggioso e offre un'elevata efficienza nell'utilizzo delle risorse, ma richiede requisiti rigorosi sicurezza della banca dati misure per garantire l’isolamento dei dati.
- Database condiviso, schema separato. Ogni tenant dispone del proprio set di tabelle all'interno dello stesso database, utilizzandone di fatto uno separato schema. Questo tipo fornisce un livello di isolamento dei dati più elevato rispetto all'approccio con schema condiviso. Semplifica la gestione e la personalizzazione dei dati per ciascun tenant, beneficiando comunque dell'infrastruttura condivisa, anche se può essere più complessa da mantenere.
- Banca dati separata. Ogni inquilino ha il proprio database. Questa architettura offre il massimo livello di isolamento e sicurezza, semplificando la gestione delle personalizzazioni specifiche del tenant e la conformità ai requisiti normativi. Tuttavia, può richiedere un utilizzo più intensivo delle risorse ed essere più costoso poiché non sfrutta le risorse del database condiviso in modo efficace come gli altri tipi.
- Approcci ibridi. Alcune architetture combinano elementi dei tipi sopra indicati per bilanciare efficienza e isolamento. Ad esempio, un approccio ibrido potrebbe utilizzare un database condiviso con schemi separati per tenant più piccoli e database separati per tenant più grandi. Ciò consente al sistema di scalare in modo efficiente durante la fornitura flexcapacità in gestione dei dati.
Esempi di multilocazione
La multitenancy è un modello architetturale comune utilizzato in varie applicazioni e piattaforme software, in particolare in cloud modelli informatici e Software as a Service (SaaS). Ecco alcuni esempi di multitenancy in azione, insieme alle spiegazioni di come ciascun esempio utilizza questa architettura:
- Cloud piattaforme informatiche. Cloud fornitori di servizi come Amazon Web Services (AWS), Microsoft Azure e Google Cloud La piattaforma offre ambienti multitenant in cui più clienti (tenant) condividono le stesse risorse hardware e software sottostanti. I dati e le applicazioni di ciascun tenant sono isolati per garantire sicurezza e privacy.
- Software come servizio (SaaS). Le applicazioni SaaS come Salesforce, Microsoft Office 365 e Google Workspace funzionano su un modello multi-tenant. Più organizzazioni utilizzano la stessa istanza dell'applicazione, ma i relativi dati e configurazioni vengono mantenuti separati, consentendo un utilizzo efficiente delle risorse e una manutenzione semplificata.
- Servizi di hosting web. I provider di web hosting, come Bluehost e GoDaddy, offrono soluzioni di hosting multitenant in cui più siti Web condividono lo stesso server risorse. Ogni sito Web è ospitato in un ambiente isolato, garantendo che le prestazioni e i problemi di sicurezza di un sito non influenzino gli altri.
- Sistemi di gestione del database. Database multitenant come Amazon RDS e Microsoft SQL Server consentire a più database di risiedere su un unico database server esempio. I dati di ciascun tenant sono isolati all'interno del proprio schema di database, garantendo un utilizzo efficiente server risorse e gestione semplificata.
- Piattaforme di virtualizzazione. Hypervisor come VMware ESXi e Microsoft Hyper-V abilitano il multitenancy consentendone più macchine virtuali (VM) correre su un unico fisico server. Ogni VM opera come entità indipendente, con il proprio sistema operativo e le proprie applicazioni, condividendo le risorse hardware sottostanti.
- Sistemi di gestione dei contenuti (CMS). Le piattaforme CMS come WordPress Multisite e Drupal Multisite consentono di gestire più siti Web da un'unica installazione. Ogni sito ha il proprio contenuto e la propria configurazione unici ma condivide la stessa base di codice e la stessa infrastruttura.
- Piattaforme Internet delle cose (IoT). IoT piattaforme come IBM Watson IoT e AWS IoT supportano la multitenancy consentendo a più organizzazioni di connettere e gestire i propri dispositivi attraverso un'infrastruttura condivisa. I dispositivi e i flussi di dati di ciascun tenant sono isolati in modo sicuro, garantendo privacy e sicurezza.
- Sistemi di pianificazione delle risorse aziendali (ERP). ERP sistemi come SAP S/4HANA e Oracle ERP Cloud utilizzare la multi-tenancy per servire più organizzazioni con un'unica istanza software. I dati e i processi di ciascuna organizzazione sono isolati all'interno del sistema, consentendo configurazioni personalizzate e operazioni sicure.
Vantaggi e svantaggi della multitenancy
La multitenancy offre numerosi vantaggi e svantaggi che influiscono sulla sua idoneità a varie applicazioni. Comprenderli può aiutare le organizzazioni a decidere se un'architettura multitenant è in linea con le esigenze e gli obiettivi aziendali.
Vantaggi
Ecco alcuni vantaggi chiave della multitenancy, ciascuno spiegato in dettaglio:
- Risparmio sui costi. La multitenancy riduce i costi complessivi dell'infrastruttura condividendo risorse come servers, storage e apparecchiature di rete tra più tenant. Questo ambiente condiviso consente ai provider di offrire servizi a un costo inferiore rispetto alle configurazioni dedicate a tenant singolo.
- Utilizzo efficiente delle risorse. Le architetture multitenant massimizzano l'uso delle risorse di elaborazione. Poiché più tenant utilizzano la stessa infrastruttura, risorse come CPU, memoria e storage possono essere allocate dinamicamente in base alla domanda, garantendo un utilizzo efficiente e riducendo al minimo gli sprechi.
- Scalabilità. La multitenancy consente una facile scalabilità. I provider possono aggiungere nuovi tenant senza modifiche significative all'infrastruttura sottostante. Questa scalabilità garantisce che l'applicazione possa gestire senza problemi un numero crescente di utenti e carichi di lavoro crescenti.
- Manutenzione e aggiornamenti semplificati. Con una singola istanza dell'applicazione che serve più tenant, gli aggiornamenti, le patch e le attività di manutenzione possono essere eseguiti centralmente. Ciò riduce il tempo e gli sforzi necessari per gestire le singole istanze per ciascun tenant, garantendo a tutti gli utenti di beneficiare contemporaneamente delle funzionalità più recenti e dei miglioramenti della sicurezza.
- Prestazioni costanti. Gli ambienti multitenant spesso includono meccanismi per bilanciare i carichi e allocare le risorse in modo efficace, garantendo prestazioni costanti per tutti gli inquilini. Ciò significa che nessun singolo inquilino monopolizza le risorse a scapito degli altri.
- Personalizzazione e flexflessibilità. Nonostante condividano la stessa applicazione, gli inquilini possono personalizzare i propri ambienti per soddisfare le proprie esigenze specifiche. Questo flexLa capacità consente a ciascun tenant di configurare impostazioni, interfacce utente e flussi di lavoro in base alle proprie preferenze.
- Gestione centralizzata. I provider possono gestire centralmente tutti i tenant da un'unica interfaccia amministrativa, semplificando attività quali monitoraggio, gestione della sicurezza e conformità.
- Distribuzione rapida. La multitenancy facilita il provisioning rapido di nuovi tenant. Poiché l'infrastruttura e l'applicazione sono già installate, i nuovi tenant vengono inseriti rapidamente senza la necessità di impostazioni o configurazioni approfondite, accelerando il time-to-market per i nuovi utenti.
Svantaggi
Ecco alcuni svantaggi chiave della multitenancy, insieme alle spiegazioni di ciascuno:
- Rischi per la sicurezza. Mentre la multi-tenant include misure per isolare i dati tra tenant, l'infrastruttura condivisa implica che le vulnerabilità dell'applicazione o della piattaforma potrebbero esporre i dati di un tenant a un altro. Garantire solidi protocolli di sicurezza e controlli regolari è essenziale per mitigare questi rischi.
- Complessità nell'isolamento dei dati. Mantenere un rigoroso isolamento dei dati per più tenant può essere complesso. Gli sviluppatori devono implementare e gestire attentamente i meccanismi di isolamento per prevenire perdita di dati e garantire che i dati di ciascun inquilino rimangano sicuri e privati.
- Variabilità delle prestazioni. Poiché le risorse sono condivise tra più tenant, le prestazioni dell'applicazione possono variare. L'utilizzo elevato delle risorse da parte di un tenant può influire sulle prestazioni degli altri, richiedendo una gestione e un monitoraggio sofisticati delle risorse per mantenere livelli di prestazioni coerenti.
- Limitazioni di personalizzazione. Sebbene le architetture multi-tenant consentano un certo livello di personalizzazione per ciascun tenant, esistono delle limitazioni. La necessità di mantenere un'unica base di codice limita la misura in cui i singoli tenant possono modificare o personalizzare l'applicazione per soddisfare le proprie esigenze specifiche.
- Sfide di conformità. Soddisfare i requisiti normativi e di conformità può essere più impegnativo in un ambiente multitenant. Tenant diversi possono avere esigenze di conformità diverse e garantire che l'infrastruttura condivisa soddisfi tutti questi requisiti può essere complesso e dispendioso in termini di risorse.
- Problemi di scalabilità. Man mano che il numero di tenant cresce, l'architettura deve ridimensionarsi di conseguenza. Ciò introduce sfide nella gestione e nel mantenimento di prestazioni, sicurezza e isolamento. Garantire che il sistema possa gestire carichi e complessità maggiori senza compromettere le prestazioni o la sicurezza richiede un'attenta pianificazione e gestione.
- Spese generali di supporto e manutenzione. Fornire supporto e manutenzione per un sistema multitenant può essere più impegnativo. I problemi che interessano l'infrastruttura condivisa possono avere un impatto su più tenant contemporaneamente, richiedendo risposte rapide ed efficaci per minimizzarli i tempi di inattività e interruzioni.
Multi-tenancy vs. single-tenancy
In un'architettura multi-tenant, una singola istanza di un'applicazione serve più tenant, ciascuno con dati e configurazioni isolati, consentendo un utilizzo efficiente delle risorse, risparmi sui costi e una manutenzione semplificata. Tuttavia, introduce anche complessità nel garantire l'isolamento dei dati, la sicurezza e prestazioni coerenti tra i tenant.
Al contrario, il single-tenancy prevede un'istanza dedicata di un'applicazione per ciascun tenant, offrendo sicurezza, prestazioni e personalizzazione migliorate al costo di un maggiore utilizzo delle risorse e di un maggiore sovraccarico operativo.
La single-tenancy è spesso preferita quando i requisiti rigorosi di sicurezza, conformità e prestazioni sono fondamentali, mentre la multi-tenancy è ideale per la fornitura di servizi scalabili ed economicamente vantaggiosi.