Pular para o conteúdo

apps/architecture/feature-flags

045 · Arquiteturas de Alto Nível (Macro-Architecture) · ≈ 6 min de estudo

Feature Flags

Separa deploy de release: o código vai para produção desligado e liga depois, para uma fração das contas, sem novo deploy. Um kill switch desliga a funcionalidade em milissegundos durante um incidente. Use em rollout gradual, dark launch, acesso por segmento e desligamento de emergência.

passos
6
arquivos
7
testes
0
tecnologias
6
Infraestrutura realTypeScriptBunPostgreSQLRedisOpenFeatureDocker
Baixar cartão

Cenário

Banco digital lança o novo motor PIX (pix-engine-v2) para 25% das contas em produção, sobe para 50% e, num incidente, desliga para todos pelo kill switch. O painel de investimentos (investment-dashboard) só aparece para as contas beta da lista de inclusão. Em staging a mesma flag tem estado próprio.

Planta

Sequência
12/12
boot carrega todas as flags do ambiente1SUBSCRIBE feature_flag:prod:changed2getBooleanValue(pix-engine-v2, false, conta)3le so a memoria, bucket sha256(flag:conta) < pct4UPDATE enabled=false (trigger grava auditoria), COMMIT5PUBLISH feature_flag:prod:changed6mensagem7mensagem8recarrega snapshot9recarrega snapshot10getBooleanValue(pix-engine-v2)11false (DISABLED)12OperadorPostgreSQL feature_flagsRedis pub/subInstancia 1 snapshot em memoriaInstancia 2 snapshot em memoriaFluxo PIX
12

12 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Liga e desliga recursos sem deploy.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

  1. 01

    A aplicação avalia pela API do OpenFeature com valor padrão = caminho antigo; ProviderFlagSnapshot responde só da memória, sem consulta por avaliação

  2. 02

    Ordem de avaliaçãoFlag inexistente → padrão; enabled = false → false; lista de exclusão; lista de inclusão; rollout sha256(flagKey:conta) mod 100 < pct

  3. 03

    O bucket é estável e inclui a flagKey: a mesma conta sempre cai no mesmo grupo, e subir de 25% para 50% só adiciona contas

  4. 04

    flagChange grava no PostgreSQL (o trigger registra quem mudou, antes e depois) e, após o commit, publica no Redis; toda instância inscrita recarrega o snapshot em milissegundos

  5. 05

    PostgreSQL foraO refresh falha, o provider emite Stale e continua servindo o último snapshot; num boot frio, lê o snapshot salvo em disco

  6. 06

    HookFlagExposure grava cada exposição (flag, conta, valor, motivo) em flag_exposures para medir o rollout

Trade-offs

O que se ganha, o que se paga

4 vantagenscada ganho tem um preço4 custos

Vantagens

  • Release sem deploy e kill switch em milissegundos

  • Avaliação só em memória: banco fora não derruba as flags

  • Rollout por bucket estável, mensurável pela exposição

  • OpenFeature troca o armazenamento sem reescrever as chamadas

Custos

  • Cada flag é um if a mais e dois caminhos a testar

  • Snapshot pode ficar stale; exige alerta no evento Stale

  • Flag temporária esquecida vira dívida — expires_at obrigatório

  • PostgreSQL e Redis a operar só para as flags

apps/architecture/feature-flags

7 arquivos

src/

  • provider_flag.tsProvider OpenFeature sobre snapshot em memória, com refresh, Stale e snapshot em disco
  • source_flag.tsFonte PostgreSQL por ambiente e inscrição no canal Redis de mudança
  • bucket_flag.tsBucket estável 0..99 por flagKey e conta
  • admin_flag.tsMudança de flag: commit no banco, depois publish no Redis
  • hook_flag_exposure.tsRegistro de exposição e alerta de flag inexistente
  • config_flag.tsLeitura validada do ambiente do processo

sql/

  • 01_schema.sqlschemafeature_flags por ambiente, auditoria por trigger e flag_exposures

Executar · com Docker

  1. docker compose up -d --wait# sobe PostgreSQL · Redis
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário
  5. bun run test# integração contra o serviço real
Requisitos
BunDocker
Sobe junto
PostgreSQLRedis

Por que se relacionam

Teste rápido

Qual destes combina com Feature Flags Architecture?

Próximo projeto · Arquiteturas de Alto Nível (Macro-Architecture)Actor Model
Esc

↑ ↓ navegarEnter abrir191 resultados