Skip to content
Latchkey

O Que é uma Feature Toggle Architecture? Desacoplando Deploy de Release

Uma feature toggle architecture envolve novas funcionalidades em switches de runtime para que você possa fazer o deploy do código sem liberá-lo, e ligar ou desligar features sem um deploy.

Fazer o deploy do código e liberar uma feature não precisam ser o mesmo evento. Uma feature toggle architecture os separa: você shipa código novo no escuro, atrás de um flag, e o liga depois via configuração. Isso destrava trunk-based development, rollout gradual e kill switches instantâneos, mas adiciona gestão de flags e um fardo combinatório de testes.

Deploy e release, desacoplados

O código chega em produção atrás de um switch desligado. O deploy é um não-evento para os usuários; a release acontece quando você vira o flag. Você também pode desligar uma feature instantaneamente sem fazer rollback de nenhum código.

O que ela viabiliza

  • Trunk-based development: fazer merge de trabalho inacabado atrás de um flag.
  • Rollout gradual: habilitar para 1%, depois 10%, depois todos.
  • Kill switch instantâneo: desabilitar uma feature ruim sem um deploy.
  • A/B testing e habilitação direcionada por segmento de usuário.

Flags como arquitetura

Toggles não são apenas if-statements; em escala eles precisam de um serviço de flags, avaliação consistente e um inventário. Sem gestão, flags obsoletos se acumulam e viram uma fonte de código morto e comportamento confuso.

O desafio dos testes

Cada flag dobra os caminhos de código possíveis, então combinações de flags se multiplicam rapidamente. O CI não consegue testar toda combinação, então os times testam os estados on e off dos flags importantes e as combinações que de fato shipam juntas, e depois limpam os flags prontamente para limitar a explosão.

Como isso muda as pipelines

Como features incompletas fazem merge atrás de flags, a pipeline sempre builda a partir de um trunk liberável. Isso mantém a integração contínua e evita branches de vida longa, ao custo de disciplina em torno da higiene dos flags.

Feedback rápido do trunk

Fluxos trunk-based significam merges frequentes e execuções frequentes da pipeline. Runners quentes e rápidos (como o Latchkey) evitam que essa alta cadência de merge fique gargalada no tempo de fila de build.

Principais conclusões

  • Uma feature toggle architecture separa o deploy do código da release de uma feature.
  • Viabiliza trunk-based development, rollout gradual e kill switches instantâneos.
  • Flags multiplicam caminhos de código, então teste os que shipam juntos e aposente flags obsoletos.

Guias relacionados