Partilhar via


Multilocação e Configuração de Aplicativo do Azure

A Configuração de Aplicativo do Azure permite que você armazene definições de configuração para seu aplicativo. Usando a Configuração de Aplicativo do Azure, você pode implementar facilmente o padrão de Repositório de Configuração Externa. Neste artigo, descrevemos alguns dos recursos da Configuração de Aplicativo do Azure que são úteis ao trabalhar com sistemas multilocatários e vinculamos a orientações e exemplos de como usar a Configuração de Aplicativo do Azure em uma solução multilocatário.

Modelos de isolamento

Uma loja refere-se a uma única instância do serviço de Configuração de Aplicativos do Azure.

Em uma solução multilocatário, é comum ter algumas configurações que você compartilha entre vários locatários, como configurações globais ou configurações que se aplicam a todos os locatários em um carimbo de implantação. As configurações globais geralmente são melhor armazenadas em uma loja de Configuração de Aplicativo compartilhada. Seguindo essa abordagem, você minimiza o número de locais que precisa atualizar quando o valor de uma configuração é alterado. Essa abordagem também minimiza o risco de que as configurações fiquem fora de sincronia.

Geralmente, você também terá configurações específicas do locatário. Por exemplo, talvez seja necessário armazenar o nome do banco de dados ou identificadores internos de cada locatário. Ou, talvez você queira especificar diferentes níveis de log para cada locatário, como quando você diagnostica um problema relatado por um locatário específico e precisa coletar logs de diagnóstico desse locatário. Você pode escolher se deseja combinar as configurações específicas do locatário para vários locatários em um único armazenamento ou implantar um repositório para cada locatário. Esta decisão deve basear-se nos seus requisitos. Se sua solução usa uma única camada de aplicativo compartilhado para vários locatários, é provável que haja um benefício mínimo em usar lojas específicas do locatário. Mas se você implantar instâncias de aplicativos específicas do locatário, poderá optar por espelhar a mesma abordagem implantando repositórios de configuração específicos do locatário.

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para a Configuração de Aplicativo do Azure:

Consideração Loja partilhada Loja por inquilino
Isolamento de dados Baixo. Use prefixos de chave ou rótulos para identificar os dados de cada locatário Alto
Isolamento de desempenho Baixa Alta
Complexidade da implantação Baixo Médio-alto
Complexidade operacional Baixo Médio-alto
Custo dos recursos Baixo Médio-alto
Cenário de exemplo Solução multilocatária grande com uma camada de aplicativo compartilhada Locatários de nível Premium com implantações totalmente isoladas

Lojas partilhadas

Você pode implantar uma loja de Configuração de Aplicativo do Azure compartilhada para toda a sua solução ou para cada carimbo. Em seguida, você pode usar a mesma loja para todas as configurações dos locatários e usar prefixos de chave ou rótulos para distingui-los.

Se você precisar armazenar uma grande quantidade de dados por locatário ou se precisar dimensionar para um grande número de locatários, correrá o risco de exceder qualquer um dos limites de recursos para um único armazenamento. Nesse cenário, considere se você pode fragmentar seus locatários em um conjunto de lojas compartilhadas, para minimizar os custos de implantação e gerenciamento.

Se você seguir essa abordagem, certifique-se de entender as cotas de recursos e os limites aplicáveis. Em particular, esteja atento ao limite total de armazenamento para a camada de serviço que você usa e certifique-se de que não excederá o máximo de solicitações por hora.

Lojas por inquilino

Em vez disso, você pode optar por implantar um repositório de Configuração de Aplicativo do Azure para cada locatário. A camada padrão da Configuração de Aplicativo do Azure permite que você implante um número ilimitado de lojas em sua assinatura. No entanto, essa abordagem geralmente é mais complexa de gerenciar, porque você precisa implantar e configurar mais recursos. Há também uma cobrança para cada recurso de armazenamento implantado.

Considere lojas específicas do locatário se você tiver uma das seguintes situações:

  • Você precisa usar chaves de criptografia gerenciadas pelo cliente, onde as chaves são separadas para cada locatário.
  • Seus locatários exigem que seus dados de configuração sejam completamente isolados dos dados de outros locatários. A permissão de acesso para a Configuração de Aplicativo do Azure é controlada no nível da loja, portanto, implantando repositórios separados, você pode configurar permissões de acesso separadas.

