O que é uma Feature Flag?
Uma feature flag (ou feature toggle) é uma chave no seu código que permite ligar ou desligar funcionalidades em tempo de execução, sem fazer deploy de código novo.
Feature flags desacoplam o deploy de código do release de funcionalidades. Você pode enviar o código desativado e depois ligá-lo para alguns ou todos os usuários quando quiser - e desligá-lo instantaneamente se algo der errado. Essa ideia simples viabiliza uma entrega mais segura e flexível.
Como uma flag funciona
Uma feature flag envolve o novo comportamento em uma condicional que verifica um valor de configuração em tempo de execução. Quando a flag está desligada, os usuários recebem o comportamento antigo; quando está ligada, recebem o novo. Como a decisão acontece em tempo de execução, você muda o comportamento alterando a configuração em vez de fazer deploy.
Desacoplando deploy de release
O benefício central é separar duas coisas que costumavam estar soldadas juntas. Você pode fazer merge e deploy de código continuamente enquanto mantém as funcionalidades escondidas atrás de flags, e depois liberá-las conforme um cronograma de negócio. Isso torna os deploys menores e menos arriscados e dá às equipes de produto controle sobre o momento do lançamento.
Casos de uso comuns
- Rollouts graduais para uma porcentagem crescente de usuários.
- Testes A/B e experimentação.
- Kill switches instantâneos para mudanças arriscadas.
- Entitlements que liberam funcionalidades por plano ou usuário.
Targeting e rollout gradual
As flags podem ser avaliadas por usuário, então você pode habilitar uma funcionalidade para a equipe interna, depois para 1% dos usuários, depois 10%, e assim por diante. Essa exposição progressiva permite acompanhar as métricas a cada etapa e parar instantaneamente se algo parecer errado, muito antes de a funcionalidade chegar a todos.
Gerenciando a dívida de flags
As flags são poderosas, mas se acumulam. Flags antigas, permanentemente ligadas, poluem o código e criam caminhos condicionais confusos. Equipes disciplinadas tratam as flags temporárias como temporárias, removendo-as assim que uma funcionalidade é totalmente lançada, para que o codebase não se afogue em toggles mortos.
Principais conclusões
- Uma feature flag ativa ou desativa funcionalidades em tempo de execução sem um deploy.
- Ela desacopla o deploy de código do release de funcionalidades, permitindo rollouts mais seguros.
- Limpe as flags temporárias para evitar o acúmulo de dívida de flags.