Descrição geral da gestão de funcionalidades
Tradicionalmente, o envio de um novo recurso de aplicativo requer uma reimplantação completa do próprio aplicativo. O teste de um recurso geralmente requer várias implantações do aplicativo. Cada implantação pode alterar o recurso ou expô-lo a clientes diferentes para teste.
O gerenciamento de recursos é uma prática moderna de desenvolvimento de software que separa a liberação de recursos da implantação de código e permite alterações rápidas na disponibilidade de recursos sob demanda. Ele usa uma técnica chamada sinalizadores de recursos (também conhecidos como alternâncias de recursos e opções de recursos) para administrar dinamicamente o ciclo de vida de um recurso.
O gerenciamento de recursos ajuda os desenvolvedores a resolver os seguintes problemas:
- Gerenciamento de ramificação de código: use sinalizadores de recursos para encapsular a nova funcionalidade do aplicativo atualmente em desenvolvimento. Essa funcionalidade é "oculta" por padrão. Você pode enviar o recurso com segurança, mesmo que ele esteja inacabado, e ele permanecerá inativo na produção. Usando essa abordagem, chamada dark deployment, você pode liberar todo o seu código no final de cada ciclo de desenvolvimento. Você não precisa mais manter ramificações de código em 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 recursos para conceder acesso antecipado a novas funcionalidades na produção. Por exemplo, você pode limitar o acesso a membros da equipe ou a testadores beta internos. Esses usuários experimentarão a experiência de produção de fidelidade total em vez de uma experiência simulada ou parcial em um ambiente de teste.
- Flighting: use sinalizadores de recursos para implementar incrementalmente novas funcionalidades para os usuários finais. Você pode segmentar uma pequena porcentagem de sua população de usuários primeiro e aumentar essa porcentagem gradualmente ao longo do tempo.
- Kill switch instantâneo: os sinalizadores de recursos fornecem uma rede de segurança inerente para o lançamento de novas funcionalidades. Você pode ativar e desativar os recursos do aplicativo sem reimplantar nenhum código. Se necessário, você pode desativar rapidamente um recurso sem reconstruir e reimplantar seu aplicativo.
- Ativação seletiva: use sinalizadores de recursos para segmentar seus usuários e fornecer um conjunto específico de recursos para cada grupo. Você pode ter um recurso que funciona apenas em um determinado navegador da Web. Você pode definir um sinalizador de recurso para que apenas os usuários desse navegador possam ver e usar o recurso. Usando essa abordagem, você pode facilmente expandir a lista de navegadores suportados mais tarde sem ter que fazer alterações no código.
Conceitos básicos
Aqui estão vários novos termos relacionados ao gerenciamento de recursos:
- Sinalizador de recurso: um sinalizador de recurso é uma variável com um estado binário de ativado ou desativado. O sinalizador de recurso também tem um bloco de código associado. O estado do sinalizador de recurso aciona se o bloco de código é executado.
- Gerenciador de recursos: um gerenciador de recursos é um pacote de aplicativo que lida com o ciclo de vida de todos os sinalizadores de recursos em um aplicativo. O gerenciador de recursos também fornece funcionalidades adicionais, incluindo o armazenamento em cache de sinalizadores de recursos e a 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 utilizadores, tipos de dispositivos ou navegadores, localizações geográficas e janelas de tempo.
Uma implementação eficaz do gerenciamento de recursos consiste em pelo menos dois componentes trabalhando em conjunto:
- Um aplicativo que faz uso de sinalizadores de recursos.
- Um repositório separado que armazena os sinalizadores de recursos e seus estados atuais.
Usando sinalizadores de recursos em seu código
O padrão básico para implementar sinalizadores de recursos em um aplicativo é simples. Um sinalizador de recurso é uma variável de estado booleano que controla uma instrução condicional em seu código:
if (featureFlag) {
// Run the following code
}
Você pode definir o valor de featureFlag
estaticamente:
bool featureFlag = true;
Você pode avaliar o estado da bandeira com base em determinadas regras:
bool featureFlag = isBetaUser();
Você pode estender o condicional para definir o comportamento do aplicativo para qualquer estado:
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 recursos
Para usar sinalizadores de recursos de forma eficaz, você precisa externalizar todos os sinalizadores de recursos usados em um aplicativo. Você pode usar essa abordagem para alterar estados de sinalizador de recurso sem modificar e reimplantar o próprio aplicativo.
A Configuração de Aplicativo do Azure fornece um repositório centralizado para sinalizadores de recursos. Você pode usá-lo para definir diferentes tipos de sinalizadores de recursos e manipular seus estados de forma rápida e confiante. Em seguida, você pode usar as bibliotecas de Configuração do Aplicativo para várias estruturas de linguagem de programação para acessar facilmente esses sinalizadores de recursos do seu aplicativo.
Próximos passos
Para começar a usar sinalizadores de recursos com a Configuração de Aplicativo do Azure, continue para os seguintes inícios rápidos específicos para o idioma ou a plataforma do seu aplicativo.
Para saber mais sobre como gerenciar sinalizadores de recursos na Configuração do Aplicativo do Azure, continue para o tutorial a seguir.
Os filtros de recursos permitem que você habilite um sinalizador de recurso condicionalmente. A Configuração de Aplicativo do Azure oferece filtros de recursos internos que permitem ativar um sinalizador de recurso somente durante um período específico ou para um público-alvo específico do seu aplicativo. Para obter mais informações, continue para o tutorial a seguir.