Feature Flags: O Que São e Como Usar para Deploys Seguros e Reversíveis

Um deploy em produção deveria ser um evento técnico rotineiro, não um momento de tensão para o time de engenharia. A realidade em muitas organizações é diferente: deploys são eventos de alto risco porque novos comportamentos vão ao ar para 100% dos usuários de uma vez, sem mecanismo de reversão instantânea. Feature flags mudam essa equação fundamentalmente, separando o ato de deployar código do ato de ativar funcionalidades.

O conceito é simples: uma feature flag é um controle condicional no código que determina se uma funcionalidade está ativa ou não para um determinado usuário, segmento ou percentual do tráfego. O código está em produção, mas a feature permanece desligada até que a decisão de ativação seja tomada — sem necessidade de novo deploy.

Essa separação entre deploy e release é o que torna feature flags uma das práticas mais valiosas para times que operam com SRE e deploys frequentes, reduzindo drasticamente o risco operacional de cada entrega.

 

O que são Feature Flags

Feature flags — também chamadas de feature toggles, feature switches ou feature gates — são mecanismos de controle que determinam dinamicamente quais partes do código estão ativas em runtime, sem necessidade de redeployar a aplicação.

Em sua forma mais básica, uma feature flag é uma variável booleana consultada em runtime: if (featureFlag.isEnabled("novo-checkout")) { ... }. Em implementações maduras, as flags são gerenciadas por plataformas especializadas que oferecem controle granular por usuário, percentual de tráfego, segmento geográfico, plano de assinatura ou qualquer atributo do contexto da requisição.

A principal propriedade operacional das feature flags é que elas transformam o rollback de uma funcionalidade de um evento de deploy (que leva minutos ou horas) em uma operação de configuração (que leva segundos). Isso reduz diretamente o MTTR quando uma funcionalidade nova causa um incidente.

 

Feature Flags como Mecanismo de Segurança para Deploys

A aplicação mais valiosa de feature flags para times de SRE e plataforma não é o controle de funcionalidades em si, mas a capacidade de agir instantaneamente diante de um incidente relacionado a código novo em produção.

O cenário clássico: um deploy vai ao ar com sucesso, mas 10 minutos depois as métricas de erro começam a subir. No modelo tradicional sem feature flags, o time precisa decidir entre aguardar investigação (com usuários sendo afetados) ou iniciar um rollback de deploy (que leva tempo e tem seus próprios riscos). Com uma feature flag controlando a nova funcionalidade, a resposta é desligar a flag — ação de segundos que restaura o comportamento anterior imediatamente.

Esse mecanismo de “kill switch” é especialmente crítico em arquiteturas de microsserviços, onde mudanças em um serviço podem ter efeitos não antecipados em serviços dependentes. A flag permite isolamento cirúrgico da mudança sem afetar o restante do sistema.

 

Feature Flags e Error Budget

A integração de feature flags com SLOs e error budgets é uma das práticas mais avançadas de SRE moderno. O fluxo funciona assim: o sistema de observabilidade monitora continuamente os SLOs do serviço. Quando o burn rate de error budget ultrapassa um threshold crítico, o sistema pode automaticamente desligar as feature flags associadas às mudanças mais recentes, restaurando o comportamento estável anterior.

Essa automação fecha o ciclo entre observabilidade e deploy, tornando o sistema capaz de proteger seus próprios SLOs sem intervenção humana imediata. É uma implementação concreta do princípio de alta disponibilidade por meio de automação operacional.

 

Tipos de Feature Flags e Quando Usar Cada Um

Feature flags têm ciclos de vida e propósitos distintos. Usar o tipo errado para o contexto errado cria dívida técnica e flags “zumbis” que nunca são removidas.

Release flags (flags de lançamento): controlam o rollout de novas funcionalidades. São temporárias por natureza — deveriam ser removidas do código após o rollout completo ser confirmado. Ciclo de vida típico: dias a semanas.

Experiment flags (flags de experimento): habilitam A/B testing e canary releases, ativando a nova experiência para um percentual controlado do tráfego. Os dados de comportamento dos dois grupos informam a decisão de rollout completo. Ciclo de vida: duração do experimento.

Ops flags (flags operacionais): controlam comportamentos de runtime como circuit breakers, rate limiting e degradação graciosa. Diferente das release flags, ops flags são permanentes — fazem parte da arquitetura de resiliência do sistema. Ciclo de vida: indeterminado.

