Fernando Nagase

Engenheiro de Software

O que é o padrão Strangler Fig Application?

Aprenda o que são Strangler Figs e o que têm a ver com microsserviços

Publicado em 22 jun. de 2023 · Escrito por Fernando

O padrão de projeto Strangler Fig Application, que também é conhecido como padrão Strangler Application ou simplesmente Strangler, teve seu nome baseado em uma analogia popularizada por Martin Fowler.

Ao meu ver, as analogias compõem um recurso poderosíssimo para facilitar o entendimento de assuntos complexos. Por meio de comparações, elas permitem explicar conceitos desconhecidos por meio daqueles que já conhecemos… Isso, é claro, se tivermos primeiramente uma referência com a qual comparar.

Dito isso, eu te faço uma pergunta: você sabe o que são Strangler Figs? Se, assim como eu, você nunca tinha ouvido falar sobre esse termo até se deparar com o padrão abordado neste artigo, continue lendo, pois vamos começar pelas “raízes” para entender o seu significado e qual a sua relação com desenvolvimento de software.

O que são Strangler Figs?

Em uma publicação feita em seu próprio site, Fowler relata que concebeu uma metáfora sobre a migração de sistemas críticos durante uma viagem que fez para a Austrália, após observar o comportamento de certas árvores que podiam ser encontradas naturalmente por lá.

Essas árvores, que na verdade fazem parte de uma família com várias outras espécies, são denominadas Strangler Figs ou “figueiras estranguladoras”, em português, e recebem esse nome devido à forma pela qual normalmente se desenvolvem: elas crescem ao redor de árvores hospedeiras e as “estrangulam”.

Para ser mais específico, elas produzem frutos cujas sementes são depositadas nas copas das outras árvores principalmente como resultado da alimentação de pássaros, e quando essas sementes encontram os recursos necessários, elas germinam e suas raízes passam a crescer do alto até se estabelecerem no solo.

O resultado desse processo pode ser, ocasionalmente, a morte da árvore hospedeira, visto que a figueira passa a competir tanto pelos nutrientes do solo quanto pela luz solar, nas partes superiores. Você pode ver como esse tipo de árvore se parece assistindo este vídeo (YouTube).

Strangler Fig Application vs. Strangler Application
Originalmente, em 2004, o artigo de Fowler tinha "Strangler Application" como título. O termo strangler ou "estrangulador" não é, por si só, muito claro sobre a origem da analogia, e muitas vezes era usado no sentido violento. Por isso, o autor renomeou sua publicação sobre o padrão para "Strangler Fig Pattern", reforçando a relação com a metáfora original.

Desenvolvendo software como Strangler Figs

Agora que conhecemos o contexto por trás da analogia de Fowler, finalmente podemos prosseguir para a etapa em que a relacionamos com o contexto de desenvolvimento de software e microsserviços.

A comparação é feita com a migração de uma aplicação monolítica para uma organizada em microsserviços, e pode ser explicada da seguinte forma:

  1. a aplicação monolítica, pronta e já em funcionamento, serve como uma árvore hospedeira, em torno da qual a nova aplicação organizada em microsserviços será desenvolvida;

  2. aos poucos, desenvolvemos microsserviços “ao redor” da aplicação monolítica (pense neles como as raízes de um Strangler Fig) para substituir responsabilidades individuais e bem definidas do sistema original;

  3. eventualmente — esse processo pode durar anos — o ecossistema de microsserviços desenvolvidos em torno do sistema original terá crescido o suficiente para substitui-lo por completo, sendo assim, ele é “estrangulado”.

A principal vantagem de aplicar Strangler Fig Applications decorre da entrega gradual de software, que reduz o risco durante o desenvolvimento. Ao trabalharmos com incrementos, em vez de substituir “tudo de uma vez”, não apenas podemos aproveitar cada microsserviço assim que estiver pronto, como também conseguimos acompanhar mais facilmente a evolução da aplicação e verificar se ela está no caminho certo.

Conclusão

O padrão de projeto Strangler Fig Application é comumente lembrado quando se fala na migração de uma aplicação monolítica para a arquitetura de microsserviços, e recomenda que o desenvolvimento e implantação de microsserviços sejam graduais, até o momento em que todo o sistema original possa ser substituído por eles.

O nome dessa abordagem se origina de uma analogia feita por Martin Fowler com o comportamento de uma família de árvores denominadas Strangler Figs, cujas raízes crescem ao redor de árvores hospedeiras e as “estrangulam”, de modo a “roubar” os seus nutrientes, em alguns casos, até mesmo causando a morte da árvore original.

Ao implantar microsserviços que substituem responsabilidades pequenas e bem definidas do domínio, as migrações feitas seguindo esse padrão permitem entregar valor ao negócio de forma incremental, e reduzem os riscos dentro do projeto, devido à maior facilidade de monitorar o seu andamento.

Referências

  1. martinfowler.com

  2. Analogia: o que é, conceito e exemplos (descomplica.com.br)

  3. StranglerFigApplication (martinfowler.com)

  4. Strangler fig - Wikipedia (wikipedia.org)

  5. Strangler Figs: Not Always a Bad Wrap | Naples Botanical Garden (naplesgarden.org)

  6. Strangler Fig - YouTube (youtube.com)

  7. Break the monolith: Chunking strategy and the Strangler pattern - IBM Garage Practices (www.ibm.com)

  8. Apply the Strangler Fig Application pattern to microservices applications - IBM Developer (developer.ibm.com)

Atribuições