Che cos'è esattamente un'applicazione multi-tenant?


15

Secondo la definizione disponibile online, "la multi-tenancy è un'architettura in cui una singola istanza di un'applicazione software serve più clienti ". Significa che ho un sito Web di un ristorante o di una scuola e fornisco l'accesso a diversi ristoranti o scuole per utilizzare la mia applicazione con i propri dati utilizzando le loro credenziali fornite una volta acquistato il mio prodotto di gestione della scuola. Come il mio sito web è come schoolmanagement.com e fornisco diversi sottodomini ai clienti diversi in scuole come school1.schoolmanagement.com & school2.schoolmanagement.com ma il codice è lo stesso dietro a questi due sottodomini. Entrambe le scuole hanno funzionalità o temi diversi a seconda del loro database separato. Quindi devo fornireschoolmanagement.com per l'accesso e una volta effettuato l'accesso dal mio client in base alle credenziali di accesso, reindirizzo al rispettivo URL, ad esempio school1.schoolmanagement.com .

Questa è la mia comprensione dell'applicazione multi-tenant. La mia comprensione è giusta? Esiste un'applicazione multi-tenant online che posso esaminare.


1
Cosa intendi con "Esiste un'applicazione multi-tenant online che posso esaminare?"? Vorresti ottenere la fonte, o provare come tenant o eseguire come host? Come notate, l'hosting di domini è un comune esempio multi-tenant, con aziende host grandi e piccole. Google Apps for Business (o qualunque sia l'attuale marchio) è anche un'app multi-tenant a diffusione piuttosto ampia.
Kristian H,

1
Finora sei sulla buona strada. La locazione multipla riguarda la proprietà dei dati. I dati sono segmentati per tenan (proprietari). L'applicazione deve essere la stessa per un semplice motivo: economia di scala. Anche l'archiviazione dei dati potrebbe essere la stessa o potrebbe essere diversa per ogni tenan. I dati non sono condivisibili tra i tenan (o di solito non lo sono, per ora lo so).
Laiv

@KristianH grazie per l'esempio di hosting del dominio, ho capito.
Nomi Ali,

@Laiv Quindi possiamo avere database diversi per ogni client con la propria configurazione separata?
Nomi Ali,

2
Sì. Questo è (IMO) il modo preferibile. Ma è anche quello costoso. Quando dico database diversi potrebbero essere: a) Schemi o istanze db differenti all'interno dello stesso RDBMS oppure b) RDBMS totalmente diversi.
Laiv

Risposte:


9

Sì è quello. Ma la definizione di Wikipedia non è abbastanza generale. Non si rivolge alle architetture multilivello o alle nuove forme di architettura come SOA o microservizi.

La multi-tenancy riguarda i sistemi software e l'isolamento dei dati . Qualche esempio:

  • un sistema a più livelli con un database univoco può essere multi-tenant. Esempio: un sistema SAP è composto da un back-end di database e da un paio di server di applicazioni Web che espongono in modo scalabile servizi Web. È multi-tenant: è possibile aggiungere un nuovo cliente senza modificare l'installazione del software in esecuzione e diversi clienti possono utilizzare il sistema senza mai conoscersi. I dati sono completamente isolati (tecnologia proprietaria).
  • il tuo sistema è composto da uno o più processi che eseguono servizi web che sono esposti a clienti diversi tramite nomi di dominio diversi (ma sono comunque gli stessi processi che lo eseguono sul server). L'isolamento dei dati si ottiene con database separati. È definitivamente multi-tenant.
  • un sistema di microservizi potrebbe similmente eseguire diversi insiemi di servizi Web liberamente accoppiati, ognuno dei quali utilizza un proprio micro-database. Se necessario per ridimensionare, è possibile avviare nuovi cloni degli stessi microservizi che, tramite alcune funzionalità di registrazione, troverebbero i loro peer e si collegheranno automaticamente ad essi, offrendo all'utente il comportamento di una singola applicazione. Quindi ci sono due scenari possibili:
    • se, quando si desidera servire un nuovo cliente, è necessario avviare un nuovo set separato di microservizi e organizzare che i microservizi per un cliente si connettano solo ai microservizi relativi allo stesso cliente, allora è single-tenant.
    • ma se potessi servire nuovi clienti usando le istanze in esecuzione (e i nuovi microservizi sarebbero necessari solo per le prestazioni), allora è multi-tenant

