Feature Flags em sistema multi-tenant não são opcional. São estrutura
Nosso sistema não roda em um único cenário.
Ele suporta:
- Clientes em cloud
- Clientes em self-hosting
- Contratos com features diferentes
- Ambientes com capacidades distintas
Basicamente, duas realidades convivendo no mesmo código.
Liberar feature globalmente deixou de ser viável muito cedo.
O problema real
Sem controle fino, qualquer nova funcionalidade gerava risco em duas frentes:
- Clientes cloud
- Clientes self-hosted
O que funciona bem em ambiente gerenciado pode quebrar em infra do cliente.
Deploy único. Contextos diferentes.
A probabilidade de impacto era alta.
Onde Feature Flags mudaram o jogo
Passamos a tratar feature como comportamento controlável.
Implementamos flags com resolução por:
- Tenant
- Tipo de ambiente (cloud vs self-hosted)
- Plano de contrato
Isso nos permitiu:
- Liberar primeiro apenas na cloud
- Validar comportamento em produção real
- Ajustar antes de chegar no self-hosted
- Manter paridade sem acoplamento rígido
O rollout deixou de ser binário. Virou progressivo e contextual.
Arquitetura da solução
Nada de plataforma externa sofisticada.
Construímos:
- Tabela de flags no banco
- Cache para leitura rápida
- Service central para avaliação
- Middleware para injetar contexto do tenant
Regra simples:
Nenhuma feature nova nasce sem flag.
Produção não é ambiente de medo. É ambiente controlado.
O impacto no multi-tenant
Em sistema multi-tenant, flags permitem:
- Habilitar recursos pesados apenas para determinados clientes
- Controlar consumo por perfil
- Evitar que uma feature experimental afete todos
- Manter customizações isoladas sem criar forks
No caso de self-hosting, isso foi crucial.
Clientes têm ambientes distintos. Infra diferente. Restrições diferentes.
Feature Flag virou ferramenta de compatibilidade operacional.
O risco invisível
Feature Flag mal gerenciada vira problema estrutural.
Riscos reais:
- Condicionais espalhadas
- Flags eternas
- Estados difíceis de testar
- Complexidade invisível no domínio
Adotamos regras claras:
- Toda flag tem propósito definido
- Toda flag tem ciclo de vida
- Após estabilização, a flag é removida
- Avaliação centralizada, nunca espalhada
Sem governança, flag vira dívida.
O que aprendemos
Em sistema vivo e multi-tenant:
Deploy não é o problema. Controle é.
Feature Flag nos deu:
- Rollout progressivo
- Segurança operacional
- Separação clara entre contextos
- Capacidade de evoluir sem bifurcar código
E principalmente:
Permitiu manter cloud e self-hosted na mesma base, sem virar caos.
O ponto estratégico
Feature Flag não é só ferramenta de produto.
É ferramenta de arquitetura em sistemas com múltiplos contextos de execução.
Quando você opera cloud + self-hosted, controle fino deixa de ser opcional.
Vira requisito de sobrevivência.