Feature Flags: Guia Completo para Releases Seguros
Feature flags separam deploy de release. Código vai para produção mas funcionalidade fica desligada até estar pronta. Este guia apresenta implementação, gerenciamento e casos de uso para feature flags.
O Que São Feature Flags
Definição
Configurações que ligam ou desligam funcionalidades em runtime.
Sinônimos
Feature toggles, feature switches, feature gates.
Propósito
Controle sobre o que usuários veem sem novo deploy.
Por Que Usar Feature Flags
Deploys Seguros
Código em produção, feature desligada. Menos risco.
Rollout Gradual
1% → 10% → 50% → 100%. Monitore entre etapas.
Kill Switch
Problema detectado? Desliga instantaneamente.
Experimentação
A/B testing nativo. Compare variantes.
Trunk-Based Development
Todos commitam na main. Features incompletas escondidas.
Tipos de Flags
Release Flags
Temporárias. Escondem feature até pronta.
Experiment Flags
A/B testing. Comparam variantes.
Ops Flags
Controlam comportamento operacional. Circuit breakers.
Permission Flags
Funcionalidade por tier. Premium vs free.
Kill Switches
Emergência. Desliga instantaneamente.
Implementação Básica
Flag Service
Serviço central que retorna estado das flags.
SDK
Biblioteca no app que consulta serviço.
Cache
Evita latência a cada request.
Fallback
Comportamento quando serviço indisponível.
Arquitetura
Simples
Arquivo de configuração ou variável de ambiente.
Centralizado
Serviço dedicado. Dashboard de gerenciamento.
Distribuído
Cache local, sincronização assíncrona.
Avaliação de Flags
Boolean
Ligado ou desligado.
Multivariate
Múltiplas variantes. A, B, C.
Targeting
Por usuário, segmento, percentual.
Contextual
Baseado em atributos em runtime.
Gerenciamento de Flags
Naming Convention
Padrão claro. feature_xyz_enabled.
Documentação
O que a flag faz, quem criou, quando remover.
Ownership
Responsável por cada flag.
Lifecycle
Criação → uso → remoção. Não acumule flags mortas.
Ferramentas
LaunchDarkly
Líder de mercado. Robusto, enterprise.
Split.io
Feature delivery platform.
Unleash
Open source. Self-hosted.
Flagsmith
Open source com opção cloud.
ConfigCat
Simples e acessível.
Statsig
Experimentação integrada.
Rollout Strategies
Percentage Rollout
Percentual de usuários recebe feature.
User Targeting
Usuários específicos (beta testers).
Segment Targeting
Por atributo: plano, região, versão.
Time-Based
Ativa em data/hora específica.
Melhores Práticas
Flags Temporárias
Remova após rollout completo. Não deixe acumular.
Defaults Seguros
Se flag falhar, comportamento seguro.
Testes com Flags
Teste ambos estados: ligado e desligado.
Monitoring
Métricas por estado de flag.
Audit Log
Quem mudou, quando, o que.
Flags em Mobile
Considerações
Apps demoram para atualizar. Flags remotos essenciais.
Cache Offline
Funciona sem conexão com último estado conhecido.
Sincronização
Background sync para atualizações.
Riscos e Cuidados
Flag Debt
Muitas flags acumuladas. Código confuso.
Combinações Explosivas
Muitas flags = muitos estados possíveis.
Dependências
Flag A depende de flag B. Complexidade.
Performance
Muitas avaliações impactam latência.
Cleanup
Quando Remover
Feature 100% rollout → remova flag.
Processo
- Marque como deprecated
- Remova código condicional
- Delete flag do serviço
Automação
Alertas para flags antigas. Forçe remoção.
Flags e Testes
Unit Tests
Teste ambos caminhos.
Integration Tests
Flag ligada e desligada.
E2E
Cenários com diferentes estados.
Flags e CI/CD
Deploy != Release
Deploy coloca código. Flag controla ativação.
Pipeline
Flag desligada por padrão em produção.
Automation
Feature branch → merge → flag off → rollout gradual.
Conclusão
Feature flags são tooling essencial para software moderno. Separam deploy de release, permitem rollouts seguros e habilitam experimentação. Implemente com disciplina, gerencie ativamente e remova flags quando não mais necessárias.
FAQs
1) Feature flags afetam performance? Minimamente com implementação adequada. Cache ajuda.
2) Preciso de ferramenta paga? Para começar, não. Em escala, ferramentas ajudam muito.
3) Quantas flags é demais? Depende do tamanho do produto. Dezenas é normal, centenas é preocupante.
4) Como evitar flag debt? Processo de remoção. Alertas para flags antigas.
5) Flags funcionam para mobile? Sim. SDKs específicos com cache offline.