Roteando o Futuro: Como o Strangler Pattern Facilita a Evolução de Sistemas Legados
Tags: architecture, programming
Published: 2023-04-27 14:11:13

Quando um sistema de software se torna obsoleto ou precisa ser atualizado, é comum que as empresas considerem a reescrita completa do sistema para uma nova tecnologia ou arquitetura. No entanto, essa abordagem pode ser arriscada, pois pode envolver a interrupção completa do sistema antigo e a substituição por um novo sistema, o que pode causar impactos significativos aos usuários e ao negócio como um todo.

É aí que entra o Strangler pattern (Padrão Estrangulador). Essa abordagem propõe uma transição gradual e cuidadosamente planejada do sistema legado para a nova arquitetura, sem interromper a funcionalidade do sistema existente. A ideia é criar uma camada intermediária, ou "estrangulador", que atua como uma interface entre o sistema legado e o novo sistema. Essa camada é responsável por rotear as solicitações dos usuários para a parte relevante do sistema legado ou para o novo sistema, com base na funcionalidade que está sendo acessada.

Ao adotar o Strangler pattern, a equipe de desenvolvimento pode implementar incrementalmente as novas funcionalidades e melhorias no novo sistema, enquanto mantém a funcionalidade existente do sistema legado. Isso permite uma transição suave, com menor risco de interrupção do serviço e permite que os usuários continuem a utilizar o sistema sem impactos negativos.

Além disso, o Strangler pattern também pode ser utilizado como uma estratégia para lidar com sistemas monolíticos, onde todo o código está integrado em uma única aplicação, dificultando a escalabilidade, manutenção e evolução do sistema. Nesse caso, a equipe de desenvolvimento pode criar serviços independentes e utilizar o Strangler pattern para rotear as solicitações dos usuários para os novos serviços, à medida que são desenvolvidos, sem interromper o funcionamento do sistema monolítico.

No entanto, é importante notar que a implementação do Strangler pattern também pode ser complexa e requer um planejamento cuidadoso. É necessário garantir que a camada intermediária seja robusta e eficiente, para evitar gargalos de desempenho ou pontos únicos de falha. Além disso, a equipe de desenvolvimento precisa estar atenta à compatibilidade entre o sistema legado e o novo sistema, garantindo que as integrações e as interfaces de comunicação sejam devidamente gerenciadas.

**Exemplificando a transição**
![Exemplo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/umi00jovo85w7fvaexh3.png)
Em resumo, o Strangler pattern é uma estratégia de migração gradual e controlada de um sistema legado para uma nova arquitetura de software, sem interromper a funcionalidade existente. Ele pode ser uma abordagem eficaz para minimizar o risco e os impactos de atualizações de sistemas, permitindo uma transição suave para a nova arquitetura.

**Referências**
[Khononov, Vlad. Learning Domain-Driven Design. O'Reilly Media](https://www.amazon.com.br/Learning-Domain-Driven-Design-Aligning-Architecture/dp/1098100131/ref=asc_df_1098100131/?tag=googleshopp00-20&linkCode=df0&hvadid=379726160779&hvpos=&hvnetw=g&hvrand=1126465606958180057&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1001698&hvtargid=pla-1253593164479&psc=1)
[The pros and cons of the Strangler architecture pattern](https://www.redhat.com/architect/pros-and-cons-strangler-architecture-pattern#:~:text=The%20Strangler%20pattern%20is%20one,system%20pass%20through%20the%20facade.)