A production-grade Todo application showcasing complete DevOps automation — including CI/CD pipelines, monitoring, logging, and GitOps-based deployments using AWS EKS and Kubernetes.
- Project Links
- Technologies Used
- AWS Networking, Security, Resource and Service Architecture
- Grafana Monitoring Dashboard
- Kibana Logging with ELK Stack
- Argo CD – App of Apps Pattern Deployment
- Alert Manager & Slack
- GitHub Actions Workflow Architecture
- Cloud Provider: AWS (EKS, EC2, S3, IAM, VPC, RDS, ECR, Secrets Manager, ELB, Route 53)
- Containerization & Orchestration: Docker, Kubernetes, Helm
- Monitoring & Logging: Prometheus, Grafana, Alertmanager, ELK (Elasticsearch, Logstash, Kibana)
- CI/CD & GitOps: GitHub Actions, Argo CD, Trivy
- IaC & Configuration Management: Terraform, Ansible
- Notifications: Slack Webhooks
This dashboard monitors backend performance and system metrics in real time.
- Process Uptime: E.g., 18.8 minutes
- Total Requests: E.g., 5020
- Error Rate: E.g., 38.7%
- Average Request Duration: E.g., 11.3 ms
- Requests in Progress: Ongoing requests count
Line chart showing requests per endpoint (/api/todos
, /api/todo/2
, etc.)
Donut chart of response status codes (200, 404, etc.)
p50, p75, p90, p95, p99 latency metrics
- CPU Usage: e.g., 35.4%
- Memory Usage: Resident & virtual memory
- Open File Descriptors: Tracks system limits
Kibana is used for log aggregation and querying with the ELK stack on AWS EKS.
- Live Log Streaming during deployments
- Custom Queries, e.g.:
status:500
correlation_id: "1f4c08aa-f7b8-429c-a115-a1cb469dbdac"
message: message
Figure 1: Filter logs with HTTP status code
Figure 2: Filter logs with correlation ID
Uses Argo CD with the App of Apps pattern to manage deployments on AWS EKS.
- Project:
default
- Path:
envs/dev
- Repo:
todo-manifests
- Purpose: Manage and deploy multiple child apps
-
todo-cozy
- Path:
charts/application
- Fullstack app (frontend/backend)
- Status: ✅ Healthy / Synced
- Path:
-
logging
- Path:
charts/logging
- Fluent Bit, Elasticsearch, Kibana
- Status: 🔄 Progressing
- Path:
-
monitoring
- Path:
charts/monitoring
- Grafana & alert rules
- Status: ✅ Healthy / Synced
- Path:
- Centralized environment management
- Scalable and extensible
- GitOps compatible
Alertmanager is configured to route critical alerts to a Slack channel for real-time incident response.
- Alert Source: Prometheus rules defined in the
monitoring
Helm chart - Receiver: Slack Webhook URL
These rules proactively monitor the backend API and are configured under the monitoring
chart.
- Fires when the app is unreachable for 1 minute.
- Severity:
critical
- Triggers when CPU usage exceeds 60% for 2 minutes.
- Severity:
warning
- Alerts if 60% or more requests result in 4xx/5xx errors in the past 5 minutes.
- Severity:
critical
High CPU usage > 60% alert
This diagram illustrates the CI/CD pipeline using GitHub Actions, Docker, AWS ECR, Trivy, and Argo CD.
- Developer pushes code to the Frontend or Backend repositories.
- GitHub Actions gets triggered:
- 🔔 Send Slack notification on CI start
- Run Unit Tests and Linting
- Tag Git version (semantic versioning)
- Build Docker image
- Push image to AWS ECR
- Run Trivy vulnerability scan on local system and Docker image
- Print vulnerability reports
- 🔔 Send Slack notification on CI results
- Argo CD Image Updater watches the ECR image registry:
- Detects new image tags
- Commits updated tag to the GitOps manifest repo
- Argo CD syncs and deploys to AWS EKS