StartupProduto
Feature Flag
O que sao feature flags (feature toggles), casos de uso como rollout gradual, A/B test e kill switch, ferramentas e boas praticas.
O que e?
Feature Flag (tambem chamada de feature toggle) e uma tecnica que permite ativar ou desativar funcionalidades em producao sem precisar fazer deploy. E como um interruptor de luz para cada feature do seu produto.
Com feature flags, voce separa o deploy (colocar codigo em producao) da release (disponibilizar a feature para usuarios). Isso reduz risco e aumenta a velocidade de entrega.
Como funciona
Conceito basico
// Sem feature flag:
function Dashboard() {
return <NewDashboard /> // deploy = release (arriscado)
}
// Com feature flag:
function Dashboard() {
if (featureFlags.isEnabled('new-dashboard')) {
return <NewDashboard /> // ativado por flag
}
return <OldDashboard /> // fallback seguro
}Casos de uso
| Caso de uso | Descricao | Exemplo |
|---|---|---|
| Rollout gradual | Libera para % crescente de usuarios | 1% → 5% → 25% → 100% |
| A/B testing | Variantes para medir impacto | Botao azul vs verde |
| Kill switch | Desativa feature problematica instantaneamente | Bug critico em producao |
| Beta testing | Libera apenas para beta testers | Early adopters testam antes |
| Ops toggles | Desativa features pesadas sob carga | Black Friday: desativa relatorios |
| Permission toggles | Features por plano/tier | Plano Pro tem analytics avancado |
Tipos de feature flags
Release Flags (curta duracao):
├── Objetivo: rollout seguro de nova feature
├── Duracao: dias a semanas
└── Remover apos rollout completo ✅
Experiment Flags (curta duracao):
├── Objetivo: A/B test
├── Duracao: semanas (duracao do teste)
└── Remover apos conclusao do teste ✅
Ops Flags (longa duracao):
├── Objetivo: controle operacional
├── Duracao: permanente
└── Exemplo: circuit breaker, modo manutencao
Permission Flags (longa duracao):
├── Objetivo: features por segmento/plano
├── Duracao: permanente
└── Exemplo: features premium, enterprise-onlyFerramentas
| Ferramenta | Tipo | Destaque |
|---|---|---|
| LaunchDarkly | SaaS | Lider de mercado, targeting avancado |
| Unleash | Open-source | Self-hosted, SDK para multiplas linguagens |
| Flagsmith | Open-source + SaaS | Remote config + feature flags |
| Split | SaaS | Focado em experimentacao |
| Homebrew | Custom | Variavel de ambiente ou banco de dados |
Boas praticas
✅ Fazer:
├── Nomear flags de forma descritiva: "enable-new-checkout-v2"
├── Documentar cada flag: quem criou, proposito, data de remocao
├── Definir "expiration date" para flags temporarias
├── Ter dashboard centralizado de flags ativas
└── Testar ambos os caminhos (flag ON e flag OFF)
❌ Evitar:
├── Flags aninhadas (if flag A && flag B && flag C)
├── Flags sem dono ou sem data de remocao
├── Codigo morto protegido por flags que nunca serao ativadas
├── Usar flags para esconder bugs (fix the bug!)
└── Centenas de flags ativas simultaneamentePor que importa?
Feature flags sao importantes porque:
- Reduzem risco de deploy — se algo der errado, desativa a flag em segundos (sem rollback)
- Aceleram entrega — deploys menores e mais frequentes
- Habilitam experimentacao — A/B tests sem complexidade no deploy
- Desacoplam times — backend pode deployar antes do frontend estar pronto
- Melhoram resiliencia — kill switches protegem contra falhas em cascata
Empresas como Facebook, Netflix e Google usam milhares de feature flags em producao simultaneamente.
Exemplo pratico
Rollout gradual de novo sistema de busca
Feature: "new-search-engine" (Elasticsearch → Algolia)
Dia 1: Deploy com flag OFF
├── Codigo em producao, mas nenhum usuario ve
├── Time testa internamente
└── Monitora logs de erro
Dia 3: Flag ON para equipe interna (1%)
├── 50 usuarios internos usando
├── Monitorar: latencia, relevancia, erros
└── Resultado: latencia 40% menor ✅
Dia 7: Rollout para 5% dos usuarios
├── ~2.500 usuarios
├── Monitorar: busca-sem-resultados, CTR
└── Resultado: CTR +12%, zero erros ✅
Dia 14: Rollout para 25%
├── ~12.500 usuarios
├── Bug encontrado: caracteres especiais
├── Fix deployado (sem mudar a flag)
└── Monitorar mais 3 dias
Dia 21: Rollout para 100%
├── Todos os usuarios usando Algolia
├── Monitorar 1 semana adicional
└── Resultado final: busca 3x mais rapida ✅
Dia 30: Remover flag + codigo antigo
├── Deletar OldSearchEngine
├── Deletar flag "new-search-engine"
└── Reduzir tech debt ✅Termos relacionados
- A/B Testing — feature flags sao o mecanismo tecnico por tras de testes A/B
- Sprint — feature flags permitem deploys continuos dentro do sprint
- Tech Debt — flags nao removidas geram divida tecnica