Padrão de figueira estranguladora

Migrações para Azure

Migre incrementalmente um sistema herdado substituindo gradualmente partes específicas de funcionalidade por serviços e aplicativos novos. Como os recursos do sistema herdado são substituídos, o novo sistema acaba substituindo todos os recursos do sistema antigo, estrangulando o sistema antigo e permitindo que você o encerre.

Contexto e problema

Conforme o sistema envelhece, as ferramentas de desenvolvimento, a tecnologia de hospedagem e até mesmo as arquiteturas do sistema em que elas foram criadas podem se tornar cada vez mais obsoletas. Conforme são adicionados novos recursos e funcionalidades, a complexidade desses aplicativos pode aumentar consideravelmente, tornando mais difícil de manter ou adicionar novos recursos.

Substituir completamente um sistema complexo pode ser uma tarefa muito grande. Geralmente, você precisará de uma migração gradual para um novo sistema, mantendo o sistema antigo para manipular recursos que ainda não tenham sido migrados. No entanto, executar duas versões diferentes de um aplicativo significa que os clientes precisam saber o local em que determinados recursos estão localizados. Sempre que um recurso ou serviço for migrado, os clientes precisarão ser atualizados para apontar para o novo local.

Solução

Substitua incrementalmente partes específicas da funcionalidade por novos serviços e aplicativos. Crie uma fachada que intercepte solicitações para o sistema herdado de back-end. A fachada encaminha essas solicitações para o aplicativo herdado ou para os novos serviços. Os recursos existentes podem ser migrados para o novo sistema gradualmente e os consumidores podem continuar usando a mesma interface, sem que estejam cientes de que qualquer migração ocorreu.

Diagrama do padrão de figueira estranguladora

Esse padrão ajuda a minimizar o risco da migração e distribui o esforço de desenvolvimento ao longo do tempo. Com a fachada roteando com segurança os usuários para o aplicativo correto, você pode adicionar funcionalidade ao novo sistema em qualquer velocidade que desejar, enquanto garante que o aplicativo herdado continua a funcionar. Ao longo do tempo, conforme os recursos são migrados para o novo sistema, o sistema herdado acaba sendo “estrangulado" e não é mais necessário. Quando esse processo for concluído, o sistema herdado com segurança poderá ser descontinuado.

Problemas e considerações

  • Considere como lidar com serviços e armazenamentos de dados potencialmente usados por sistemas herdados e novos. Verifique se ambos podem acessar os recursos lado a lado.
  • Estruture novos aplicativos e serviços de maneira que possam facilmente ser interceptados e substituídos em futuras migrações de figueira estranguladora.
  • Em algum momento, quando a migração for concluída, a fachada de figueira estranguladora desaparecerá ou se transformará em um adaptador para clientes herdados.
  • Verifique se a fachada acompanha a migração.
  • Verifique se a fachada não se torna um ponto único de falha ou um gargalo de desempenho.

Quando usar esse padrão

Use esse padrão ao migrar gradualmente um aplicativo de back-end para uma nova arquitetura.

Esse padrão pode não ser adequado:

  • Quando as solicitações ao sistema de back-end não podem ser interceptadas.
  • Para sistemas menores em que a complexidade de toda a substituição é baixa.

Design de 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 apoia os objetivos do pilar
As decisões de design 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 Teste
A otimização de custos se concentra em sustentar e melhorar o retorno sobre o investimento da sua carga de trabalho. O objetivo dessa abordagem é maximizar o uso dos investimentos existentes no sistema em execução atualmente e, ao mesmo tempo, modernizar incrementalmente, pois permite que você realize substituições de alto ROI antes de substituições de baixo ROI.

- CO:07 Custos de componentes
- CO:08 Custos ambientais
A Excelência Operacional ajuda a fornecer qualidade na carga de trabalho por meio de processos padronizados e coesão da equipe. Esse padrão fornece uma abordagem de melhoria contínua, na qual a substituição incremental com pequenas mudanças ao longo do tempo é preferida 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 implantação segura

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

Próximas etapas