O Grupo Jacto é um grupo de empresas que atua nos segmentos agrícola, fundição, tecnologia de aplicação de polímeros, transporte e logística, movimentação e armazenagem, equipamentos para limpeza e médico-hospitalar feito para empresas de qualquer tamanho.
O Desafio:
Microsserviços são uma tendência mundial no design de soluções resilientes e de negócios de missão crítica.
A base da arquitetura de microsserviços é o desenvolvimento de um único aplicativo como um conjunto de serviços pequenos e independentes executados em seu próprio processo, desenvolvidos e implantados de forma independente, diferentemente do padrão utilizado no passado, conhecido como monolítico.
Devido ao crescimento da plataforma do Connect, houve a necessidade de segregar o ambiente já existente de micro serviços para atender as demandas da companhia. Aliado com o constante dever de crescimento exponencial na plataforma, estimamos e sugerimos a construção do novo ambiente de micro serviços usando boas práticas existentes nos whitepapers da AWS que apresentam o serviço do Elastic Kubernetes Service.
Neste cenário, a arquitetura ideal seria utilizar um cluster Kubernetes, gerenciado em nuvem, tornando a infraestrutura elástica, sendo totalmente aderente com os componentes existentes e de fácil migração.
Por que Amazon Web Services?
O Grupo Jacto, precisava segregar ambientes de produção, desenvolvimento e homologação, migrar as imagens existentes nos repositórios, atribuir melhorias nos jobs existentes em sua ferramenta de ci/cd. Os seguintes requisitos são desejáveis:
- Utilizar um cluster de kubernetes gerenciado, para evitar overhead de administração;
- Utilizar serviços gerenciados de banco de dados (RDS);
- Mínima manutenção de infraestrutura;
- Capacidade de resposta às alterações na fonte de dados;
- Acesso seguro através de VPN para seus colaboradores;
Essas considerações levaram a implantação da infraestrutura na AWS. Abaixo algumas decisões técnicas e estratégicas adotadas para viabilizar o projeto:
- Amazon S3 para o armazenamento de dados;
- Amazon Container Registry, para armazenamento das imagens dos micros serviços
- API Gateway, para receber as requisições das api’s e redirecionamento de tráfego;
- Banco de dados relacional PostgreSQL gerenciado (RDS);
Um dos pontos relevantes do projeto e direcionamento para a plataforma da AWS foi o padrão de segurança, aprimoramento constante e confiabilidade oferecidos pelo serviço do Amazon Elastic Kubernetes Service.
Com este conjunto de soluções a arquitetura dos novos serviços da Grupo Jacto se consolidou conforme o diagrama a seguir:
Arquitetura do Ambiente Produtivo
Resultado
Depois de 3 meses de trabalho, o Grupo Jacto migrou sua antiga plataforma já existente na AWS para seu novo ambiente de produção, todos desenvolvedores estavam familiarizados com o novo processo de CI/CD, e com o desenvolvimento de micro serviços na nova arquitetura. Neste projeto configuramos serviços de autorização de usuários, efetuamos testes de carga antes do lançamento do ambiente.
Os resultados superam expectativas nos seguintes aspectos:
- Facilidade de implementação de um novo micro serviço;
- Segurança, todos os componentes chave em redes privadas.
- Facilidade de gerenciamento de cluster, com eksctl, onde as alterações de nodegroup podem ser feitas sem downtime;
- Facilidade de upgrade do cluster, via console ou através de eksctl;
- Monitoramento completo do ambiente com Grafana e Prometheus;
Futuro
Com os resultados obtidos, todos os novos micros serviços do Grupo Jacto estão sendo utilizados na plataforma do serviço AWS EKS, todos seus produtos, clientes e pedidos estão transacionando na mesma plataforma. Durante o projeto, foi necessário um redesign da solução, pois cada micro serviço possuía um pipeline para o CI/CD, notamos que poderíamos refatorar a solução para se tornar mais enxuta (cada micro serviço possuía um pipeline distinto). Para tanto, precisamos acertar os detalhes abaixo:
- Padronizar na nomenclatura de projetos no repositório de código;
- Criar secrets e configmaps no cluster EKS para armazenar dados sensíveis e configuração de ambiente;
- Instalar a versão do cluster para 1.17, pois algumas features de configmap só estariam disponíveis nesta versão.