Multi-tenant - Multitenancy
La multitenancy del software è un'architettura software in cui una singola istanza del software viene eseguita su un server e serve più tenant. I sistemi progettati in questo modo sono "condivisi" (piuttosto che "dedicati" o "isolati"). Un tenant è un gruppo di utenti che condividono un accesso comune con privilegi specifici all'istanza software. Con un'architettura multi- tenant , un'applicazione software è progettata per fornire a ogni tenant una condivisione dedicata dell'istanza, inclusi i dati, la configurazione, la gestione degli utenti, le funzionalità individuali del tenant e le proprietà non funzionali . La multitenancy contrasta con le architetture multiistanza, in cui istanze software separate operano per conto di tenant diversi.
Alcuni commentatori considerano la multitenancy una caratteristica importante del cloud computing .
Adozione
Storia delle applicazioni multi-tenant
Le applicazioni multi-tenant si sono evolute da, e combinano alcune caratteristiche di, tre tipi di servizi:
- Timesharing : dagli anni '60 le aziende hanno affittato lo spazio e la potenza di elaborazione sui computer mainframe ( time-sharing ) per ridurre le spese di elaborazione. Spesso hanno anche riutilizzato le applicazioni esistenti, semplicemente con un campo di immissione separato nella schermata di accesso per specificare un ID dell'account cliente. Sulla base di questo ID, i contabili del mainframe potrebbero addebitare ai singoli clienti l'utilizzo di CPU, memoria e disco/nastro effettivamente sostenuto.
- Applicazioni ospitate : dagli anni '90 i tradizionali provider di servizi applicativi (ASP) ospitavano le applicazioni (allora esistenti) per conto dei loro clienti. A seconda della limitazione dell'applicazione sottostante, gli ASP sono stati costretti a ospitare le applicazioni su macchine separate (se più istanze delle applicazioni non potevano essere eseguite nella stessa macchina fisica) o come processi separati . Le applicazioni multitenant rappresentano un'architettura più matura che consente un servizio simile con costi operativi inferiori.
- Applicazioni web : applicazioni web popolari orientate al consumatore (come Hotmail ) sviluppate con un'unica istanza dell'applicazione che serve tutti i clienti. Le applicazioni multi-tenant rappresentano un'evoluzione naturale di questo modello, offrendo ulteriore personalizzazione a gruppi di utenti all'interno (diciamo) della stessa organizzazione cliente.
Differenziazione dalla virtualizzazione
In un ambiente multitenancy, più clienti condividono la stessa applicazione, in esecuzione sullo stesso sistema operativo, sullo stesso hardware, con lo stesso meccanismo di archiviazione dei dati. La distinzione tra i clienti viene ottenuta durante la progettazione dell'applicazione, quindi i clienti non condividono o vedono i dati degli altri. Confronta questo con la virtualizzazione in cui i componenti vengono trasformati, consentendo a ciascuna applicazione del cliente di sembrare eseguita su una macchina virtuale separata.
Differenziazione competitiva
Alcune aziende promuovono attivamente il principio della multitenancy e lo utilizzano come fonte di differenziazione competitiva. L'uso del multitenancy sta aumentando di giorno in giorno.
Economia del multitenancy
Risparmi
La multitenancy consente risparmi sui costi che vanno oltre le economie di scala di base ottenibili dal consolidamento delle risorse IT in un'unica operazione. Un'istanza dell'applicazione di solito comporta una certa quantità di memoria e di elaborazione che può essere notevole se moltiplicata per molti clienti, soprattutto se i clienti sono piccoli. La multi-tenancy riduce questo sovraccarico distribuendolo su molti clienti. Ulteriori risparmi possono derivare dai costi di licenza del software sottostante (come i sistemi operativi e i sistemi di gestione dei database). In parole povere, se puoi eseguire tutto su una singola istanza software, devi solo acquistare una licenza software . I risparmi sui costi possono essere eclissati dalla difficoltà di ridimensionare la singola istanza man mano che la domanda cresce: l'aumento delle prestazioni dell'istanza su un singolo server può essere ottenuto solo acquistando hardware più veloce, come CPU veloci, più memoria e sistemi di dischi più veloci, e in genere questi costi crescono più velocemente che se il carico fosse suddiviso tra più server con all'incirca la stessa capacità aggregata. Inoltre, lo sviluppo di sistemi multi-tenant è più complesso e i test di sicurezza sono più severi a causa del fatto che i dati di più clienti vengono mescolati.
Aggregazione dati/estrazione dati
Uno dei motivi più convincenti per i fornitori/ ISV di utilizzare la multitenancy è per i vantaggi intrinseci dell'aggregazione dei dati . Invece di raccogliere dati da più origini dati, con schemi di database potenzialmente diversi , tutti i dati per tutti i clienti vengono archiviati in un unico schema di database. Pertanto, eseguire query tra clienti, estrarre dati e cercare tendenze è molto più semplice. Questo motivo è probabilmente sopravvalutato in quanto uno dei requisiti principali della multi-tenancy è la necessità di impedire al fornitore di servizi di accedere alle informazioni del cliente (tenant). Inoltre, è comune separare il database operativo dal database minerario (di solito a causa delle diverse caratteristiche del carico di lavoro), indebolendo ulteriormente l'argomento.
Complessità
A causa dell'ulteriore complessità della personalizzazione e della necessità di mantenere i metadati per tenant , le applicazioni multitenant richiedono uno sforzo di sviluppo maggiore. È necessario prendere in considerazione considerazioni quali il sequenziamento dei dati basato su vettori, l'infrastruttura di algoritmi crittografati e le interfacce di controllo virtualizzate.
Gestione dei rilasci
La multitenancy semplifica il processo di gestione dei rilasci. In un tradizionale processo di gestione dei rilasci, i pacchetti contenenti modifiche al codice e al database vengono distribuiti alle macchine client desktop e/o server; nel caso della singola istanza, questa sarebbe una macchina server per cliente. Questi pacchetti devono quindi essere installati su ogni singola macchina. Con il modello multi-tenant, il pacchetto in genere deve essere installato solo su un singolo server. Ciò semplifica notevolmente il processo di gestione dei rilasci e la scala non dipende più dal numero di clienti.
Allo stesso tempo, la multitenancy aumenta i rischi e gli impatti inerenti all'applicazione di una nuova versione di rilascio. Poiché esiste un'unica istanza software che serve più tenant, un aggiornamento su questa istanza può causare tempi di inattività per tutti i tenant anche se l'aggiornamento è richiesto e utile per un solo tenant. Inoltre, alcuni bug e problemi risultanti dall'applicazione della nuova versione potrebbero manifestarsi nella visualizzazione personalizzata dell'applicazione di altri tenant. A causa di possibili tempi di inattività , il momento dell'applicazione del rilascio può essere limitato in base al programma di utilizzo del tempo di più di un tenant.
Requisiti
personalizzazione
Le applicazioni multi-tenant sono in genere necessarie per fornire un alto grado di personalizzazione per supportare le esigenze di ogni organizzazione di destinazione. La personalizzazione in genere include i seguenti aspetti:
- Branding: consentire a ciascuna organizzazione di personalizzare l'aspetto dell'applicazione in modo che corrisponda al proprio marchio aziendale (spesso indicato come una " pelle " distinta ).
- Flusso di lavoro : accomodare le differenze nel flusso di lavoro per essere utilizzato da una vasta gamma di potenziali clienti.
- Estensioni al modello dati : supporto di un modello dati estensibile per dare ai clienti la possibilità di personalizzare gli elementi dati gestiti dall'applicazione per soddisfare le loro esigenze specifiche.
- Controllo degli accessi : consentire a ciascuna organizzazione cliente di personalizzare in modo indipendente i diritti di accesso e le restrizioni per ciascun utente .
Qualità del servizio
Ci si aspetta che le applicazioni multi-tenant forniscano un adeguato isolamento di sicurezza , robustezza e prestazioni tra più tenant che è fornito dai livelli sotto l'applicazione in caso di applicazioni multi-istanza.
Virtualizzazione
I costi di riprogettazione delle applicazioni per la multi-tenancy possono essere significativi, soprattutto per i fornitori di software che continuano a offrire una versione locale a singolo tenant del loro prodotto. Finiscono per essere costretti a sostenere due prodotti distinti con tutti i costi che ne derivano.
Una via alternativa sempre più praticabile alla multitenancy che elimina la necessità di modifiche significative all'architettura consiste nell'utilizzare la tecnologia di virtualizzazione per ospitare più istanze isolate di un'applicazione su uno o più server. Infatti, quando le applicazioni vengono riconfezionate come appliance virtuali, la stessa immagine dell'appliance può essere distribuita in host ISV, on-premise o in posizioni di terze parti attendibili e persino migrata da un sito di implementazione a un altro nel tempo.