Horizonte para Modernização
Quando o objetivo é modernizar aplicações legadas, olhando os números de algumas pesquisas norte americanas, aparentemente o trabalho é infinito. O mercado de software nos Estados Unidos cresceu em média 7,2% ao ano entre os anos de 2000 e 2014 alcançando U$ 475 bilhões¹. Em 2016, esse número chegou a U$ 564 bilhões². Sendo assim, esta enorme quantidade de dinheiro foi utilizada na produção e sustentação de inúmeros sistemas e uma coisa é fato: Este dinheiro não seria gasto se esses sistemas não fossem importantes!
Esses montantes financeiros são astronômicos, assim como a diversidade dos tipos de softwares construídos. É interessante pensar que todos eles foram construídos utilizando as tecnologias existentes nas épocas em que foram desenvolvidos, mas a pergunta que fica é como continuar fazendo uso desses softwares, que para muitos ganharam a alcunha de legados.
Sistemas legados são sistemas de informação que se baseiam em tecnologias desatualizadas, mas que são fundamentais para as operações do dia-a-dia da empresa³.
Modernização de Aplicações
O objetivo da modernização de aplicações é revitalizar aplicações construídas adicionando capacidades/conceitos que foram construídas nos últimos anos.
Evolução Tecnológica: Remover a aplicação dos servidores de aplicação pesados que demoram uma eternidade para serem iniciado, criando pequenos módulos que podem ser inicializados isoladamente (Spring Boot);
Conteinerização: A partir dos módulos que foram separados é possível criar container de cada um dos módulos (Docker) e gerir a infraestrutura por meio de uma plataforma de contêineres (Kubernetes);
DevOps + CI/CD: Fazendo uso da nova infraestrutura, o time de desenvolvimento e infraestrutura se unem, ganhando velocidade implantações pequenas e rápidas da aplicação. Para tornar isso possível é estrutura uma esteira de implantação que monitora as alterações do código (Jenkins), realiza implantações de novas versões, testa o novo código de forma automática (JUnit, BDD, Cucumber, Protractor, Selenium) e após o sucesso de todas as fases, implanta em produção;
Integração via serviços REST ou WS: Disponibilização de camada de integração da aplicação, criando a possibilidade de integração do monólito com novas aplicações da empresa;
API Management: A partir dos serviços disponibilizados, utilizar ferramenta de gestão de API para iniciar a quebra dos monólitos em domínios sem interferir a operação.
Mapa de Tecnologia
A tecnologia e a linguagem de programação são forças que ajudam a enquadrar os sistemas como legados. Inicialmente, quando uma empresa escolhe a tecnologia a ser utilizada para construção do sistema, em geral faz comparação das características intrínsecas (sintaxe, facilidade de uso, produtividade, desempenho, portabilidade), pacotes disponíveis (frameworks), comunidade e cultura. A cultura seja da empresa ou da região é muito importante, nela enquadram-se a disponibilidade de profissionais na empresa ou no mercado, os salários, formação média e a curva de aprendizado. Uma tecnologia fica obsoleta e os profissionais param de estudá-la e suporta-la, porém o resultado é único, o sistema legado se forma um risco. Todo esse movimento acontece em conjunto, quase que num efeito manada!
Para avaliação dos problemas de uma aplicação legada, é importante conhecê-los. Ter visão dos dados mantidos, características da tecnologia que são utilizadas e mapa de dependências bidirecionais. É comum que os sistemas de uma empresa utilizem as mesmas tecnologias, isso torna mais desafiador a avaliação de modernizações, por que as tecnologias possuem mecanismos particulares de comunicação (pelo menos era assim até a chegada dos WebService e REST), o que faz inicialmente a migração ser imaginada em um modelo “BigBang”.
Critérios de elegibilidade
Os critérios para modernização são extremamente importantes, não são todas as aplicações que devem ser elegidas para modernização. A sua estratégia de modernização pode ter maior ou menor custo (a VMBEARS pode te ajudar a ter custo baixo) por isso é importante entender quais sistemas devem ser modernizados. Entender o que o sistema faz e como faz, e se este ainda favorece o negócio faz parte de sua avaliação.
Estudo para modernização
É bem verdade que entender um sistema legado não é simples. Ainda mais quando ele não é mais sustentado e as únicas operações de suporte são o liga e desliga. A busca para o entendimento do sistema legado a ser modernizado deve ser metódica, encarando todos os desafios em primeiro lugar.
“Para vencer, deve-se conhecer perfeitamente a terra (a geografia, o terreno) e os homens (tanto a si mesmo quanto o inimigo). O resto é uma questão de cálculo. Eis a arte da guerra.”
(Sun Tzu, A Arte da Guerra)
Um bom início para este mapa será listar: Tecnologias Utilizadas, características e frameworks utilizados na aplicação, integrações consumidas e disponibilizadas e por fim os ambientes. Cada empresa encontra-se com negócios e tecnologias distintos, portanto o mais importante é atentar-se ao método de sucesso que foque na modernização das tecnologias e arquitetura, preservando plenamente os benefícios atuais do sistema legado com a flexibilidade da nova arquitetura ou tecnologia.
Método
O método da VMBEARS para estudar e modernizar sistemas é:
1. Avaliar a arquitetura existente
A fim de criar um AS-IS de arquitetura e ter visibilidade dos desafios a serem resolvidos, o desenho inicial da arquitetura permite entender as minúcias da empresa, critérios e valores mais importantes para orientar as estratégias de modernização, e identificar os sistemas elegíeis;
2. Estratégias de Modernização
Como resultado da avaliação arquitetural é proposto cenários de modernização do sistema tendo em vista o menor impacto na transição do sistema. Neste passo são avaliadas estratégias como Encapsulamento, Replatform, Refactoring, Rearchiteture entre outras. É importante notar que para cada estratégia de modernização existe custos e impactos diferentes associados e é neste passo a melhor estratégia para o cliente é escolhido;
3. Entregas Parciais
Entregas parciais são ótimas para acelerar os benefícios da modernização e minimizam o impacto na operação dos times de suporte e infraestrutura. Do ponto de vista gerencial, essa estratégia traz melhor monitoramento do projeto e gestão das expectativas do cliente;
4. Operação Assistida
Com os novos sistemas em produção é importante passar conhecimento para os times de suporte, desta forma a fase de acompanhamento da operação permite que o time de modernização e suporte fiquem junto entendo, avaliando e realizando ajustes caso necessário. Outras. É importante notar que para cada estratégia de modernização existe custos e impactos diferentes associados e é neste passo a melhor estratégia para o cliente é escolhido.
Conclusão
A modernização de sistemas é imprescindível para empresas que querem continuar entregando com qualidade e atendendo o mercado com velocidade. Entender a melhor forma de modernizar o portfólio de sistemas é o ponto chave para sucesso. Existem várias formas de modernizar sistemas, mas todas exigem conhecimento para fazer as escolhas corretas. O método para executar a modernização é estudar cenário atual, escolher estratégia, entregar pequenos pacotes de grande valor para o negócio e o acompanhamento deve ser realizado com atenção, para manter o cliente continuamente satisfeito.