A comprehensive Python web application demonstrating enterprise-grade DevOps practices with a complete CI/CD pipeline, Infrastructure as Code, GitOps implementation, and comprehensive monitoring.
This project showcases a Solar System visualization web application built with modern DevOps practices, featuring:
| 
 | 
 | 
π± Application Stack
| Technology | Purpose | Version | 
|---|---|---|
| Frontend Structure | Latest | |
| Styling & Animations | Latest | |
| Interactive UI | ES6+ | |
| Backend API | 3.x | |
| Database | Latest | |
| Testing Framework | Latest | 
π DevOps & Infrastructure
π Monitoring & Observability
| Tool | Purpose | 
|---|---|
| Metrics collection and alerting | |
| Visualization dashboards and analytics | |
| π Health Checks | Built-in health checks and structured logging | 
π‘ Tip: Make sure you have the following tools installed and configured before starting:
Follow these steps to get your Solar System DevOps application up and running:
git clone https://github.com/karimzakzouk/graduation-project-devops.git
cd graduation-project-devopsUpdate the Terraform/2-backend.tf file with your S3 bucket details for Terraform remote state storage.
Navigate to the Terraform directory and initialize the deployment:
cd Terraform/
terraform init
terraform apply -auto-approveβ³ This will provision: VPC, EKS cluster, ArgoCD, and the monitoring stack.
After Terraform completes, it will output the command to configure kubectl. Run that command to connect to your new EKS cluster.
The CI/CD pipeline handles this automatically. To deploy manually:
kubectl apply -f argocd/application.yamlποΈ Click to expand project structure
βββ π± Application Code
β   βββ app.py                # Main Python application
β   βββ app_test.py           # Test suites
β   βββ index.html            # Frontend UI
β   βββ Dockerfile            # Container definition
β
βββ βΈοΈ Helm
β   βββ helm/
β       βββ Chart.yaml        # Helm chart metadata
β       βββ values.yaml       # Configuration values
β       βββ templates/        # Kubernetes manifests
β   
β
βββ ποΈ Terraform
β   βββ 0-versions.tf         # Provider versions
β   βββ ...                   # Main infrastructure files
β   βββ modules/
β       βββ vpc/              # VPC module
β       βββ eks/              # EKS cluster module
βββ π Scalability (Karpenter)
β   βββ karpenter/
β       βββ karpenter-resources.yaml    # Auto-scaling configuration
β
βββ π Monitoring & GitOps
β   βββ argocd/
β       βββ monitoring.yml    # Prometheus & Grafana configuration
β       βββ application.yml   # Application dashboards
β
βββ π CI/CD Workflows
β   βββ .github/workflows/
β       βββ main-pipeline.yml # Orchestrator workflow
β       βββ ci.yml            # Test, quality checks & SonarQube
β       βββ docker.yml        # Container build & push
β       βββ terraform.yml     # Infrastructure deployment
β       βββ karpenter.yml     # Auto-scaling provisioner
β       βββ argocd.yml        # GitOps controller setup
β       βββ monitoring.yml    # Observability stack deployment
β       βββ deploy.yml        # Application deployment
βββ π§ backend/
β   βββ main.tf            # Terraform S3 & DynamoDB
β
βββ πΌοΈ Static Assets
    βββ static/               # Planet images & backgrounds
| 
 | 
 | 
 | 
π Detailed Workflow Breakdown
- Orchestrates all sub-workflows (CI, Docker, Terraform, etc.)
- Allows configurable skips for faster development cycles
- Runs unit tests and code coverage
- Enforces quality gates before allowing code to be merged
- Builds multi-architecture container images
- Scans images for vulnerabilities and pushes to multiple registries
- Manages infrastructure provisioning and updates via IaC
- Uses an S3 backend for secure state management
- Manages auto-scaling and resource management
- Manages monitoring stack deployment
- Manages ArgoCD deployment and drift detection
- Manages application deployment
| Git repository serves as the single source of truth for all deployments | ArgoCD continuously monitors Git repo and automatically syncs changes to cluster | Automatically corrects configuration drift to ensure live state matches desired state | Easily revert to previous stable application states with a single command | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
 | 
Contributions are welcome! If you have suggestions for improvement, please open an issue or submit a pull request.
- π΄ Fork the Project
- πΏ Create your Feature Branch
git checkout -b feature/AmazingFeature 
- πΎ Commit your Changes
git commit -m 'Add some AmazingFeature'
- π€ Push to the Branch
git push origin feature/AmazingFeature 
- π Open a Pull Request
