Provisionar e catalogar novos locatários usando o padrão SaaS do aplicativo por locatário

Aplica-se a:Banco de Dados SQL do Azure

Este artigo aborda o provisionamento e a catalogação de novos locatários usando o padrão SaaS do aplicativo autônomo por locatário. Este artigo tem duas partes principais:

  • Discussão conceitual de provisionamento e catalogação de novos locatários
  • Um tutorial que destaca o código PowerShell de exemplo que realiza o provisionamento e a catalogação
    • O tutorial usa o aplicativo SaaS de exemplo Wingtip Tickets, adaptado ao padrão de aplicativo autônomo por locatário.

Aplicativo autônomo por padrão de locatário

O padrão de aplicativo autônomo por locatário é um dos vários padrões para aplicativos SaaS multilocatário. Nesse padrão, um aplicativo autônomo é provisionado para cada locatário. O aplicativo compreende componentes de nível de aplicativo e um Banco de Dados SQL do Azure. Cada aplicativo locatário pode ser implantado na assinatura do fornecedor. Como alternativa, o Azure oferece um programa de aplicativos gerenciados no qual um aplicativo pode ser implantado na assinatura de um locatário e gerenciado pelo fornecedor em nome do locatário.

app-per-tenant pattern

Ao implantar um aplicativo para um locatário, o aplicativo e o banco de dados são provisionados em um novo grupo de recursos criado para o locatário. O uso de grupos de recursos separados isola os recursos de aplicativo de cada locatário e permite que eles sejam gerenciados de forma independente. Dentro de cada grupo de recursos, cada instância de aplicativo é configurada para acessar diretamente seu banco de dados correspondente. Esse modelo de conexão contrasta com outros padrões que usam um catálogo para intermediar conexões entre o aplicativo e o banco de dados. E como não há compartilhamento de recursos, cada banco de dados de locatário deve ser provisionado com recursos suficientes para lidar com sua carga de pico. Esse padrão tende a ser usado para aplicativos SaaS com menos locatários, onde há uma forte ênfase no isolamento do locatário e menos ênfase nos custos de recursos.

Usando um catálogo de locatário com o padrão de aplicativo por locatário

Embora o aplicativo e o banco de dados de cada locatário estejam totalmente isolados, vários cenários de gerenciamento e análise podem operar entre locatários. Por exemplo, a aplicação de uma alteração de esquema para uma nova versão do aplicativo requer alterações no esquema de cada banco de dados de locatário. Os cenários de relatórios e análises também podem exigir acesso a todos os bancos de dados de locatário, independentemente de onde eles são implantados.

Diagram that shows how to use a tenant catalog with the application per tenant pattern.

O catálogo de locatários contém um mapeamento entre um identificador de locatário e um banco de dados de locatário, permitindo que um identificador seja resolvido para um servidor e um nome de banco de dados. Na aplicação SaaS Wingtip, o identificador do inquilino é calculado como um hash do nome do inquilino, embora possam ser utilizados outros esquemas. Embora os aplicativos autônomos não precisem do catálogo para gerenciar conexões, o catálogo pode ser usado para definir o escopo de outras ações para um conjunto de bancos de dados de locatário. Por exemplo, o Elastic Query pode usar o catálogo para determinar o conjunto de bancos de dados nos quais as consultas são distribuídas para relatórios entre locatários.

Biblioteca de Clientes da Base de Dados Elástica

No aplicativo de exemplo Wingtip, o catálogo é implementado pelos recursos de gerenciamento de estilhaços da EDCL (Elastic Database Client Library ). A biblioteca permite que um aplicativo crie, gerencie e use um mapa de estilhaços armazenado em um banco de dados. No exemplo de Wingtip Tickets, o catálogo é armazenado no banco de dados do catálogo do locatário. O estilhaço mapeia uma chave de locatário para o fragmento (banco de dados) no qual os dados desse locatário estão armazenados. As funções EDCL gerenciam um mapa de estilhaços global armazenado em tabelas no banco de dados do catálogo de locatários e um mapa de estilhaços local armazenado em cada fragmento.

As funções EDCL podem ser chamadas a partir de aplicativos ou scripts do PowerShell para criar e gerenciar as entradas no mapa de estilhaços. Outras funções EDCL podem ser usadas para recuperar o conjunto de fragmentos ou conectar-se ao banco de dados correto para determinada chave de locatário.

Importante

Não edite diretamente os dados no banco de dados de catálogo ou o mapa de estilhaços local nos bancos de dados de locatário. As atualizações diretas não são suportadas devido ao alto risco de corrupção de dados. Em vez disso, edite os dados de mapeamento usando apenas APIs EDCL.

Provisionamento de locatários

Cada locatário requer um novo grupo de recursos do Azure, que deve ser criado antes que os recursos possam ser provisionados dentro dele. Quando o grupo de recursos existir, um modelo de Gerenciamento de Recursos do Azure poderá ser usado para implantar os componentes do aplicativo e o banco de dados e, em seguida, configurar a conexão do banco de dados. Para inicializar o esquema do banco de dados, o modelo pode importar um arquivo bacpac. Como alternativa, o banco de dados pode ser criado como uma cópia de um banco de dados modelo. A base de dados é depois atualizada com os dados iniciais do local e registada no catálogo.

Tutorial

Neste tutorial, ficará a saber como:

  • Provisionar um catálogo
  • Registre os bancos de dados de locatários de exemplo que você implantou anteriormente no catálogo
  • Provisionar um locatário adicional e registrá-lo no catálogo

