Padrão de figo Strangler

Azure Migrate

Migre incrementalmente um sistema legado, ao substituir gradualmente partes específicas de funcionalidades por novas aplicações e serviços. À medida que as funcionalidades do sistema legado são substituídas, o novo sistema substitui eventualmente todas funcionalidades do sistema antigo, estrangulando o sistema antigo e permitindo desativá-lo.

Contexto e problema

À medida que os sistemas envelhecem, as ferramentas de desenvolvimento, a tecnologia de alojamento e até as arquiteturas do sistema sobre as quais foram criados podem tornar-se cada vez mais obsoletos. À medida que são adicionadas novas funcionalidades, a complexidade destas aplicações pode aumentar substancialmente, fazendo com que seja mais difícil manter as aplicações ou adicionar novas funcionalidades.

A substituição completa de um sistema complexo pode ser um desafio enorme. Muitas vezes, precisa de uma migração gradual para um novo sistema, enquanto mantém o sistema antigo para processar as funcionalidades que ainda não foram migradas. No entanto, executar duas versões diferentes de uma aplicação significa que os clientes têm de saber onde estão localizadas as diferentes funcionalidades. Sempre que uma funcionalidade ou serviço é migrado, precisa de atualizar os clientes para apontar para a nova localização.

Solução

Substitua incrementalmente partes específicas de funcionalidades por novas aplicações e serviços. Crie uma fachada que intercete pedidos para o sistema legado de back-end. A fachada encaminha estes pedidos para a aplicação legada ou para os novos serviços. As funcionalidades existentes podem ser migradas para o novo sistema gradualmente e os consumidores podem continuar a utilizar a mesma interface, sem terem conhecimento de que ocorreu qualquer migração.

Diagram of the Strangler Fig pattern

Este padrão ajuda a minimizar o risco da migração e a distribuir o esforço de desenvolvimento ao longo do tempo. Com a fachada a encaminhar com segurança os utilizadores para a aplicação correta, pode adicionar funcionalidades ao novo sistema ao ritmo que quiser, garantindo também que a aplicação legada continua a funcionar. Ao longo do tempo, à medida que as funcionalidades são migradas para o novo sistema, o sistema legado é eventualmente “estrangulado” e deixa de ser preciso. Quando este processo estiver concluído, o sistema legado pode ser descontinuado com segurança.

Problemas e considerações

  • Considere como processar arquivos de dados e serviços que são potencialmente utilizados por sistemas novos e legados. Garanta que ambos podem aceder a estes recursos lado a lado.
  • Estruturar novas aplicações e serviços de forma a que possam ser facilmente intercetados e substituídos em futuras migrações de figos estranguladores.
  • Em algum momento, quando a migração estiver concluída, a fachada de figo estrangulador irá desaparecer ou evoluir para um adaptador para clientes legados.
  • Garanta que a fachada acompanha a migração.
  • Garanta que a fachada não se torna um ponto único de falha ou um estrangulamento de desempenho.

Quando utilizar este padrão

Utilize este padrão quando migrar gradualmente uma aplicação de back-end para uma nova arquitetura.

Este padrão pode não ser adequado:

  • Quando não puder intercetar pedidos para o sistema de back-end.
  • Para sistemas mais pequenos em que a complexidade da substituição do comércio grossista é baixa.

Próximos passos