Editar

Partilhar via


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.

Diagrama do padrão Strangler Fig

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 novos aplicativos e serviços de forma 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.

Design da carga de trabalho

Um arquiteto deve avaliar como o padrão Strangler Fig pode ser usado no design de sua carga de trabalho para abordar as metas e os princípios abordados nos pilares do Azure Well-Architected Framework. Por exemplo:

Pilar Como esse padrão suporta os objetivos do pilar
As decisões de projeto de confiabilidade ajudam sua carga de trabalho a se tornar resiliente ao mau funcionamento e a garantir que ela se recupere para um estado totalmente funcional após a ocorrência de uma falha. A abordagem incremental desse padrão pode ajudar a mitigar riscos durante uma transição de componente versus grandes mudanças sistêmicas.

- RE:08 Testes
A Otimização de Custos está focada em sustentar e melhorar o retorno do investimento da sua carga de trabalho. O objetivo dessa abordagem é maximizar o uso dos investimentos existentes no sistema atualmente em execução enquanto se moderniza incrementalmente, como tal, permite que você execute substituições de alto ROI antes de substituições de baixo ROI.

- CO:07 Custos dos componentes
- CO:08 Custos ambientais
A Excelência Operacional ajuda a fornecer qualidade de carga de trabalho por meio de processos padronizados e coesão da equipe. Este padrão fornece uma abordagem de melhoria contínua, na qual a substituição incremental com pequenas mudanças ao longo do tempo é preferível em vez de grandes mudanças sistémicas que são mais arriscadas de implementar.

- OE:06 Desenvolvimento de carga de trabalho
- OE:11 Práticas de implementação seguras

Como em qualquer decisão de design, considere quaisquer compensações em relação aos objetivos dos outros pilares que possam ser introduzidos com esse padrão.

Próximos passos