Um modelo do Azure Resource Manager é usado para implantar e configurar o aplicativo, criar o banco de dados do locatário e importar um arquivo bacpac para inicializá-lo. A solicitação de importação pode ser enfileirada por vários minutos antes de ser acionada.

No final deste tutorial, você tem um conjunto de aplicativos de locatário autônomos, com cada banco de dados registrado no catálogo.

Pré-requisitos

Para concluir este tutorial, devem ser cumpridos os seguintes pré-requisitos:

  • O Azure PowerShell está instalado. Para obter mais detalhes, veja Introdução ao Azure PowerShell
  • Os três aplicativos de locatário de exemplo são implantados. Para implantar esses aplicativos em menos de cinco minutos, consulte Implantar e explorar o padrão Wingtip Tickets SaaS Standalone Application.

Provisionar o catálogo

Nesta tarefa, você aprenderá a provisionar o catálogo usado para registrar todos os bancos de dados de locatário. Irá:

  • Provisione o banco de dados de catálogo usando um modelo de gerenciamento de recursos do Azure. O banco de dados é inicializado importando um arquivo bacpac.
  • Registre os aplicativos de locatário de exemplo que você implantou anteriormente. Cada inquilino é registado com uma chave construída a partir de um hash do nome do inquilino. O nome do locatário também é armazenado em uma tabela de extensão no catálogo.
  1. No ISE do PowerShell, abra ...\Learning Modules\UserConfig.psm e atualize o valor do usuário> para o <valor usado ao implantar os três aplicativos de exemplo. Salve o arquivo.

  2. No ISE do PowerShell, abra ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 e defina $Scenario = 1. Implante o catálogo de locatários e registre os locatários predefinidos.

  3. Adicione um ponto de interrupção colocando o cursor em qualquer lugar na linha que diz & $PSScriptRoot\New-Catalog.ps1, e pressione F9.

    setting a breakpoint for tracing

  4. Execute o script pressionando F5.

  5. Depois que a execução do script parar no ponto de interrupção, pressione F11 para entrar no script New-Catalog.ps1 .

  6. Rastreie a execução do script usando as opções do menu Depurar, F10 e F11, para passar por cima ou entrar em funções chamadas.

Quando o script for concluído, o catálogo existirá e todos os locatários de exemplo serão registrados.

Agora olhe para os recursos que você criou.

  1. Abra o portal do Azure e navegue pelos grupos de recursos. Abra o grupo de recursos wingtip-sa-catalog-user>< e anote o servidor de catálogo e o banco de dados.

  2. Abra o banco de dados no portal e selecione Data explorer no menu à esquerda. Clique no comando Login e, em seguida, digite a senha = P@ssword1.

  3. Explore o esquema do banco de dados tenantcatalog .

    • Os objetos no __ShardManagement esquema são todos fornecidos pela Biblioteca de Cliente do Banco de Dados Elástico.
    • A Tenants tabela e TenantsExtended a exibição são extensões adicionadas no exemplo que demonstram como você pode estender o catálogo para fornecer valor adicional.
  4. Execute a consulta, SELECT * FROM dbo.TenantsExtended.

    data explorer

    Como alternativa ao uso do Data Explorer, você pode se conectar ao banco de dados a partir do SQL Server Management Studio. Para fazer isso, conecte-se ao servidor wingtip-

    Observe que você não deve editar dados diretamente no catálogo - sempre use as APIs de gerenciamento de estilhaços.

Provisionar um novo aplicativo de locatário

Nesta tarefa, você aprenderá a provisionar um aplicativo de locatário único. Irá:

  • Crie um novo grupo de recursos para o locatário.
  • Provisione o aplicativo e o banco de dados no novo grupo de recursos usando um modelo de gerenciamento de recursos do Azure. Essa ação inclui inicializar o banco de dados com esquema comum e dados de referência importando um arquivo bacpac.
  • Inicialize o banco de dados com informações básicas do locatário. Esta ação inclui a especificação do tipo de local, que determina a fotografia usada como plano de fundo no site de eventos.
  • Registre o banco de dados no banco de dados do catálogo.
  1. No ISE do PowerShell, abra ...\Learning Modules\ProvisionTenants\Demo-ProvisionAndCatalog.ps1 e defina $Scenario = 2. Implantar o catálogo de locatários e registrar os locatários predefinidos

  2. Adicione um ponto de interrupção no script colocando o cursor em qualquer lugar na linha 49 que diz e, em seguida, & $PSScriptRoot\New-TenantApp.ps1pressione F9.

  3. Execute o script pressionando F5.

  4. Depois que a execução do script parar no ponto de interrupção, pressione F11 para entrar no script New-Catalog.ps1 .

  5. Rastreie a execução do script usando as opções do menu Depurar, F10 e F11, para passar por cima ou entrar em funções chamadas.

Depois que o locatário for provisionado, o site de eventos do novo locatário será aberto.

red maple racing

Em seguida, você pode inspecionar os novos recursos criados no portal do Azure.

red maple racing resources

Para interromper a cobrança, exclua grupos de recursos

Quando terminar de explorar o exemplo, exclua todos os grupos de recursos criados para interromper o faturamento associado.

Recursos adicionais

Próximos passos

Neste tutorial, ficou a saber:

  • Como implantar o aplicativo autônomo SaaS de tíquetes Wingtip.
  • Sobre os servidores e bancos de dados que compõem o aplicativo.
  • Como excluir recursos de exemplo para interromper a cobrança relacionada.

Você pode explorar como o catálogo é usado para dar suporte a vários cenários entre locatários usando a versão de banco de dados por locatário do aplicativo SaaS de tíquetes Wingtip.