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 dois tipos de configurações:
As configurações compartilhadas são aquelas que se aplicam a 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.
Configurações específicas do locatário, como o nome do banco de dados de cada locatário ou identificadores internos. 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 um repositório compartilhado de Configuração de Aplicativo do Azure para toda a sua solução ou um 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 LogLevel
como . 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, para soluções multilocatário, geralmente é uma boa prática usar prefixos de chave para gerenciar configurações específicas do locatário e usar rótulos para outros fins.
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 do IConfiguration
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.