Marcio Cunha

Deploy travado? Como usar feature flags no ArgoCD

Descubra como combinar feature flags e ArgoCD para fazer Canary Deployments seguros, liberando novas funcionalidades de forma gradual e sem risco para a produção.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • Canary deployments reduzem o raio de impacto de falhas ao liberar código novo para uma fração pequena de usuários.
  • Feature flags permitem ligar ou desligar funcionalidades em tempo de execução sem precisar de novos deploys.
  • A integração entre GitOps e gerenciadores de flags garante que o estado da infraestrutura permaneça previsível.
  • Testar em produção com tráfego real valida hipóteses antes de abrir o acesso para a base inteira.
  • Monitorar métricas de erro durante a liberação gradual evita interrupções generalizadas no sistema.

O desafio de colocar código novo sem derrubar o sistema

Fazer deploy em ambientes de produção costuma ser um momento tenso para equipes de engenharia. Na prática, isso significa enviar código novo para servidores que estão atendendo clientes reais, onde qualquer pequeno erro pode causar instabilidade. Para evitar que um bug derrube o sistema inteiro, as equipes buscam formas de mitigar riscos, seja aplicando estratégias como o modelo de entregas sem tempo de inatividade ou dividindo o tráfego de forma controlada. O problema é que o processo de rollback, que é a reversão para a versão anterior, nem sempre é rápido o suficiente quando o estrago já foi feito.

É exatamente nesse cenário que entram as ferramentas de automação e controle de estado. O ArgoCD, uma ferramenta popular de GitOps que mantém o ambiente de produção sincronizado com um repositório de código, ajuda a automatizar a entrega. No entanto, apenas atualizar os arquivos de configuração no Kubernetes não resolve o problema lógico de uma funcionalidade quebrada. É preciso separar o ato de colocar o código no ar do ato de torná-lo visível para o usuário final, e é aí que a união com as chaves de controle de recursos faz toda a diferença na operação diária.

O que são feature flags e como elas salvam seu deploy

As feature flags, ou chaves de recursos, funcionam como interruptores de luz embutidos no código da aplicação. Na prática, elas permitem que você envie um pedaço de código novo para a produção mantendo-o oculto da maioria das pessoas. Se o sistema começar a apresentar falhas inesperadas, em vez de passar pelo estresse de gerar uma nova versão da aplicação e esperar o ciclo de deploy terminar, basta desligar a chave por um painel administrativo para o comportamento antigo voltar a valer instantaneamente.

Essa abordagem muda completamente a dinâmica de desenvolvimento. Os engenheiros podem integrar códigos em andamento na versão principal do sistema sem medo, pois a funcionalidade fica inativa até o momento certo. Além disso, essa técnica serve de base para testes seguros, funcionando de maneira complementar a práticas de injeção controlada de falhas para validar a resiliência. O ganho principal é a paz de espírito, pois o risco de indisponibilidade despenca quando a chave do problema está literalmente a um clique de distância.

Canary deployments: testando a água antes de mergulhar

O conceito de Canary Deployment, ou implantação canária, herda o nome dos antigos canários que os mineiros usavam para detectar gases tóxicos nas minas. Na engenharia de software, a ideia é liberar a nova versão do software apenas para um grupo muito restrito de usuários, como funcionários da empresa ou 2% da base total. Se a versão nova começar a consumir memória em excesso ou gerar erros de conexão, apenas esse pequeno grupo é afetado, limitando drasticamente o raio de explosão do problema.

Automatizar esse processo exige que o roteamento de tráfego funcione de forma inteligente na borda da infraestrutura. Ferramentas de entrega contínua gerenciam essa progressão, aumentando o percentual de tráfego para a versão nova de forma gradual — por exemplo, passando de 5% para 25%, depois 50% e, finalmente, 100%. Se em qualquer uma dessas etapas as métricas de saúde do sistema apontarem anomalias, o sistema interrompe o processo e retrocede automaticamente, garantindo que o restante dos clientes nem perceba o que aconteceu.

Orquestrando o processo com ArgoCD e Argo Rollouts

Para unir a entrega declarativa do ArgoCD com as liberações graduais, a comunidade criou o Argo Rollouts, um controlador do Kubernetes que substitui os objetos tradicionais de implantação por estratégias avançadas. Abaixo, veja um exemplo prático de configuração de um Rollout que define uma estratégia canária com etapas automatizadas de análise:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: minha-aplicacao
spec:
  replicas: 5
  strategy:
    canary:
      steps:
      - setWeight: 10
      - pause: {duration: 10m}
      - setWeight: 50
      - pause: {duration: 30m}
  selector:
    matchLabels:
      app: minha-aplicacao
  template:
    metadata:
      labels:
        app: minha-aplicacao
    spec:
      containers:
      - name: app
        image: minha-imagem:v2

Neste exemplo prático, o controlador direciona apenas 10% do tráfego para a nova versão e aguarda dez minutos analisando o comportamento. Caso tudo ocorra bem, o volume de acesso sobe para 50% por mais trinta minutos antes de concluir a transição total. Essa automação retira o fator humano da decisão repetitiva, permitindo que a equipe foque em resolver problemas de negócio enquanto o operador gerencia o tráfego com precisão matemática.

Mitigando riscos reais com a combinação de ferramentas

A verdadeira força dessa arquitetura surge quando combinamos a liberação de tráfego em porcentagens com o uso de chaves de recursos no código. Enquanto o Argo Rollouts garante que a infraestrutura e os pods da aplicação respondam bem à carga física, as chaves de controle permitem ativar partes específicas da regra de negócio apenas para os usuários canários que acessam o sistema naquele momento exato.

Essa dupla camada de proteção resolve um dilema clássico: e se o código passar por todos os testes de infraestrutura, mas a nova tela apresentar um erro de usabilidade que confunde o cliente? Com a chave de recurso posicionada estrategicamente no código front-end ou back-end, é possível desativar a funcionalidade visual sem precisar refazer o empacotamento dos arquivos do container. A operação ganha uma agilidade sem precedentes, reduzindo o tempo de resposta a incidentes para quase zero.

Considerações finais sobre entregas seguras e contínuas

Adotar deploys graduais e chaves de controle não é apenas uma escolha técnica, mas uma mudança profunda na cultura de engenharia de uma empresa. Quando os desenvolvedores sabem que um erro não vai derrubar o sistema de produção por horas, o medo de enviar código novo desaparece e a cadência de entrega naturalmente aumenta. Ferramentas como o ArgoCD fornecem a fundação sólida necessária para manter o ambiente organizado através de GitOps, enquanto as estratégias de liberação inteligente cuidam do resto.

Investir tempo na configuração inicial dessas ferramentas traz retornos imediatos em estabilidade e confiança operacional. As equipes deixam de apagar incêndios de madrugada e passam a focar na criação de valor real para os usuários. Afinal, a melhor infraestrutura é aquela que funciona nos bastidores de forma invisível, permitindo que a inovação aconteça com total segurança e previsibilidade.