Recursos da Configuração de Aplicativo do Azure que dão suporte à multilocação

Quando você usa a Configuração do Aplicativo do Azure em um aplicativo multilocatário, há vários recursos que você pode usar para armazenar e recuperar configurações específicas do locatário.

Prefixos de chave

Na Configuração de Aplicativo do Azure, você trabalha com pares chave-valor que representam as configurações do aplicativo. A chave representa o nome da definição de configuração. Você pode usar uma estrutura de nomenclatura hierárquica para suas chaves. Em uma solução multilocatário, considere usar um identificador de locatário como o prefixo para suas chaves.

Por exemplo, suponha que você precise armazenar uma configuração para indicar o nível de log para seu aplicativo. Em uma solução de locatário único, você pode nomear essa configuração LogLevelcomo . Em uma solução multilocatário, você pode optar por usar um nome de chave hierárquica, como tenant1/LogLevel para locatário 1, tenant2/LogLevel para locatário 2 e assim por diante.

A Configuração de Aplicativo do Azure permite especificar nomes de chave longos, para dar suporte a vários níveis em uma hierarquia. Se você optar por usar nomes de chave longos, certifique-se de entender os limites de tamanho para chaves e valores.

Ao carregar a configuração de um único locatário em seu aplicativo, você pode especificar um filtro de prefixo de chave para carregar apenas as chaves desse locatário. Você também pode configurar a biblioteca do provedor para a Configuração de Aplicativo do Azure para cortar o prefixo da chave das chaves, antes que ele as disponibilize para seu aplicativo. Quando você corta o prefixo da chave, seu aplicativo vê um nome de chave consistente, com os valores desse locatário carregados no aplicativo.

Etiquetas

A Configuração de Aplicativo do Azure também dá suporte a rótulos, que permitem que você tenha valores separados com a mesma chave.

Os rótulos geralmente são usados para controle de versão, trabalho com vários ambientes de implantação ou para outros fins em sua solução. Embora você possa usar identificadores de locatário como rótulos, não poderá usar rótulos para mais nada. Portanto, geralmente é uma boa prática usar prefixos de chave em vez de rótulos, quando você trabalha com uma solução multilocatário.

Se você decidir usar rótulos para cada locatário, seu aplicativo poderá carregar apenas as configurações de um locatário específico usando um filtro de rótulo. Essa abordagem pode ser útil se você tiver implantações de aplicativos separadas para cada locatário.

Cache do lado do aplicativo

Quando você trabalha com a Configuração de Aplicativo do Azure, é importante armazenar em cache as configurações em seu aplicativo, em vez de carregá-las toda vez que você usá-las. As bibliotecas do provedor de Configuração de Aplicativo do Azure armazenam em cache as configurações e as atualizam automaticamente.

Você também precisa decidir se seu aplicativo carrega as configurações para um único locatário ou para todos os locatários.

À medida que sua base de locatários cresce, é provável que a quantidade de tempo e a memória necessária para carregar as configurações de todos os locatários juntos aumentem. Portanto, na maioria das situações, é uma boa prática carregar as configurações para cada locatário separadamente, quando seu aplicativo precisar delas.

Se você carregar as definições de configuração de cada locatário separadamente, seu aplicativo precisará armazenar em cache cada conjunto de configurações separadamente para quaisquer outros. Em aplicativos .NET, considere usar um cache na memória para armazenar em cache o objeto IConfiguration do locatário e, em seguida, use o identificador do locatário como a chave de cache. Usando um cache na memória, você não precisa recarregar uma configuração a cada solicitação, mas o cache pode remover instâncias não utilizadas se seu aplicativo estiver sob pressão de memória. Você também pode definir tempos de expiração para as definições de configuração de cada locatário.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • John Downs - Brasil | Engenheiro de Software Principal

Outros contribuidores:

  • Arsen Vladimirskiy - Brasil | Engenheiro de Clientes Principal, FastTrack for Azure
  • Zhenlan Wang - Brasil | Gerente Principal de Engenharia de Software, Configuração de Aplicativo do Azure

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos

Analise as abordagens de implantação e configuração para multilocação.