Skip to content
Latchkey

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.

Guias relacionados