Feature flag (chave de funcionalidade)

Liga e desliga uma funcionalidade por configuração, sem precisar subir código novo.

Hard

O que é

Feature flag separa duas coisas que costumam vir grudadas: subir o código e liberar a função. Com a flag, o código já está no ar, mas a feature só aparece pra quem você escolher, no momento que você quiser.

Isso muda bastante o jogo do lançamento. Dá pra liberar pra um grupo pequeno, medir como vai, e ir abrindo aos poucos. E se algo quebra, você desliga na hora, sem precisar de um deploy de emergência. É por isso que a flag vira a base de um rollout gradual e do teste A/B rodando em produção.

O cuidado fica por conta de não acumular flag velha. Uma flag de lançamento deveria sair depois que a feature consolida, porque, se ela fica, vira dívida técnica e fonte de bug.

Em uma frase

Vamos subir esse checkout atrás de uma feature flag e abrir só pra 5% primeiro.

A pergunta que ele responde

Como libero uma funcionalidade aos poucos e desligo rápido se algo der errado?

Quando usar

Ajuda num rollout gradual, num beta com grupo fechado, num teste A/B, ou quando você quer um botão de desligar rápido pra usar em incidente.

Como não usar

O cuidado é não deixar uma flag temporária viver pra sempre dentro do código, sem nenhuma política de limpeza.

Na prática

Pense no time liberando o checkout novo pra 5% das contas via flag. Eles acompanham conversão e erro de perto e vão abrindo mais conforme a métrica se mantém segura.

Não confunda com

Vale separar feature flag de teste A/B. A flag é o mecanismo que controla quem vê o quê. O teste A/B se apoia nesse controle pra ir além: comparar variações e medir qual delas tem mais efeito. Ou seja, uma é a chave, o outro é o experimento que usa a chave.

Em inglês

Feature Flagging

Pronúncia

fí-tcher flég

Também chamado de

feature flag, feature toggle, chave de feature

Origem

n/a

Fonte

Saiba mais

Martin Fowler, artigo Feature Toggles (Feature Flags)