Termo

Feature flag

Info

Escrito originalmente em francês. Traduzido por IA — o sentido foi preservado, não a prosa.

Definição curta

Interruptor nomeado, inscrito no código e ajustado fora dele, cujo estado decide qual de vários comportamentos possíveis será executado para um ambiente ou um cliente dado.

Definição detalhada

O termo vem das práticas de entrega contínua, onde nomeia o meio de dissociar a subida de um código para produção da ativação da funcionalidade que ele carrega. O uso técnico distingue várias famílias conforme a duração de vida e quem opera o interruptor: o flag de deploy, retirado quando a funcionalidade é generalizada; o flag de operação, acionado em caso de incidente; o flag de experimentação, que serve a uma medição; o flag de acesso, que abre uma funcionalidade para uma conta e não para outra.

Nos artigos deste blog, a palavra é empregada pelo que ela faz com uma pergunta de produto, e não por sua mecânica de entrega. Um repositório que contém um flag não contém um comportamento, mas dois, e não diz qual deles se aplica. O termo designa, portanto, o ponto exato em que a leitura do código deixa de bastar e em que o estado de um ambiente passa a ser necessário para responder.

O uso de campo se afasta da norma quanto à duração: a definição de origem trata o flag como temporário, e muitos repositórios carregam flags com dezoito meses que determinam o produto visto por várias contas. A palavra é usada aqui para os dois casos, já que o estado do flag conta mais que sua idade.

Uso no domínio

Entra em jogo nos raciocínios sobre a consulta ao código como fonte de verdade do produto: ele figura entre os elementos que uma resposta deve poder citar, e nomeia a razão mais frequente pela qual essa resposta precisa continuar condicional. Também entra em jogo nas discussões sobre o que um suporte ou um comercial pode afirmar a um cliente específico.

Sinônimos e variantes

"Feature toggle", "flag", "toggle", "chave de funcionalidade", "interruptor de funcionalidade". A expressão local "conforme o estado do flag" serve para sinalizar que uma resposta é condicional.

Não confundir com

  • Fonte de verdade — Fonte da verdade — artefato designado como aquele que prevalece em caso de desacordo entre várias representações. O feature flag é o que obriga a completar essa fonte com um segundo elemento: o estado do ambiente em produção.
  • Branch de funcionalidade — linha de desenvolvimento separada, onde um código não terminado vive fora do tronco até o merge. O flag opera sobre código já mesclado: o que fica retido não é a integração, é a execução.
  • Teste A/B — dispositivo de medição que expõe duas variantes a duas populações para decidir com base em um indicador. Ele costuma ser implementado por um flag; seu objeto é a comparação, não a disponibilização.
  • Permissão de acesso — regra que diz o que um perfil de usuário pode fazer no produto. Ela pertence ao domínio e é lida como tal no código; o flag é um ajuste de entrega, externo ao vocabulário de negócio.
  • Opção de configuração — ajuste exposto ao cliente, que faz parte da oferta e é documentado. O flag é, em princípio, invisível para o cliente e destinado a desaparecer.

Exemplos

"O código mostra dois comportamentos possíveis conforme o estado do feature flag."

"Se a IA não tem acesso a esse estado, ela deve responder de forma condicional: se o flag estiver ativado, então o comportamento é este; senão, é outro."

Na lista dos elementos que podem servir de prova a uma resposta de produto, ele aparece ao lado da função, da exceção, do teste, do commit e do merge request.

Ambiguidades / debates

Dois usos coexistem sem que nenhum tenha se imposto. O primeiro reserva a palavra aos interruptores temporários e chama o resto de configuração; o segundo chama de flag todo interruptor cujo estado decide o comportamento observado, qualquer que seja sua duração de vida. É o segundo que vale aqui.

O singular, além disso, cobre duas coisas conforme o time: o interruptor em si, e o sistema que hospeda e opera esses interruptores.