{"id":24750863,"url":"https://github.com/matheuslfavaretto/challenge_devops-2","last_synced_at":"2026-04-07T07:02:48.100Z","repository":{"id":170069084,"uuid":"646112393","full_name":"MatheuslFavaretto/Challenge_DevOps-2","owner":"MatheuslFavaretto","description":" Segundo Challenge de DevOps Alura ","archived":false,"fork":false,"pushed_at":"2025-08-10T00:43:56.000Z","size":254,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-03T12:27:06.201Z","etag":null,"topics":["ansible","devops","jenkins","terraform","vitrinedev"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MatheuslFavaretto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-27T10:23:54.000Z","updated_at":"2023-06-18T22:23:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"b24cd4e4-7604-4a81-82dc-0f7837c25de1","html_url":"https://github.com/MatheuslFavaretto/Challenge_DevOps-2","commit_stats":null,"previous_names":["matheuslfavaretto/challenge_devops-2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MatheuslFavaretto/Challenge_DevOps-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheuslFavaretto%2FChallenge_DevOps-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheuslFavaretto%2FChallenge_DevOps-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheuslFavaretto%2FChallenge_DevOps-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheuslFavaretto%2FChallenge_DevOps-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MatheuslFavaretto","download_url":"https://codeload.github.com/MatheuslFavaretto/Challenge_DevOps-2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatheuslFavaretto%2FChallenge_DevOps-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31503394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","devops","jenkins","terraform","vitrinedev"],"created_at":"2025-01-28T09:09:37.455Z","updated_at":"2026-04-07T07:02:48.080Z","avatar_url":"https://github.com/MatheuslFavaretto.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 💻 Sobre o projeto\n\nFazer o deploy de uma aplicação através de uma maquina virtual.\n\nPara 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.\n\n| :placard: Vitrine.Dev |     |\n| -------------  | --- |\n| :sparkles: Nome        | **Challenge DevOps**\n| :label: Tecnologias | Java, Terraform, Jenkins, AWS, Docker, Ansible e Slack \n| :rocket: URL         |\n| :fire: Desafio     | [Challenge DevOps 2](https://www.alura.com.br/challenges/devops-2)\n\n\u003c!-- Inserir imagem com a #vitrinedev ao final do link --\u003e\n![Simbolo do infinito com processos DevOps](https://img.mandic.com.br/2018/06/Devops-o-que-e-DevOps-significado.png?rel=outbound#vitrinedev#vitrinedev)\n\n## 📃 Detalhes do projeto\n\n-   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.\n\n    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.\n\n-   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.\n\n\n## ⚙️ Funcionalidades\n\n- [x] Semana 1 Familiarizando com a aplicação, criando infra aws com terraform e testando a applicação;\n- [x] Semana 2 Rotina CI/CD com Jenkins;\n- [x] Semana 3/4 Monitoramento e SRE do sistema em produção;\n\n\n### Semana 1 IaC\n\nServiços feitos da AWS criados pelo Terraform:\n\n-   Utilizado modulos remotos para crair o ambiente da applicação;\n-   Ambiente Criados DEV e PROD;\n-   Utilizaer um Docker para o DB;\n\n\n### Semana 2 CI/CD\n\n-   Criado Pipeline de CI/CD com Jenkins;  \n-   Realizado create e push da imagem DB_mysql para o DockerHub\n-   Realizar rotina de testes já presentes na API;\n\n\n### Semana 3 e 4 Monitoramento e SRE  \n\n-   Utilizei o Prometheus para coletar métricas;\n-   Utilizei Grafana para visualizar métricas coletadas;\n-   Utilizei o docker-compose para subir o Prometheus eo Grafana;\n-   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;\n\n\n## Jenkins CI/CD:\n\n![image](https://user-images.githubusercontent.com/116848225/242871769-644e6ba8-a3a3-49bd-8549-6063d3d5789c.png)\n\n## Grafana Dashboard:\n\n![image](https://user-images.githubusercontent.com/116848225/242857039-e6f87c7c-1d98-4da2-8031-74ff3bfc8d0b.png)\n\n## Prometheus target:\n\n![image](https://user-images.githubusercontent.com/116848225/242857282-e06f777d-a376-4fad-a831-bf18b79c2b11.png)\n\n## Slack:\n![image](https://user-images.githubusercontent.com/116848225/242860021-e888be85-3ac8-48c1-af8f-7954d16805ef.png)\n\n \n-----\n\n## 💻 Sobre a API\n\nVoll.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.\n\nEnquanto um time de desenvolvimento será responsável pelo aplicativo mobile, o nosso será responsável pelo desenvolvimento da API Rest desse projeto.\n\n-----\n\n## ⚙️ Funcionalidades\n\n- [x] CRUD de médicos;\n- [x] CRUD de pacientes;\n- [x] Agendamento de consultas;\n- [x] Cancelamento de consultas.\n\n-----\n\n## 🎨 Layout\n\nO layout da aplicação mobile está disponível neste link: [Figma](https://www.figma.com/file/N4CgpJqsg7gjbKuDmra3EV/Voll.med)\n\n-----\n\n## 📄 Documentação\n\nA documentação das funcionalidades da aplicação pode ser acessada neste link: [Trello](https://trello.com/b/O0lGCsKb/api-voll-med)\n\n-----\n\n## 🛠 Tecnologias\n\nAs seguintes tecnologias foram utilizadas no desenvolvimento da API Rest do projeto:\n\n- **[Java 17](https://www.oracle.com/java)**\n- **[Spring Boot 3](https://spring.io/projects/spring-boot)**\n- **[Maven](https://maven.apache.org)**\n- **[MySQL](https://www.mysql.com)**\n- **[Hibernate](https://hibernate.org)**\n- **[Flyway](https://flywaydb.org)**\n- **[Lombok](https://projectlombok.org)**\n\n-----\n\n## 📝 Licença\n\nAPI desenvolvido por [Alura](https://www.alura.com.br) e utilizado nos cursos de Spring Boot.\n\nInstrutor: [Rodrigo Ferreira](https://cursos.alura.com.br/user/rodrigo-ferreira)\n\n-----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheuslfavaretto%2Fchallenge_devops-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatheuslfavaretto%2Fchallenge_devops-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheuslfavaretto%2Fchallenge_devops-2/lists"}