/Challenge_DevOps-2

Segundo Challenge de DevOps Alura

Primary LanguageJava

💻 Sobre o projeto

Fazer o deploy de uma aplicação através de uma maquina virtual.

Para realizar o deploy da aplicação será usado uma aplicação já existente, precisaremos criar uma maquina virtual para a aplicação, colocar o código da aplicação em um repositório, vamos automatizar o processo de testes e deploy usando rotinas de CI e CD. Por fim vamos coletar métricas da aplicação usando ferramentas de SRE.

🪧 Vitrine.Dev
✨ Nome Challenge DevOps
🏷️ Tecnologias Java, Terraform, Jenkins, AWS, Docker, Ansible e Slack
🚀 URL
🔥 Desafio Challenge DevOps 2

Simbolo do infinito com processos DevOps

📃 Detalhes do projeto

  • Na branch 'main' está o projeto finalizado com a rotina CI/CD no Jenkins. Nesse ambiente, as etapas declarativas incluem: Checkout SCM, Checkout Source, Build Docker Image - DB, Push to Docker Hub, Create Credentials File, Create or Update Infrastructure, Run Ansible, Wait e Destroy Infrastructure. Foi utilizado Infrastructure as Code (IaC) com Terraform, utilizando módulos remotos, para criar a infraestrutura na AWS e implantar uma instância EC2. Além disso, foi implementada a integração com o Slack para notificações durante a rotina CI/CD.

    Caso a pipeline seja executada como ambiente de desenvolvimento (DEV), a infraestrutura criada pela IaC será destruída após a conclusão da pipeline. No entanto, caso seja executada como ambiente de produção (PROD), o ambiente não será destruído automaticamente, permitindo a continuidade do ambiente para produção.

  • A branch 'DEV_local' para testar a aplicação e sua conexão com o banco de dados no ambiente local. Isso proporcionou um ambiente de desenvolvimento local para verificar o funcionamento correto da aplicação antes de prosseguir para os testes no ambiente de desenvolvimento CI/CD.

⚙️ Funcionalidades

  • Semana 1 Familiarizando com a aplicação, criando infra aws com terraform e testando a applicação;
  • Semana 2 Rotina CI/CD com Jenkins;
  • Semana 3/4 Monitoramento e SRE do sistema em produção;

Semana 1 IaC

Serviços feitos da AWS criados pelo Terraform:

  • Utilizado modulos remotos para crair o ambiente da applicação;
  • Ambiente Criados DEV e PROD;
  • Utilizaer um Docker para o DB;

Semana 2 CI/CD

  • Criado Pipeline de CI/CD com Jenkins;
  • Realizado create e push da imagem DB_mysql para o DockerHub
  • Realizar rotina de testes já presentes na API;

Semana 3 e 4 Monitoramento e SRE

  • Utilizei o Prometheus para coletar métricas;
  • Utilizei Grafana para visualizar métricas coletadas;
  • Utilizei o docker-compose para subir o Prometheus eo Grafana;
  • Como a aplicação não ira ser rodar em um conteiner eu optei por por salvar os arquivos de logs em arquivos .gz conforme o tamanho e lifecycle escolhidos;

Jenkins CI/CD:

image

Grafana Dashboard:

image

Prometheus target:

image

Slack:

image


💻 Sobre a API

Voll.med é uma clínica médica fictícia que precisa de um aplicativo para gestão de consultas. O aplicativo deve possuir funcionalidades que permitam o cadastro de médicos e de pacientes, e também o agendamento e cancelamento de consultas.

Enquanto um time de desenvolvimento será responsável pelo aplicativo mobile, o nosso será responsável pelo desenvolvimento da API Rest desse projeto.


⚙️ Funcionalidades

  • CRUD de médicos;
  • CRUD de pacientes;
  • Agendamento de consultas;
  • Cancelamento de consultas.

🎨 Layout

O layout da aplicação mobile está disponível neste link: Figma


📄 Documentação

A documentação das funcionalidades da aplicação pode ser acessada neste link: Trello


🛠 Tecnologias

As seguintes tecnologias foram utilizadas no desenvolvimento da API Rest do projeto:


📝 Licença

API desenvolvido por Alura e utilizado nos cursos de Spring Boot.

Instrutor: Rodrigo Ferreira