Permission flags (flags de permissão): controlam acesso a funcionalidades por segmento de usuário — plano premium, usuários beta, regiões específicas. Têm ciclo de vida longo e são gerenciadas como configuração de negócio.

 

Feature Flags e Canary Releases

A combinação de feature flags com canary releases é uma das estratégias de deploy mais seguras disponíveis para times que precisam de alta disponibilidade.

Em um canary release com feature flags, a nova funcionalidade é ativada para um percentual pequeno do tráfego (1%, 5%, 10%) enquanto o restante continua no comportamento anterior. As métricas de ambos os grupos são monitoradas em paralelo. Se o grupo canary apresenta degradação de performance, aumento de erros ou impacto negativo nos KPIs de negócio, a flag é desligada instantaneamente sem impacto para os 90-99% de usuários que nunca viram a nova versão.

O rollout progressivo continua apenas quando os dados do canary confirmam comportamento estável: 5% → 20% → 50% → 100%. Cada etapa é um ponto de decisão baseado em dados reais de produção.

Essa abordagem conecta feature flags diretamente às práticas de detecção de anomalias e monitoramento preditivo, pois o sistema de observabilidade valida ativamente cada etapa do rollout.

 

Gestão de Feature Flags em Escala

Em times e codebases de maior porte, feature flags sem governança viram dívida técnica rapidamente. Flags que nunca foram removidas após o rollout, flags cujo propósito ninguém lembra, flags que interagem de forma inesperada com outras flags — todos são problemas reais em organizações que usam feature flags há anos sem um processo de gestão.

Três práticas de governança são essenciais para escalar o uso de feature flags com segurança:

Ownership declarado: cada flag tem um dono responsável pela decisão de quando removê-la. Flags sem dono são candidatas automáticas à remoção.

Lifecycle definido na criação: ao criar uma flag, a equipe define o tipo (release, experiment, ops, permission) e a data esperada de remoção. Flags de release sem data de remoção não são aprovadas para merge.

Auditoria periódica: revisão regular do catálogo de flags ativas para identificar e remover flags zumbis. Ferramentas de gestão de feature flags como OpenFeature (padrão CNCF open-source) oferecem dashboards de uso e alertas para flags sem atividade recente.

Observabilidade

 

Conclusão

Feature flags são uma das práticas de engenharia com maior retorno sobre o risco operacional: ao separar deploy de release, transformam cada entrega de código em um evento controlável e reversível em segundos. Para times que operam com SLOs e error budgets, essa capacidade de reversão instantânea é um componente direto da estratégia de confiabilidade.

A implementação começa simples — uma flag, um kill switch, um rollout controlado — e evolui para um mecanismo de automação de confiabilidade integrado ao sistema de observabilidade. O ponto de partida mais efetivo é identificar os próximos dois ou três deploys de alto risco e implementar flags de release para cada um.

Se seu time quer estruturar o uso de feature flags integrado às práticas de SRE e monitoramento de produção, fale com nossos especialistas.

 

Perguntas Frequentes

O que são feature flags?
Feature flags são controles condicionais no código que determinam dinamicamente quais funcionalidades estão ativas em runtime, sem necessidade de novo deploy. Permitem separar o momento do deploy do momento da ativação da funcionalidade, habilitando rollouts progressivos e reversão instantânea em caso de incidente.
Como feature flags reduzem o risco de deploy?
Feature flags transformam o rollback de uma funcionalidade problemática de um evento de deploy (minutos ou horas) em uma operação de configuração (segundos). O código já está em produção, mas a funcionalidade pode ser desligada instantaneamente ao primeiro sinal de degradação — reduzindo diretamente o MTTR e protegendo os SLOs do serviço.
Qual a diferença entre feature flags e A/B testing?
A/B testing é um caso de uso específico de feature flags (experiment flags), onde dois grupos de usuários recebem experiências diferentes e os dados comparam resultados. Feature flags são o mecanismo técnico mais amplo que habilita A/B testing, canary releases, kill switches operacionais e controle de acesso por segmento de usuário.
Como usar feature flags com canary releases?
Em um canary release com feature flags, a nova funcionalidade é ativada progressivamente: 1% → 5% → 20% → 50% → 100% do tráfego. Em cada etapa, métricas de erro, latência e KPIs de negócio são comparados entre o grupo canary e o grupo de controle. Se houver degradação, a flag é desligada instantaneamente, sem impacto para o restante dos usuários.

Trabalho há mais de 15 anos no mercado B2B de tecnologia e hoje atuo como Gerente de Marketing da OpServices e Líder em Projetos de Governança para Inteligência Artificial.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *