L'applicazione SaaS Wingtip Tickets

Si applica a: Database SQL di Azure

La stessa applicazione SaaS Wingtip Tickets viene implementata in ciascuno dei tre campioni. L'app è un semplice elenco di eventi e un'app SaaS che fa riferimento a piccole sedi: teatri, club e così via. Ogni sede è un tenant dell'app e ha i propri dati: dettagli della sede, elenchi di eventi, clienti, ordini di biglietti e così via. L'app, insieme agli script di gestione e alle esercitazioni, presenta uno scenario SaaS end-to-end. Sono inclusi i tenant di provisioning, il monitoraggio e la gestione delle prestazioni, la gestione dello schema e il reporting e analisi su più tenant.

Tre modelli di applicazione SaaS e tenancy

Sono disponibili tre versioni dell'app. Ognuna esplora un diverso modello di tenancy del database nel database SQL di Azure. Il primo usa un'applicazione autonoma per ogni tenant con il proprio database. Il secondo usa un'app multi-tenant con un database per ogni tenant. Il terzo esempio usa un'app multi-tenant con database multi-tenant partizionati.

Tre modelli di tenancy

Ogni esempio include il codice applicazione, gli script di gestione ed esercitazioni che esplorano una gamma di modelli di progettazione e gestione. Ogni esempio si distribuisce in meno di cinque minuti. Tutti e tre possono essere distribuiti fianco a fianco in modo da poter vedere le differenze di gestione e progettazione.

Modello di applicazione autonoma per ogni tenant

Il modello di app autonoma per ogni tenant usa un'applicazione a tenant singolo con un database per ogni tenant. L'app di ogni tenant, incluso il relativo database, viene distribuita in un gruppo di risorse di Azure separato. Il gruppo di risorse può essere distribuito nella sottoscrizione del provider di servizi o nella sottoscrizione del tenant e gestito dal provider per conto del tenant. Il modello di applicazione autonoma per ogni tenant fornisce il massimo isolamento dei tenant, ma è in genere il più costoso perché non esiste alcuna possibilità di condividere le risorse tra più tenant. Questo modello è particolarmente adatto ad applicazioni che potrebbero essere più complesse e che vengono distribuite in un numero inferiore di tenant. Con le distribuzioni autonome, l'app può essere più facilmente personalizzata per ogni tenant rispetto ad altri modelli.

Vedere le esercitazioni e il codice in GitHub .../Microsoft/WingtipTicketsSaaS-StandaloneApp.

Modello con un database per ogni tenant

Il modello con un database per ogni tenant è utile per i provider di servizi che si occupano di isolamento dei tenant e vogliono eseguire un servizio centralizzato che consente un utilizzo efficiente delle risorse condivise. Viene creato un database per ogni locale di ritrovo, o tenant, e tutti i database sono gestiti centralmente. I database possono essere ospitati in pool elastici per offrire una gestione delle prestazioni economica e semplice, che sfrutta i modelli di carico di lavoro imprevisto dei tenant. Un database di catalogo contiene il mapping tra i tenant e i relativi database. Questo mapping viene gestito usando le funzionalità di gestione delle mappe partizioni della libreria client del database elastico, che offre una gestione efficiente delle connessioni all'applicazione.

Vedere le esercitazioni e il codice in GitHub .../Microsoft/WingtipTicketsSaaS-DbPerTenant.

Modello con database multi-tenant partizionati

I database multi-tenant sono efficaci per i provider di servizi che cercano un costo per tenant inferiore e accettano un minore isolamento dei tenant. Questo modello consente di inserire un numero elevato di tenant in un unico database, riducendo il costo per tenant. Partizionando i tenant tra più database diventa possibile una scalabilità quasi infinita. Anche in questo caso un database di catalogo esegue il mapping dei tenant ai database.

Questo modello consente anche un modello ibrido in cui è possibile ottimizzare i costi con più tenant in un database o ottimizzare l'isolamento con un singolo tenant nel proprio database. La scelta può essere effettuata tenant per tenant, quando viene eseguito il provisioning del tenant o in seguito, senza alcun impatto sull'applicazione. Questo modello può essere usato in modo efficace quando è necessario trattare in modo diverso i gruppi di tenant. Ad esempio, i tenant a basso costo possono essere assegnati a database condivisi, mentre i tenant premium possono essere assegnati ai propri database.

Vedere le esercitazioni e il codice in GitHub .../Microsoft/WingtipTicketsSaaS-MultiTenantDb.

Passaggi successivi

Descrizioni concettuali

Esercitazioni e codice