Feature Flags
Deploy
DevOps
Releases
Experimentação
CI/CD

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

  1. Marque como deprecated
  2. Remova código condicional
  3. 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.

Leia também

Feature Flags: Guia Completo para Releases Seguros | Matheus Breguêz