Você já ouviu falar em modernização de aplicações?

Ao nosso redor e controlando uma boa parte de rotinas e aspectos das nossas vidas estão as aplicações, ou sistemas, ou softwares. Desde o controle da produção de um veículo, passando pela gestão de estoque de um posto de combustíveis ou os dados médicos de um paciente em um hospital, muitas rotinas são feitas com a ajuda de aplicações.

Até aqui o mundo parece cor de rosa… Felizes aqueles que digitalizaram processos de negócio traduzindo-os em aplicações para executar diversas rotinas com maior rapidez e eficiência do que as pessoas.

Porém, tem o outro lado da história: muitas dessas aplicações foram desenvolvidas anos e até décadas atrás em linguagens de programação que cada vez menos pessoas dominam, para rodar em máquinas com arquiteturas de computação diferente do que é usado atualmente e contando com o suporte de softwares que vêm envelhecendo junto e também ganhando complexidade.

Se a transformação digital é direcionada pela constante evolução dos negócios, como iremos fazer essas aplicações longevas acompanharem as necessidades atuais?

O “Problema”, será que esse é o nome correto? Quais as implicações em manter aplicações não modernizadas?

Há uma série de implicações em manter essas aplicações legadas da maneira que estão. Além do alto custo que vem a cabeça de todos quando falamos nesse tipo de estratégia, também se gasta um tempo significativo mantendo essas aplicações no ar e fazendo-as conversar com um ecossistema em constante mudança.

Acompanhar as necessidades do negócio: um ponto importante já destacado acima é a necessidade do TI acompanhar a velocidade e mudanças do negócio. Alterar aplicações legadas pode custar caro, demorar muito tempo e envolver riscos importantes ao alterar o código do que está funcionando.

  • Custo: esse tema engloba uma série de outros subtemas afetados ao se manter aplicações legadas: Hardwarededicado com arquiteturas específicas, Licenças de softwares que suportam o funcionamento dessas aplicações, Custo de Facilities para manter essas aplicações fora de Cloud seja em um Datacenter na casa do cliente ou compartilhado e o tempo gasto com a Manutenção diária dessas aplicações.

  • Uso de recursos: A arquitetura dessas aplicações pode exigir recursos de computação dedicados que em diversas fases da execução das aplicações podem estar ociosos e não conseguem ser compartilhados com outras aplicações.

  • Segurança e LGPD: A não evolução da arquitetura das aplicações pode resultar em uma exposição desnecessária a riscos cibernéticos e não conformidades com a Lei Geral de Proteção de Dados, fatores que são uma realidade hoje, mas não eram preocupações latentes quando as aplicações foram desenvolvidas.

  • Profissionais vs Skills: A disponibilidade de profissionais que trabalham com essas tecnologias diminui ao longo do tempo por razões não muito difíceis de entender: as pessoas que desenvolveram essas aplicações já se retiraram do mercado de trabalho ou estão perto disso, tecnologias mais modernas certamente atraem mais a atenção dos profissionais que estão entrando no mercado.

  • Integração: Fazer com que essas aplicações legadas se integrem com outras aplicações mais “modernas” pode ser uma missão complexa. Além dos riscos que falamos acima, quando essas aplicações foram desenvolvidas pouco ou nada se falava sobre API, SaaS, aplicativos para celular, etc.

A “Solução”, ou melhor, estratégias para lidar com essas aplicações.

Em 2011 o Gartner falava em 5Rs, nome conhecido para as cinco estratégias de migração para nuvem que começam com a letra R. Esse modelo evoluiu ganhou mais dois “erres”:

  • Retire: tal qual o nome diz, aposentar a aplicação pode ser uma saída. Isso pode acontecer, pois a função que ela executa pode ser executada por outra aplicação ou até não ser mais necessária. Em muitos casos retire significa arquivar para consultas futuras.

  • Retain: já que o mundo não é cor de rosa, às vezes a estratégia pode ser manter a aplicação em funcionamento por uma série de motivos, como: não estar pronta para ser modernizada, seguirá funcionando até não ser mais necessária, ou possui dependências que não permitem a movimentação. E está tudo bem reter algumas aplicações com justificativas robustas, pois olhando para o todo, um legado mais enxuto pode fazer sentido se mantido com um roadmap claro.

  • Rehost: aqui começamos a brincadeira. O modo mais simples é esse, também chamado de lift and shift. Mover a aplicação tal qual está no seu servidor para a nuvem sem alterações. Esse pode ser o destino final ou um passo inicial para as demais estratégias.

  • Relocate: essa estratégia pode envolver a transferência de diversos servidores de uma só vez sem ser necessário a aquisição de hardware ou alterações no código. Funciona bem para arquiteturas VMware.

  • Repurchase: talvez a saída seja substituir a aplicação por algo de mercado que cumpra as mesmas funções. Portanto, a compra ou assinatura de um novo software pode ser a solução para esses casos.

  • Replatform: essa estratégia pode parecer um pouco com o Rehost / lift and shift. A diferença é que com pequenas customizações, as aplicações podem se beneficiar de recursos de cloud que não estavam disponíveis em um ambiente on-premise. A conteinerização de aplicações é um exemplo dessa estratégia.

  • Refactor / Re-architect: apesar de ser uma mudança mais radical, ela pode ser a única solução em alguns casos. Exemplos comuns desse tipo de estratégia são aplicações que não tem documentação e código-fonte ou não tem recursos disponíveis para mantê-las. Então a solução pode passar por reescrever essa aplicação em uma linguagem mais moderna.

Em tempos de decisões baseadas em dados e caminhos apontando para mais e mais eficiência operacional, olhar para as aplicações legadas e modernizá-las é inevitável para qualquer negócio, seja ele um posto de gasolina, uma fábrica de automóveis ou até uma empresa de lançamento de foguetes.

O segredo aqui é fazer um assessment detalhado, considerando as necessidades do negócio, entendendo o ecossistema de aplicações para identificar gaps, intersecções e duplicações de função.

Somente com esse mapa detalhado em mãos é possível seguir uma jornada de modernização com sucesso. É nesse momento que consultores agnósticos a tecnologia, conseguem analisar o que está disponível no mercado e propor um pacote de soluções adequado para cada situação.

Você conhecia as estratégias de modernização de aplicações e a importância delas para as organizações?

Sou Mauro Periquito, Engenheiro de Telecomunicações e Diretor Especialista de Prática na Kyndryl, onde desenvolvo e gerencio projetos de transformação digital para indústria, utilities, mineração, agronegócio e operadoras de telecomunicações. Em minha trajetória profissional tenho como propósito traduzir as necessidades dos clientes em soluções customizadas. 

Também atuo em outras frentes como mentor, palestrante, conselheiro consultivo e escrevo diariamente no LinkedIn sobre gestão de pessoas, carreira, inovação e tecnologia, com a missão de trazer uma visão descomplicada sobre a tecnologia. Fui eleito no final de 2022 como LinkedIn Top Voice de Tecnologia & Inovação. 

Durante minha carreira trabalhei em multinacionais no Brasil, países da América Latina, Espanha, Porto Rico, Emirados Árabes Unidos e Qatar. Em meu tempo livre, sou um grande entusiasta do ciclismo em seus diversos modos, incluindo o cicloturismo.

Artigos relacionados:

Bibliografia: