Projeto desenvolvido para demonstrar conhecimentos práticos em Cloud Computing, Infraestrutura como Código (IaC), Containerização, CI/CD e Observabilidade utilizando ferramentas amplamente adotadas em ambientes DevOps modernos.
Este projeto consiste na criação e publicação de uma aplicação web hospedada em uma infraestrutura provisionada na AWS e totalmente automatizada através de pipelines CI/CD.
O ambiente foi construído utilizando Terraform para provisionamento da infraestrutura, Docker para containerização, GitHub Actions para automação de deploy e uma stack completa de observabilidade composta por Prometheus, Grafana, Alertmanager, Node Exporter e cAdvisor.
Além do monitoramento, o projeto conta com integração entre Alertmanager e Discord para envio automático de alertas em tempo real.
- Linux
- AWS
- Terraform
- Terraform Remote State (S3)
- Docker
- GitHub Actions
- GitHub Container Registry (GHCR)
- CI/CD
- Observabilidade
- Prometheus
- Grafana
- Alertmanager
- Node Exporter
- cAdvisor
- Discord Webhooks
- Infraestrutura como Código
- Automação de Deploy
https://cassianomc.github.io/portfolio-devops/
https://github.com/cassianomc/portfolio-devops
Git Push
│
▼
┌──────────────────────────────────┐
│ GitHub │
└───────────────┬──────────────────┘
│
▼
┌──────────────────────────────────┐
│ GitHub Actions │
│ Build + Deploy Pipeline │
└───────────────┬──────────────────┘
│
▼
┌──────────────────────────────────┐
│ GHCR │
│ GitHub Container Registry │
└───────────────┬──────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ AWS EC2 Ubuntu │
│ │
│ Docker │
│ ├── Portfolio │
│ ├── Prometheus │
│ ├── Grafana │
│ ├── Alertmanager │
│ ├── Node Exporter │
│ └── cAdvisor │
└─────────────────────────────────────────────┘
Node Exporter ──┐
│
cAdvisor ───────┼────► Prometheus ─────► Grafana
│
│
└────► Alertmanager ─────► Discord
As imagens abaixo demonstram o funcionamento real da infraestrutura, pipeline CI/CD, containers e stack de observabilidade implementados no projeto.
- AWS EC2
- Terraform
- Terraform Backend S3 (Remote State)
- Docker
- Docker Compose
- GitHub Actions
- GitHub Container Registry (GHCR)
- Prometheus
- Grafana
- Alertmanager
- Node Exporter
- cAdvisor
- Ubuntu Linux
- Git
- GitHub
- HTML5
- CSS3
portfolio-devops/
│
├── .github/
│ └── workflows/
│ └── deploy.yml
│
├── app/
│ └── index.html
│
├── docs/
│ ├── index.html
│ └── images/
│
├── infrastructure/
│ └── terraform/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── backend.tf
│
├── observability/
│ ├── docker-compose.yml
│ ├── prometheus.yml
│ ├── alert.rules.yml
│ │
│ └── alertmanager/
│ └── alertmanager.yml
│
├── Dockerfile
├── README.md
└── .gitignore
Toda a infraestrutura foi provisionada utilizando Terraform.
- AWS EC2
- Security Group
- Regras SSH (22)
- Regras HTTP (80)
- Regras HTTPS (443)
- Regras Grafana (3000)
- Key Pair
- Backend Remoto S3
terraform init
terraform validate
terraform plan
terraform applyO estado do Terraform é armazenado remotamente em um bucket Amazon S3, permitindo persistência, segurança e gerenciamento centralizado da infraestrutura.
A aplicação foi empacotada utilizando Docker e executada em uma instância EC2.
- Aplicação Web
- Prometheus
- Grafana
- Alertmanager
- Node Exporter
- cAdvisor
- Portabilidade
- Padronização
- Escalabilidade
- Facilidade de Deploy
- Reprodutibilidade
A cada alteração enviada para a branch principal:
git add .
git commit -m "Atualização"
git push origin mainA pipeline executa automaticamente:
- Checkout do código
- Build da imagem Docker
- Publicação da imagem no GHCR
- Conexão SSH com a EC2
- Pull da nova imagem
- Atualização do container
- Deploy automático
Foi implementada uma stack completa para monitoramento da infraestrutura e containers.
Responsável pela coleta das métricas da infraestrutura e dos containers.
Responsável pela visualização e análise das métricas coletadas.
Responsável pela coleta de métricas do sistema operacional Linux.
Responsável pela coleta de métricas dos containers Docker.
Responsável pelo gerenciamento e roteamento dos alertas gerados pelo Prometheus.
Envio automático de alertas através de Webhooks do Discord.
- Target indisponível
- Alta utilização de memória
- Alta utilização de disco
- Alertas customizados de teste
Boas práticas aplicadas no projeto:
- 22 (SSH)
- 80 (HTTP)
- 443 (HTTPS)
- 3000 (Grafana)
Os serviços de observabilidade permanecem restritos à rede Docker interna:
- 9090 (Prometheus)
- 9093 (Alertmanager)
- 9100 (Node Exporter)
- 8080 (cAdvisor)
✅ Linux
✅ AWS EC2
✅ Terraform
✅ Terraform Remote State (S3)
✅ Docker
✅ Docker Compose
✅ Git
✅ GitHub
✅ GitHub Actions
✅ GitHub Container Registry (GHCR)
✅ SSH
✅ Infraestrutura como Código (IaC)
✅ CI/CD
✅ Deploy Automatizado
✅ Cloud Computing
✅ Prometheus
✅ Grafana
✅ Alertmanager
✅ Node Exporter
✅ cAdvisor
✅ Observabilidade
✅ Monitoramento de Infraestrutura
✅ Monitoramento de Containers
✅ Troubleshooting
- Aplicação Web
- Docker
- AWS EC2
- Terraform
- Terraform Remote State (S3)
- GitHub Actions
- GHCR
- Deploy Automático
- Prometheus
- Grafana
- Node Exporter
- cAdvisor
- Alertmanager
- Alertmanager + Discord
- HTTPS com Let's Encrypt
- Domínio personalizado
- Dashboard dedicado para containers
- Loki
- Centralização de Logs
- Kubernetes
- GitOps
DevOps | Cloud | Observabilidade | SRE
- Linux
- AWS
- Terraform
- Docker
- GitHub Actions
- Prometheus
- Grafana
- Observabilidade
- Kubernetes
- GitOps
- Advanced Terraform
- Observabilidade
⭐ Este projeto faz parte da minha jornada de evolução profissional na área de DevOps, Cloud Computing, SRE e Observabilidade.







