Alternância de recursos - Feature toggle

A alternância característica (também interruptor característica , bandeira característica , portão característica , característica aleta , funcionalidade condicional , etc.) é uma técnica de desenvolvimento de software que as tentativas para proporcionar uma alternativa para a manutenção de múltiplos ramos em código fonte (conhecido como ramos apresentam), tal que um recurso de software pode ser testado antes mesmo de ser concluído e estar pronto para lançamento . Um recurso de alternância é usado para ocultar, habilitar ou desabilitar o recurso durante o tempo de execução. Por exemplo, durante o processo de desenvolvimento, um desenvolvedor pode habilitar o recurso para teste e desabilitá-lo para outros usuários.

A liberação contínua e a implantação contínua fornecem aos desenvolvedores um feedback rápido sobre seu código. Isso requer a integração de suas alterações de código o mais cedo possível. Ramificações de recursos introduzem um desvio para este processo. A alternância de recursos é uma técnica importante para entrega contínua .

A técnica permite que os desenvolvedores liberem uma versão de um produto que possui recursos inacabados. Esses recursos inacabados são ocultados (alternados) para que não apareçam na interface do usuário . Isso permite que muitas pequenas versões incrementais de software sejam entregues sem o custo de ramificações e mesclagens constantes . Os alternadores de recursos podem permitir ciclos de integração de software mais curtos. Uma equipe trabalhando em um projeto pode usar alternadores de recursos para acelerar o processo de desenvolvimento, que também pode incluir o código incompleto.

Implementação

As alternâncias de recursos são essencialmente variáveis usadas em instruções condicionais . Portanto, os blocos dentro dessas declarações condicionais podem ser alternados 'ligado ou desligado' dependendo do valor da alternância de recurso. Isso permite que os desenvolvedores controlem o fluxo de seu software e contornem os recursos que não estão prontos para implantação. Um bloco de código por trás de uma variável de tempo de execução geralmente ainda está presente e pode ser executado condicionalmente, às vezes dentro do mesmo ciclo de vida do aplicativo; um bloco de código atrás de uma diretiva de pré - processador ou comentado não seria executável. Uma abordagem de sinalizador de recurso pode usar qualquer um desses métodos para separar caminhos de código em diferentes fases de desenvolvimento.

O principal uso da alternância de recursos é evitar o conflito que pode surgir ao mesclar alterações no software no último momento antes do lançamento, embora isso possa levar a dívidas de alternância . A dívida de alternância surge devido ao código morto presente no software depois que um recurso foi ativado permanentemente e produz sobrecarga. Esta parte do código deve ser removida com cuidado para não perturbar outras partes do código.

Existem dois tipos principais de alternância de recursos. Um é uma alternância de lançamento, que o desenvolvedor determina manter ou remover antes do lançamento de um produto, dependendo de seu funcionamento. O outro é um alternador de negócios, que é mantido porque satisfaz um uso diferente em comparação com o do código antigo.

Os alternadores de recursos podem ser usados ​​nos seguintes cenários:

  • Adicionando um novo recurso a um aplicativo.
  • Aprimorando um recurso existente em um aplicativo.
  • Escondendo ou desabilitando um recurso.
  • Estendendo uma interface.

Os alternadores de recursos podem ser armazenados como:

  • Entradas de linha em um banco de dados.
  • Uma propriedade em um arquivo de configuração.
  • Uma entrada em um serviço de sinalizador de recurso externo.

Grupos de recursos

Os grupos de recursos consistem em alternadores de recursos que funcionam juntos. Isso permite que o desenvolvedor gerencie facilmente um conjunto de alternadores relacionados.

Lançamento canário

Uma versão canário (ou lançamento canário ou implantação canário) permite que os desenvolvedores tenham recursos testados de forma incremental por um pequeno conjunto de usuários. Sinalizadores de recursos fornecem uma maneira alternativa de fazer lançamentos canário e permitir a segmentação por localizações geográficas ou até mesmo por atributos do usuário. Se o desempenho de um recurso não for satisfatório, ele pode ser revertido sem quaisquer efeitos adversos.

Martin Fowler afirma que a alternância de recursos "deve ser sua última escolha quando você está lidando com a colocação de recursos em produção". Em vez disso, é melhor dividir o recurso em partes menores que cada uma possa ser implementada e introduzida com segurança no produto lançado, sem causar outros problemas.

A alternância de recursos é usada por muitos sites grandes, incluindo Flickr, Disqus, Etsy, reddit, Gmail e Netflix, bem como softwares como o Google Chrome Canary .

Veja também

Referências