Um dos maiores desafios que as empresas enfrentam ao longo do tempo é a evolução de seus sistemas legados. Recentemente, tivemos a oportunidade de trabalhar com um cliente do setor financeiro que lidava com um software desenvolvido em Struts e Java 8, tecnologias que, embora robustas no passado, hoje limitavam a capacidade de escalar e inovar.
Além disso, parte significativa da documentação do sistema havia se perdido ao longo dos anos, tornando as manutenções cada vez mais complexas e suscetíveis a falhas. O objetivo do projeto foi não só atualizar a tecnologia do sistema, mas também garantir que ele fosse capaz de atender às demandas crescentes por agilidade, escalabilidade e integração.
Mapeamento e Documentação
O primeiro passo foi realizar um estudo minucioso do sistema existente, criando o AS-IS. Isso envolveu mapear todas as funcionalidades e processos, além de identificar os principais gargalos e pontos de melhoria. Durante essa fase, recuperamos parte da documentação perdida e criamos uma documentação completa e estruturada.
A partir desse mapeamento, projetamos o TO-BE, um modelo para a nova arquitetura do sistema, utilizando tecnologias de ponta e alinhadas com as melhores práticas de desenvolvimento ágil e escalável.
Nova Arquitetura: Java 17, Microserviços e OpenShift
Optamos por reescrever o sistema em Java 17, adotando uma abordagem baseada em microserviços. Essa transição foi essencial para permitir uma maior modularidade no desenvolvimento e na manutenção da aplicação. Cada serviço foi projetado para ser independente, o que facilita a escalabilidade e a resiliência.
No backend, utilizamos o Spring Framework como base para a construção dos microserviços, devido à sua flexibilidade, robustez e compatibilidade com Java 17. Isso permitiu que cada serviço fosse gerenciado de forma independente e escalasse de acordo com a demanda, sem impactar o restante do sistema.
Frontend Moderno com React
No frontend, adotamos o React como a principal tecnologia, oferecendo uma interface de usuário moderna e responsiva, garantindo uma experiência fluida e intuitiva para os usuários. A combinação de React com microserviços no backend trouxe um aumento significativo na performance e na experiência geral dos usuários.
Integração e Comunicação com Apache Kafka
A comunicação entre os microserviços foi gerenciada por meio do Apache Kafka, que desempenhou o papel de mensageria. O Kafka não só garantiu a resiliência do sistema em cenários de alta demanda, mas também facilitou o processamento assíncrono, essencial para manter a consistência e a integridade dos dados financeiros em um ambiente distribuído.
Segurança e Autenticação com JWK
A segurança foi uma prioridade desde o início do projeto. Implementamos JWT (JSON Web Tokens) para autenticação e autorização, usando JWK (JSON Web Key) como base. Esse modelo de autenticação garantiu a segurança dos dados e das transações, além de permitir uma integração fluida com outras plataformas externas e APIs.
Containers e Orquestração com OpenShift
Para garantir que o ambiente fosse escalável e resiliente, toda a arquitetura foi containerizada e implementada no OpenShift. A escolha do OpenShift trouxe diversas vantagens, como o gerenciamento automatizado dos containers, balanceamento de carga e a capacidade de escalar vertical e horizontalmente, conforme a demanda.
Essa infraestrutura também nos permitiu realizar deploys contínuos e de forma automatizada, sem interrupção no serviço. Cada novo serviço ou atualização era gerenciado por containers isolados, o que reduzia drasticamente o risco de indisponibilidade.
API Gateway com 3scale da Red Hat
Outro aspecto fundamental do projeto foi a gestão das APIs. Implementamos o 3scale da Red Hat como nosso API Gateway, o que trouxe uma série de benefícios, como controle de acesso, monitoramento em tempo real, rate limiting e proteção contra ataques de DDoS. O 3scale facilitou a governança de nossas APIs, permitindo que o cliente tivesse um controle robusto e seguro sobre todas as integrações com sistemas internos e externos.
Resultados Obtidos
Com a nova arquitetura em Java 17, baseada em microserviços, o sistema do cliente passou a ser extremamente modular, escalável e fácil de manter. A implementação de React no frontend trouxe uma experiência de usuário mais fluida e moderna, enquanto o Apache Kafka garantiu a integridade da comunicação entre os serviços.
A adoção de containers no OpenShift não só simplificou o gerenciamento de infraestrutura como também preparou o sistema para crescimento futuro, permitindo que o cliente possa escalar conforme a demanda do mercado financeiro, que está em constante evolução.
Além disso, com o 3scale da Red Hat, o cliente agora possui uma gestão centralizada e segura de suas APIs, facilitando as integrações necessárias para seu crescimento contínuo.
Este projeto não só garantiu o futuro digital do nosso cliente, mas também trouxe eficiência operacional, permitindo que ele se concentre no que mais importa: continuar liderando no mercado financeiro.