Flag de funcionalidade

Uma chave no código que liga ou desliga uma funcionalidade sem precisar de novo deploy.

Hard

O que é

Flag de funcionalidade é um interruptor que controla, em tempo real, se uma parte do produto está ativa ou não. O código da funcionalidade já está lá, mas envolto numa condição. Com a flag ligada, a funcionalidade aparece. Desligada, fica invisível. E dá pra ligar só pra um grupo: um time interno, dez por cento dos usuários, uma região.

O valor é desacoplar entregar código de liberar funcionalidade. A engenharia pode subir algo inacabado em segurança, porque está desligado. O time pode liberar aos poucos e observar. Se algo der errado, desliga na hora, sem esperar um novo deploy. É o que torna lançamento gradual e teste A/B viáveis na prática.

Na prática, flags exigem disciplina. Cada flag é uma bifurcação no código, e flag esquecida ligada por meses vira dívida e confusão. O combinado saudável é ligar, observar, decidir, e então remover a flag.

Em uma frase

Sobe atrás de uma feature flag pra gente liberar gradual e desligar rápido se algo quebrar.

A pergunta que ele responde

Como libero uma funcionalidade só pra parte dos usuários e desligo na hora se der problema?

Quando usar

Quando você quer liberar uma funcionalidade aos poucos, testar em produção com segurança, ou ter um botão de desligar rápido.

Como não usar

Acumular flags antigas que ninguém remove, transformando o código numa teia de condições que ninguém entende mais.

Na prática

O novo checkout sobe desligado por flag, é liberado primeiro pro time interno, depois pra dez por cento, e só então pra todo mundo.

Não confunda com

Flag de funcionalidade não é teste A/B: a flag é o mecanismo que liga e desliga, o teste A/B é o experimento que compara versões. O teste A/B costuma usar flags, mas flag sozinha só controla exposição, não mede nada.

Em inglês

Feature Flag

Pronúncia

n/a

Também chamado de

feature flag, feature toggle, flag

Origem

n/a

Fonte

Saiba mais

Martin Fowler, artigo sobre feature toggles