BLOG

Modernização de aplicativos: Quando reescrever é melhor que refatorar

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 08 de setembro de 2020

Um dos maiores impactos da transformação digital é a interrupção do desenvolvimento de aplicativos. Historicamente, a introdução de novas arquiteturas no desenvolvimento de aplicativos geralmente leva vários anos até ganhar força e ser adotada amplamente. As arquiteturas de aplicativos que tendem a dominar setores inteiros acabam se tornando o padrão de fato. Vimos isso acontecer em meados do final da década de 1990, quando o J2EE se tornou lenta mas seguramente o "padrão empresarial" para o desenvolvimento de aplicativos web de três camadas.

Hoje, a arquitetura que parece destinada a "pegar" e se tornar o novo padrão é a nativa da nuvem. Essas arquiteturas de microsserviços baseadas em contêineres estão rapidamente se movendo para dominar novos projetos de desenvolvimento em todos os setores. O crescimento bem-sucedido do Kubernetes, no qual um número significativo desses aplicativos são implantados e operados, indica que essa arquitetura de aplicativo mais recente veio para ficar. Nossa pesquisa mostra que pelo menos metade das organizações está explorando "novas arquiteturas" por causa da transformação digital. 

impacto no desenvolvimento de aplicativos

Agora, isso é frequentemente interpretado como se as organizações estivessem em uma jornada de "modernização". E nós (a indústria) tendemos a falar sobre modernização em termos muito gerais (e vagos). Como se as organizações simplesmente acenassem uma varinha mágica e todos os seus aplicativos fossem construídos com base neste novo modelo. 

A realidade é que as organizações têm muitas maneiras de modernizar aplicativos. Apenas alguns (37%) estão adotando uma abordagem de refatoração. Existem muitos métodos de refatoração, sendo uma das abordagens mais populares o Red Green Refactor. Mas há outras, incluindo refatoração preparatória e uma seleção de opções baseadas em abstração para escolher. A maioria se baseia na simplificação de código. Em outras palavras, eles dependem amplamente de uma forma menos disruptiva de reescrever o aplicativo.

Mas há momentos em que uma reescrita completa é a melhor estratégia para a modernização. Geralmente, o esforço para reescrever completamente um aplicativo legado existente pode ser substancial o suficiente para desanimar até mesmo o mais determinado defensor da transformação digital. Mas, em alguns casos, isso pode gerar economias significativas.

Considere a abordagem adotada por uma agência federal para modernizar seu portfólio de aplicativos. Operando sob um mandato para migrar para uma metodologia Agile, a agência precisava de permissão especial para desenvolver aplicativos de forma tradicional, em cascata. Agora, cascata era a metodologia dominante quando eu estava programando, então sim, ela é antiga. A agência decidiu que o melhor lugar para começar seria entender seu próprio portfólio e racionalizar a necessidade de cada aplicação.

Durante essa auditoria, eles encontraram quase 200 aplicativos — de cerca de 6.000 — que realizavam a mesma tarefa básica de gerenciamento de ativos. Imagine, por um momento, que fosse necessária uma alteração naquela função empresarial básica que exigisse a modificação de todos os 200 aplicativos.

Isso representa muito tempo e esforço do desenvolvedor e do operador para desenvolver, testar e implantar a mesma função comercial.

A agência decidiu se modernizar substituindo todos os 200 aplicativos por um único microsserviço que agora pode ser usado em toda a agência para rastrear ativos. Desenvolvido usando metodologias ágeis e operado em um ambiente moderno, ele pode ser dimensionado para atender às necessidades de cada função que dependia de seu próprio aplicativo pessoal e privado.

Nem todos os esforços de modernização estão focados na refatoração. Explorar estrategicamente o que a modernização significa para todo o portfólio de aplicativos pode gerar vantagens comerciais significativas. Muitas organizações, especialmente aquelas que operam há décadas, provavelmente enfrentarão o mesmo problema de portfólio: duplicação. Reestruturações, aquisições, fusões e mudanças na gestão podem levar à duplicação de aplicativos com bastante facilidade.

Seria benéfico para todas as organizações conduzir uma auditoria e racionalização de aplicativos como parte de uma estratégia de modernização. Você pode descobrir que tem centenas de aplicativos, mas só precisa de alguns deles. Esse tipo de estratégia permite que os líderes justifiquem um aplicativo completamente novo, desenvolvido em uma nova arquitetura, para eliminar a redundância de aplicativos e os custos que tal situação acarreta.