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 |
-
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.
- 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;
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;
- 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;
- 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;
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.
- CRUD de médicos;
- CRUD de pacientes;
- Agendamento de consultas;
- Cancelamento de consultas.
O layout da aplicação mobile está disponível neste link: Figma
A documentação das funcionalidades da aplicação pode ser acessada neste link: Trello
As seguintes tecnologias foram utilizadas no desenvolvimento da API Rest do projeto:
API desenvolvido por Alura e utilizado nos cursos de Spring Boot.
Instrutor: Rodrigo Ferreira