Agentes de inteligência artificial acoplados em um número cada vez maior de aplicações, redes neurais artificiais que processam aprendizado profundo, rotinas de automação integrando diversos sistemas… Tudo isso descreve uma parte da realidade atual no campo da tecnologia. Mas há uma outra, também bem presente nas empresas, que as conecta ao passado: um vasto legado tecnológico que precisará ser submetido a processos de conversão de código.
Essa constatação foi feita pelo Instituto de Conhecimento da Infosys. Em relatório que apresenta um panorama de sistemas de empresas norte-americanas, européias e da Oceania, publicado em maio de 2022, foi identificado que 88% deles são legados. As empresas pesquisadas informaram que 90% desses sistemas seriam submetidos a processos de modernização de aplicações até o final de 2027.
A depender de quão antigo é o software, da sua arquitetura e da qualidade da documentação, projetos de modernização de aplicações podem demorar muito tempo, sendo que boa parte dele será consumido na etapa de conversão de código. Neste texto vamos situar historicamente a relação entre código e arquitetura de software, além de contextualizá-los com os desafios atuais. Siga com a gente!
Arquitetura de software e sistemas legados
Seja em nossos computadores, smartphones, tablets, relógios ou TVs, usamos diariamente diversas aplicações. Diante delas, nossa expectativa é que a experiência seja fluida, mesmo quando elas precisam processar rapidamente grandes volumes de dados praticamente sem erros.
Essas duas características – facilidade de uso e ampla capacidade de processamento – só são possíveis para aplicações escaláveis e integráveis, dois atributos que normalmente não encontramos em sistemas legados. Para entender o porquê, vale a pena recuperar um pedaço da história do desenvolvimento de produtos digitais.
As primeiras linguagens de programação como as conhecemos hoje foram desenvolvidas a partir da década de 1940, sendo que as de alto nível amplamente usadas, como a Fortran, são dos anos 1950. Desde essa época até o final dos anos 1980, a arquitetura de software usada para criar aplicações era o monolito: uma base de código unificada e indivisível que combinava interface do usuário, a lógica de negócios e as camadas de acesso de dados. Esse tipo de estrutura exigia a implantação de toda a aplicação como uma entidade coesa.
Mesmo nos dias de hoje não é incomum encontrarmos sistemas monolíticos. Contudo, a arquitetura de software a partir do final dos anos 1980 evoluiu: primeiro para aplicações com design modular, depois para a arquitetura orientada a serviços e, enfim, para a orientada por microsserviços, comumente encontrada nas aplicações que precisam de alta escalabilidade.
Para que elas sejam desenvolvidas – ou, nos casos de modernização de aplicações, aprimoradas – muitas vezes é necessário proceder com a conversão de parte ou a totalidade do código para arquiteturas e linguagens que sejam aderentes às características que citamos: facilidade de uso e ampla capacidade de processamento.
Conversão de código: características das linguagens e desafios mais comuns
No desenvolvimento de produtos digitais novos ou em projetos de modernização de aplicações que precisarão ganhar escala, selecionamos as linguagens de acordo com os seguintes requisitos:
- Compilação → são capazes de compilar dados para código nativo ou que, pelo menos, possuam runtimes otimizados
- Memória → fazem gerenciamento de memória otimizado, com suporte robusto para concorrência e paralelismo
- Tratamento de dados → integração fácil com banco de dados sejam eles SQL ou NoSQL
- Frameworks → ricos em bibliotecas para manipulação, favorecendo a escalabilidade
- Acessibilidade → que funcionem em diferentes sistemas operacionais, dispositivos e telas
Conforme dissemos no início deste texto, a depender de quão antigo é o sistema, da sua arquitetura e da qualidade da sua documentação, um ou vários tratamentos podem ser dados em projetos de modernização de aplicações. Em alguns casos, refatorar o código pode ser suficiente. Em outros, mais complexos, é necessário reescrever toda a aplicação. E há certos casos que poderíamos dizer que ficam no “meio do caminho”, os que passarão pela conversão de código.
Para definir os tratamentos a serem realizados, primeiro fazemos a análise da base do código. É por meio dela que entendemos a lógica de negócio e mapeamos as dependências, procurando encontrar as mais críticas.
Na sequência realizamos testes de caracterização, para entender com o máximo de detalhes possível o comportamento das aplicações. Essa etapa é fundamental para definir quais partes passarão por conversão de código, quais serão refatoradas, quais serão reescritas e quais serão migradas.
Concomitantemente à caracterização, avaliamos a arquitetura do sistema legado para verificar se e quais partes seriam compatíveis com uma versão em nuvem. Nessa análise, um dos atributos priorizados é a futura flexibilidade da aplicação. Em outras palavras, medimos quão fácil será evoluí-la após passar pelos tratamentos previstos.
Por fim, analisamos quais linguagens podem ser utilizadas. Para além das características que já mencionamos, verificamos os riscos de obsolescência futura da linguagem e evitamos as que indicam que cairão em desuso em pouco tempo.
Aqui na Inmetrics, temos vasta experiência em projetos de modernização de aplicações cujo principal objetivo é a evolução do produto, para que ele continue crescendo. Alinhados às técnicas mais contemporâneas de desenvolvimento de produtos digitais, combinamos práticas avançadas de engenharia de qualidade com inteligência artificial e nossa expertise em computação em nuvem para transformar seus sistemas legados, deixando-os mais leves, rápidos e prontos para responder às demandas do seu negócio.
Se você quer que suas aplicações aumentem a velocidade, e consequentemente as demandas, do seu negócio, fale com a gente! Nosso time está pronto para planejar e desenvolver soluções digitais ou “apenas” para fazer a conversão de código que vai transformar a forma como sua empresa entrega valor ao mercado. Clique aqui e converse conosco!