Multilocação e Configuração de Aplicativos do Azure
A Configuração de Aplicativos do Azure permite que você armazene definições de configuração para seu aplicativo. Ao usar a Configuração de Aplicativos do Azure, você pode implementar facilmente o padrão de Repositório de Configurações Externo. Neste artigo, descrevemos alguns dos recursos da Configuração de Aplicativos do Azure que são úteis ao se trabalhar com sistemas multilocatários e links para diretrizes e exemplos de como usar a Configuração de Aplicativos do Azure em uma solução multilocatário.
Modelos de isolamento
Um repositório 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:
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 um repositório de Configuração de Aplicativos compartilhado. 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 possam ficar fora de sincronia.
Configurações específicas do locatário, como o nome do banco de dados ou identificadores internos de cada locatário. Ou então, talvez você queira especificar diferentes níveis de log para cada locatário, como quando você diagnostica um problema que é 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 múltiplos locatários em um único repositório ou implantar um repositório para cada locatário. Esta decisão deve ser baseada em suas necessidades. Se sua solução usar uma única camada de aplicativo compartilhado para múltiplos locatários, será provável que haja um benefício mínimo no uso de repositórios específicos do locatário. Mas, se você implantar instâncias de aplicativo específicas do locatário, poderá optar por espelhar a mesma abordagem implantando repositórios de configurações 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 Aplicativos do Azure:
Consideração | Repositório compartilhado | Repositório por locatário |
---|---|---|
Isolamento de dados | Baixo. Usar 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 de recurso | Baixo | Médio-alto |
Cenário de exemplo | Grande solução multilocatário com uma camada de aplicativo compartilhada | Locatários da camada Premium com implantações totalmente isoladas |
Repositórios compartilhados
Você pode implantar um repositório compartilhado de Configuração de Aplicativos do Azure para toda a sua solução ou um para cada carimbo. Em seguida, você pode usar o mesmo repositório para todas as configurações de seus locatários e pode 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, talvez corra o risco de exceder qualquer um dos limites de recursos para um único repositório. Nesse cenário, considere se você pode fragmentar seus locatários em um conjunto de repositórios compartilhados para minimizar os custos de implantação e gerenciamento.
Se você seguir essa abordagem, certifique-se de entender as cotas de recursos e os cotas de recursos e os limites aplicáveis. Especificamente, esteja atento ao limite total de armazenamento para a camada de serviço que você usa e certifique-se de não exceder o número máximo de solicitações por hora.
Repositórios por locatário
Em vez disso, você pode optar por implantar um repositório de Configuração de Aplicativos do Azure para cada locatário. A camada standard de Configuração de Aplicativos do Azure permite implantar um número ilimitado de repositórios em sua assinatura. No entanto, essa abordagem geralmente é mais complexa de gerenciar, porque você precisa implantar e configurar mais recursos. Também há uma cobrança para cada recurso de repositório que você implantar.
Considere repositórios específicos do locatário se você tiver uma das seguintes situações:
- Você precisa usar chaves de criptografia gerenciadas pelo cliente, em que as chaves são separadas para cada locatário.
- Seus locatários requerem 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 Aplicativos do Azure é controlada no nível do repositório, portanto, implantando repositórios separados, você pode configurar permissões de acesso separadas.
Recursos da Configuração de Aplicativos do Azure que dão suporte à multilocação
Quando você usa a Configuração de Aplicativos do Azure em um aplicativo multilocatário, há vários recursos que podem ser usados para armazenar e recuperar configurações específicas do locatário.
Prefixos de chave
Na Configuração de Aplicativos 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 registros em log para seu aplicativo. Em uma solução de locatário único, você pode chamar essa configuração de LogLevel
. 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
locatário 2 e assim por diante.
A Configuração de Aplicativos do Azure permite que você especifique nomes de chave longos para dar suporte a múltiplos 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 Configuração de Aplicativos do Azure para cortar o prefixo de chave das chaves, antes de disponibilizá-las 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.
Rótulos
A Configuração de Aplicativos do Azure também oferece 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 múltiplos 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 outras finalidades.
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 poderá ser útil se você tiver implantações de aplicativos separadas para cada locatário.
Cache no aplicativo
Quando você trabalha com a Configuração de Aplicativos do Azure, é importante armazenar em cache as configurações de seu aplicativo, em vez de carregá-las sempre que for usá-las. As bibliotecas do provedor de Configuração de Aplicativos do Azure armazenam em cache as configurações e as atualizam automaticamente.
Você também precisará decidir se seu aplicativo carregará as configurações para um único locatário ou para todos os locatários.
À medida que sua base de locatários cresce, a quantidade de tempo e a memória necessários para carregar as configurações de todos os locatários juntos provavelmente aumentarão. Portanto, na maioria das situações, uma boa prática será 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 em 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 em memória, você não precisa recarregar uma configuração mediante cada solicitação, mas o cache poderá remover instâncias não usadas se o 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.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- John Downs | Engenheiro de software principal
Outros colaboradores:
- Arsen Vladimirskiy | Engenheiro principal de atendimento ao cliente, FastTrack for Azure
- Zhenlan Wang | Gerente de Engenharia de Software Principal, Configuração de Aplicativos do Azure
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
Examine as abordagens de implantação e configuração para multilocação.