1

Direi di sì, la tua comprensione è sostanzialmente corretta. L'applicazione è condivisa da più clienti e anche i dati di ciascun cliente vengono raccolti nel database. La condivisione dello stesso codice senza che i dati di clienti diversi vengano inseriti nello stesso database non verrebbero probabilmente considerati multi-tenant.


2
@NomiAli No, non considererei quel multi-tenant. Questo sta eliminando un ambiente separato per ogni cliente. uno dei vantaggi del multi-tenant è che il database e il software vengono aggiornati contemporaneamente per tutti i clienti. Una distribuzione e tutti sono nella versione più recente. Di cosa stai parlando è che ogni cliente ha la propria installazione separata. Suppongo che potresti avere una base di codice condivisa ma database diversi, ma sarebbe sciocco poiché devi stare molto attento alle modifiche del tuo DB, rendendolo più costoso, il che vanifica lo scopo del multi-tenant.
Andy,

1
@NomiAli Uno schema per cliente avrebbe ancora più svantaggi di un database per cliente, è ancora più difficile da gestire perché devi eseguire gli stessi script semplicemente cambiando i nomi dello schema. Ancora una volta non è impossibile, ma il punto di un'applicazione multi-tenant è ridurre i costi per il fornitore del software; le cose che stai chiedendo di rimetterle in piedi.
Andy,

2
Quindi, se il mio database solitario, che contiene tutti i tenan si blocca o viene compromesso ... Dove va la riduzione dei costi? E cosa succede quando ogni tenan ha esigenze diverse in termini di risorse e prestazioni? Cosa succede se vogliono avere accesso all'archiviazione dei dati? ... Sì. Diversi archivi di dati per tenan e schemi diversi sono multitenacy. Qui la strategia aziendale e i servizi che vogliamo fornire ai clienti sono più importanti dei dettagli di implementazione. La multi-tenancy è una funzionalità, un valore differenziale. Più è vicino alle esigenze dei clienti, meglio è.
Laiv


4
Si sovrastima un po 'l'aspetto multi-database. Database multipli è solo una decisione di progettazione; puoi avere più database che condividono lo stesso schema e utilizzare uno script per aggiornarli tutti contemporaneamente. Tutte le applicazioni multi-tenant devono separare i dati di ciascun cliente dagli altri clienti; il meccanismo attraverso il quale ciò avviene è un dettaglio di implementazione e dipende da fattori come il grado di isolamento desiderato, ecc.
Robert Harvey,

0

La multi-tenancy è un'architettura in cui una singola istanza di un'applicazione software serve più clienti. Ogni cliente viene chiamato inquilino. Gli inquilini possono avere la possibilità di personalizzare alcune parti dell'applicazione, come il colore dell'interfaccia utente (UI) o le regole aziendali, ma non possono personalizzare il codice dell'applicazione.

In un'architettura multi-tenant, più istanze di un'applicazione operano in un ambiente condiviso. Questa architettura è in grado di funzionare perché ogni tenant è integrato fisicamente, ma logicamente separato; ciò significa che una singola istanza del software verrà eseguita su un server e quindi servirà più tenant. In questo modo, un'applicazione software in un'architettura multi-tenant può condividere un'istanza dedicata di configurazioni, dati, gestione degli utenti e altre proprietà.

Per maggiori informazioni, consultare https://whatis.techtarget.com/definition/multi-tenancy .

Come nel tuo caso, tutti i membri della scuola che si iscrivono al tuo sito saranno autorizzati sulla base di ruoli e permessi di locazione e gli verrà fornito l'accesso ai rispettivi database tramite la stessa applicazione. Un'unica applicazione connessa a più database. Se crei un sottodominio per ogni scuola, questo lo fa ricadere sullo stesso modello di locazione singola.

Spero che questo risponda alla tua domanda.


1
Benvenuto in Ingegneria del software ! Si prega di modificare la risposta di includere un riferimento alla sua fonte ; in questo momento è un caso di plagio .
Glorfindel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.