Estratégias Brownfield: Big Bang, Modularização Incremental e Strangler Fig Pattern

A Realidade das Migrações: Transformando Sistemas Legados (Brownfield)

Enquanto projetos Greenfield oferecem a liberdade de começar do zero, a realidade da maioria das organizações é trabalhar com sistemas existentes — os chamados projetos Brownfield. Migrar um monolito legado, muitas vezes complexo e crítico para o negócio, para uma arquitetura de microsserviços é um dos maiores desafios de engenharia de software.

Existem três estratégias principais para essa jornada, cada uma com seus riscos e benefícios:

  1. a radical Big Bang,

  2. a evolutiva Modularização Incremental e a

  3. metódica Strangler Fig Pattern.


Big Bang: A Abordagem Radical de "Parar o Mundo"

A estratégia Big Bang é exatamente o que o nome sugere: uma transformação completa e simultânea. A equipe decide parar o desenvolvimento de novas funcionalidades no monolito existente, redesenha toda a arquitetura em microsserviços do zero e, após um período (geralmente longo) de desenvolvimento paralelo, realiza um cutover — desliga o sistema monolítico antigo e liga o novo ecossistema de microsserviços em uma data definida.

  • Como funciona: É como decidir demolir um prédio antigo e construir uma cidade nova no mesmo terreno. O trabalho no prédio antigo (monolito) para, e todos os recursos são alocados para a construção da nova cidade (microsserviços).

  • Vantagens Potenciais:

    • Arquitetura limpa: Permite criar uma nova base sem as restrições e dívidas técnicas do legado.

    • Foco total: A equipe pode se concentrar apenas na nova arquitetura, sem a distração de manter o sistema antigo em operação.

  • Riscos e Desvantagens Graves:

    • Alto risco de negócio: Se algo der errado no cutover, todo o sistema pode ficar indisponível.

    • Custo de oportunidade enorme: O desenvolvimento de novas funcionalidades de negócio é congelado durante todo o projeto de migração, que pode levar meses ou anos.

    • Scope creep: O projeto tende a crescer ("vamos aproveitar e reescrever isso também"), atrasando ainda mais a entrega.

    • Desalinhamento com o negócio: O longo tempo de desenvolvimento pode fazer com que o novo sistema já nasça desatualizado em relação às necessidades do negócio.

Devido aos seus riscos exorbitantes, a estratégia Big Bang é amplamente desencorajada e só deve ser considerada em cenários extremamente específicos, como quando o monolito é tecnicamente insustentável e já está falhando constantemente.

Modularização Incremental: Preparando o Monolito para a Divisão

A Modularização Incremental é uma estratégia preparatória, focada em dentro do monolito existente. Seu objetivo não é criar microsserviços imediatamente, mas refatorar o código legado para que ele se assemelhe internamente a um monólito modular, facilitando uma eventual extração futura. É um trabalho cirúrgico de redução do acoplamento caótico.

Passos da Estratégia

  1. Identificar Módulos Potenciais: Analisar o código e o domínio para encontrar agrupamentos lógicos de funcionalidades que possam se tornar futuros serviços (ex.: módulo de "Clientes", "Pagamentos", "Entregas").

  2. Refatorar para Reduzir Acoplamento: Isolar gradualmente o código desses módulos, eliminando dependências diretas entre eles. Substituir chamadas diretas a classes de outros módulos por interfaces bem definidas ou Façades.

  3. Implementar Separação de Dados: Um dos passos mais críticos. Começar a separar as tabelas de banco de dados usadas por cada módulo, eventualmente movendo-as para schemas distintos ou instâncias separadas, para quebrar o acoplamento mais persistente de todos: o acoplamento de dados.

  4. Implementar Comunicação Estruturada: Estabelecer contratos claros para a comunicação entre os módulos, seja via chamadas de método bem definidas, mensagens internas ou APIs HTTP, mesmo que ainda dentro do mesmo processo.

Essa estratégia é como reformar um prédio antigo por dentro, criando apartamentos independentes com suas próprias cozinhas e banheiros, antes de considerar transformá-los em unidades de venda separadas. Mesmo que a decisão de extrair microsserviços nunca seja tomada, o monolito resultante será muito mais limpo, sustentável e fácil de manter.

Strangler Fig Pattern: A Estratégia Evolutiva e de Baixo Risco

O Strangler Fig Pattern (Padrão da Figueira-Strangler) é uma metáfora inspirada em uma árvore que cresce ao redor de outra, eventualmente tomando seu lugar. É a estratégia mais recomendada para migrações Brownfield. Em vez de reescrever tudo de uma vez, você substitui funcionalidades específicas do monolito por microsserviços, uma de cada vez, de forma gradual e controlada.

  • Ciclo do Strangler Fig (repetir para cada funcionalidade):

    1. Identificar uma "Fatia" Bem Definida: Escolher uma funcionalidade coesa e relativamente isolada dentro do monolito para ser a primeira migrada (ex.: o processo de "upload de imagem de perfil", o "cálculo de frete").

    2. Criar o Microsserviço: Desenvolver um novo microsserviço que implemente exatamente aquela funcionalidade. O microsserviço possui seu próprio banco de dados, se necessário.

    3. Redirecionar as Chamadas (Intercept): Colocar um "desvio" no monolito. Toda chamada que originalmente ia para a funcionalidade legada agora é interceptada e redirecionada (via proxy, API Gateway, ou código de roteamento) para o novo microsserviço. O monolito e o microsserviço coexistem.

    4. Remover o Código Obsoleto: Após validar que o novo microsserviço está funcionando corretamente e estável, o código correspondente é removido do monolito, que agora depende do serviço externo.

    5. Repetir o Processo: Escolher a próxima fatia de funcionalidade e repetir os passos, "estrangulando" gradualmente o monolito original até que ele seja reduzido a um núcleo mínimo ou desapareça completamente.

  • Vantagens:

    • Baixo risco: A migração é feita em pequenos passos. Se um microsserviço falhar, é possível reverter apenas aquela fatia.

    • Entrega contínua de valor: A equipe pode continuar desenvolvendo novas funcionalidades no monolito ou nos novos serviços durante a migração.

    • Aprendizado progressivo: A organização acumula experiência com microsserviços de forma controlada.

    • ROI incremental: Cada microsserviço entregue já pode oferecer benefícios isolados de escalabilidade ou deploy independente.

Esta estratégia exige uma boa gestão de tráfego (um API Gateway é quase essencial) e um design cuidadoso para evitar que o microsserviço e o código legado precisem acessar os mesmos dados simultaneamente (usando técnicas como Database per Service ou replicação de dados).


Conclusão: A Paciência como Virtude na Migração Brownfield

Migrar um monolito legado não é uma corrida de velocidade, mas uma maratona de engenharia cuidadosa. Entre as três estratégias:

  • Big Bang é uma aposta arriscadíssima, só para cenários de desespero.

  • Modularização Incremental é o trabalho de base essencial, que vale a pena fazer independentemente da migração, pois melhora o codebase existente.

  • Strangler Fig Pattern é a estratégia padrão recomendada para a maioria das migrações. Ela combina baixo risco com entrega contínua de valor, permitindo que a transformação arquitetural ocorra em paralelo à evolução do negócio.

A chave para o sucesso em um cenário Brownfield é a paciência estratégica. Em vez de tentar resolver todos os problemas de uma vez, identifique as maiores dores (o módulo que mais falha, o que mais dificulta os deploys, o gargalo de performance) e aplique o Strangler Fig lá primeiro. Comemore cada microsserviço extraído com sucesso como uma vitória que reduz a complexidade do legado e abre caminho para os próximos.

Last updated