Visão geral do gerenciamento de recursos

Tradicionalmente, o envio de um novo recurso de aplicativo exige uma reimplantação completa do aplicativo em si. O teste de um recurso geralmente requer várias implantações do aplicativo. Cada implantação pode alterar o recurso ou expor o recurso a diferentes clientes para teste.

O gerenciamento de recursos é uma prática moderna de desenvolvimento de software que separa a liberação do recurso da implantação do código e permite alterações rápidas na disponibilidade de recursos sob demanda. Ele usa uma técnica chamada sinalizador de recursos (também conhecida como alternância de funcionalidades e opções de recurso) para administrar o ciclo de vida de um recurso dinamicamente.

O gerenciamento de recursos ajuda os desenvolvedores a lidar com os seguintes problemas:

  • Gerenciamento de ramificação de código: Use sinalizadores de recurso para encapsular a nova funcionalidade de aplicativo no momento em desenvolvimento. Essa funcionalidade é "oculta" por padrão. Você pode enviar o recurso com segurança, embora não esteja concluído, e ele permanecerá inativo na produção. Usando essa abordagem, chamada implantação escura, você pode liberar todo o código no final de cada ciclo de desenvolvimento. Você não precisa mais manter as ramificações de código entre vários ciclos de desenvolvimento porque um determinado recurso requer mais de um ciclo para ser concluído.
  • Teste em produção: Use sinalizadores de recurso para permitir acesso antecipado a uma nova funcionalidade em produção. Por exemplo, limite esse acesso apenas aos membros da equipe ou aos testadores beta internos. Esses usuários obterão a experiência de produção com fidelidade total, em vez de uma experiência simulada ou parcial em um ambiente de teste.
  • Disponibilizar versão piloto: Use os sinalizadores de recurso para distribuir uma nova funcionalidade aos usuários finais de forma incremental. Você pode direcionar uma pequena porcentagem da população do usuário primeiro e aumentar essa porcentagem gradualmente ao longo do tempo.
  • Comutador de encerramento instantâneo:Os sinalizadores de recurso fornecem uma rede de segurança inerente para liberação de uma nova funcionalidade. Você pode ativar e desativar recursos do aplicativo sem reimplantar nenhum código. Você obtém a capacidade de desabilitar rapidamente um recurso, se necessário, sem a necessidade de recompilar e reimplantar seu aplicativo.
  • Ativação seletiva: Use os sinalizadores de recurso como uma maneira de segmentar os usuários e fornecer um conjunto específico de recursos para cada grupo. Você pode ter um recurso que funciona apenas em determinado navegador da Web. Defina um sinalizador de recurso para que somente os usuários desse navegador possam ver e usar o recurso. Usando essa abordagem, você pode expandir com facilidade a lista de navegadores compatíveis posteriormente sem precisar alterar códigos.

Conceitos básicos

Veja os vários novos termos relacionados ao gerenciamento de recursos:

  • Sinalizador de recurso: Um sinalizador de recurso é uma variável com um estado binário igual a ativado ou desativado. O sinalizador de recurso também tem um bloco de código associado. O estado do sinalizador de recursos decide se o bloco de código será executado ou não.
  • Um gerenciador de recursos é um pacote de aplicativos que trata do ciclo de vida de todos os sinalizadores de recurso em um aplicativo . Normalmente, o gerenciador de recursos fornece funcionalidades adicionais, como cache de sinalizadores de recursos e atualização de seus estados.
  • Filtro: Um filtro é uma regra para avaliar o estado de um sinalizador de recurso. Os filtros potenciais incluem grupos de usuários, tipos de dispositivo ou navegador, localizações geográficas e janelas de tempo.

Uma implementação efetiva do gerenciamento de recursos consiste em pelo menos dois componentes trabalhando em conjunto:

  • Um aplicativo que usa sinalizadores de recursos.
  • Um repositório separado que armazena os sinalizadores de recursos e seus estados atuais.

Usando sinalizadores de recurso em seu código

O padrão básico para implementar sinalizadores de recurso em um aplicativo é simples. Um sinalizador de recurso é uma variável de estado booliana que controla uma instrução condicional em seu código:

if (featureFlag) {
    // Run the following code
}

Você pode definir o valor como featureFlag estaticamente:

bool featureFlag = true;

Você também pode avaliar o estado do sinalizador com base em determinadas regras:

bool featureFlag = isBetaUser();

Você pode estender a condicional para definir o comportamento do aplicativo para qualquer um dos estados:

if (featureFlag) {
    // This following code will run if the featureFlag value is true
} else {
    // This following code will run if the featureFlag value is false
}

Repositório de sinalizadores de recurso

Para usar sinalizadores de recursos com eficiência, você precisará externalizar todos os sinalizadores de recursos usados em um aplicativo. Você pode usar essa abordagem para alterar os estados do sinalizador de recurso sem modificar e reimplantar o aplicativo em si.

A Configuração de Aplicativos do Azure foi projetada para ser um repositório centralizado de sinalizadores de recurso. Você pode utilizá-la para definir diferentes tipos de sinalizadores de recurso e manipular seus estados de maneira rápida e segura. Você pode usar as bibliotecas da Configuração de Aplicativos para várias estruturas de linguagem de programação para acessar esses sinalizadores de recurso com facilidade em seu aplicativo.

Os sinalizadores de recursos em um aplicativo ASP.NET Core mostram como o provedor da Configuração de Aplicativos .NET e as bibliotecas do Gerenciamento de Recursos são usados juntos para implementação de sinalizadores de recursos para o aplicativo Web ASP.NET. Para obter mais informações sobre sinalizadores de recursos na Configuração de Aplicativos do Azure, confira os seguintes artigos:

Próximas etapas