Feature Flags / Feature Toggles
Feature Flagging refere-se no desenvolvimento de software ao ligar e desligar funções ou features de software em desenvolvimento durante a execução.
Assim, Feature Flags descrevem uma técnica de programação através da qual você e sua equipe podem entregar software de forma mais rápida e segura e integrar entre equipes. Como o deployment independente de aplicações em termos de tempo é um requisito cada vez mais frequente, Feature Flags oferecem uma solução adequada para isso. Além disso, as Flags ajudam a otimizar os fluxos de trabalho de uma equipe de desenvolvimento.
Termos usados como sinônimos para Feature Flags e Feature Flagging são:
- Feature Toggles / Feature Toggling
- Feature Switches
- Feature Flippers
- Feature Bits
- Conditional Features (em contexto de User Targeting)
Objetivos e vantagens dos Feature Flags em detalhe
Graças aos Feature Flags, você e sua equipe podem:
- disponibilizar software de forma mais rápida e gradual e lançar novas funções para o cliente (Continuous Integration e Continuous Delivery tornam-se mais rápidos e fáceis)
- integrar novos features entre equipes
- testar novos requisitos em ambiente produtivo (sem que os clientes percebam)
- liberar features já desenvolvidos apenas para determinados grupos de usuários
- melhorar gradualmente funcionalidade e UX através de testes regulares
- manter aplicações estáveis em operação desligando funções com erros
- minimizar deployments de bugfix demorados
- desacoplar Software Releases e Deployment de aplicações
- evitar deployments grandes e arriscados, fazendo merge com o branch principal mais frequentemente em vez de raramente fazer merge de Feature Branches longos
- reagir de forma flexível a mudanças de requisitos dos clientes sem deployment adicional
Quando e como os Feature Flags são aplicados?
Na prática, frequentemente features já finalizados ficam parados porque ainda não podem ser utilizados em produção. Os respectivos Feature-Branches não podem ainda ser mergeados.
Graças aos Feature Toggles / Flags, código finalizado pode ser imediatamente integrado e deployed, de forma que as novas funções já estão presentes em segundo plano sem serem visíveis. Isso evita problemas massivos no merge posterior, quando no intervalo se trabalhou em outras partes do software.
O uso de Feature Flags vale a pena adicionalmente nos seguintes casos de uso:
- Continuous Integration e Continuous Delivery (CI / CD)
- Kill-Switch
- Testes A/B com clientes em ambiente produtivo
- Gestão de configuração
- Controle de permissões na aplicação
- Rollout percentual de funções
Existem 3 formas de implementar Feature Flags:
- Implementar Feature Toggles diretamente no código
- Integração através de um arquivo de configuração (config)
- Integração através de um Software de Feature Flag Management
Dicas:
Para manter a complexidade do código o mais baixa possível, você e sua equipe devem:
- usar Feature Flags de forma moderada
- remover Flags não mais utilizadas do ciclo de vida do software
4 Tipos de Feature Flags
Dependendo de quanto tempo os Feature Flags devem permanecer no código e qual tarefa têm, podem ser classificados nas seguintes 4 categorias:
Release Toggle
Release Toggles permitem um Code Deployment de código não testado e incompleto no ambiente produtivo sem ativar o código. Desta forma, por exemplo, Product Managers podem ativar novas funções conforme necessário.
Experiment Toggle
Com Experiment Toggles pode-se controlar o comportamento específico do usuário dentro de uma aplicação. Para isso, os usuários são identificados dentro do sistema de software para então serem controlados de forma direcionada. Assim, novas funções podem ser rapidamente testadas em determinados grupos de pessoas para incorporar conclusões no desenvolvimento posterior.
Ops Toggle
Através de Ops Toggles, equipes de operações podem controlar a operação da aplicação via Feature Toggles. Isso permite rollbacks rápidos de funções e testar a carga do sistema de novas funções em grupos pequenos. Adicionalmente, Ops Toggles permitem desativar funções não necessárias em operação ("Kill-Switches").
Permission Toggle
Através de Permission Toggles pode-se controlar o comportamento específico de usuários conhecidos dentro de uma aplicação. Por exemplo, através desses toggles você pode ativar funções para clientes VIP ou Premium. Testes A/B representam outra possibilidade de aplicação.
Conclusão sobre Feature Toggles / Flags
Feature Toggles ou Flags apoiam equipes a entregar, integrar e testar novas funções e features de forma mais rápida e fácil.
Diferentes tipos de Toggle servem a diferentes objetivos, como testar novas funções em grupos pequenos, ativar permissões específicas ou verificar carga do sistema. Feature Flags e Toggles podem mostrar ou ocultar áreas inteiras de um software ou controlar apenas pequenos blocos de código. Como podem ser utilizados tanto no backend, frontend quanto em toda a aplicação, são flexíveis no uso.
Importante: Assim que Feature Flags não forem mais necessárias no código, você ou sua equipe devem removê-las. Desta forma, você evita que o código se torne muito complexo.