Em meados de 2018 a Arpen-SP viu a necessidade de ter o seu ambiente analisado para a criação de um Plano de Ação com o intuito de adequar os seus processos a cultura DevOps. Com isso, viu que a melhor alternativa era a criação, de forma automatizada, de uma esteira CI/CD baseada em integrações com ferramentas Open Source.Todo o projeto foi baseado em dois dos principais ambientes em Cloud: AWS e GCP. Esses ambientes, criados com Infraestrutura como Código, permitiram a orquestração de containers para sustentar as aplicações em NodeJS, ColdFusion e PHP que são utilizadas para interagir com APIs com objetivo de criar relatórios focados nos atos da vida civil e fazer a comunicação com instituições terceiras.
Sobre o projeto
Desafios na implementação
- Entregar um Ambiente de Produção e Desenvolvimento Multicloud.
- Implementar um LoadBalancer para trocas de ambiente a fim diminuir o Downtime.
- Gerar Escalabilidade em multi zona.
- Garantir a centralização dos logs da aplicação mesmo com o ambiente efêmero.
- Automatizar todos os processos de configuração e provisionamento.
- Orquestrar os containers a fim de manter a utilização das aplicações nos Ambientes multicloud.
- Monitorar e reter registros das aplicações de forma preditiva.
Solução implementada
Implementamos uma Infraestrutura como Código (IaC)baseada em Ansible que permite o provisionamento dos recursos em Cloud (GCP e AWS) e permite a garantia de funcionamento e configuração do ambiente para gerar a pipeline de entrega, com o Jenkins, todo o ambiente de Monitoramento com Prometheus, Grafana e Graylog com alertas enviados ao Telegram e com o Docker Swarm em Multi Zona, permitindo a redundância dos ambientes e a escalabilidade da aplicação de maneira simples, eficiente e resiliente. A criação da Pipeline com Jenkinsfile foi o recurso que permitiu a escrita e versionamento de todo o fluxo de entrega, sendo plenamente integrado com ferramentas ágeis como Ansible e Docker.
Benefícios e resultados
- Facilidade de Migração do Ambiente Loadbalancer garante que a troca de ambientes, quando necessário, será transparente ao cliente.
- Resiliência a Disaster Recover, já que toda a Infraestrutura pode ser destruída e reconstruída de maneira fácil.
- Escalabilidade das aplicações devido a orquestração em container.
- Monitoramento da aplicação com envio de notificações e retenção de informações para avaliação mais assertiva em casos de problemas.
- Fluxo estável, ágil e versionado para entrega das aplicações.