Skip to content

Repository files navigation

Netflix-Clone DevSecOps Pipeline

Production-Grade CI/CD with Security & Monitoring

A comprehensive DevSecOps pipeline for deploying a Netflix-clone application on AWS with integrated security scanning, GitOps, and advanced monitoring.


πŸ—οΈ Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Git Repository                          β”‚
β”‚              (Source Code + Jenkinsfile)                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚      Jenkins CI/CD Pipeline    β”‚
        β”‚  βœ“ Checkout Code               β”‚
        β”‚  βœ“ SAST (SonarQube/Semgrep)    β”‚
        β”‚  βœ“ Secret Scanning             β”‚
        β”‚  βœ“ Dependency Check            β”‚
        β”‚  βœ“ Build & Unit Tests          β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   Docker Build & Security      β”‚
        β”‚  βœ“ Docker Build                β”‚
        β”‚  βœ“ Trivy Scan                  β”‚
        β”‚  βœ“ Grype Scan                  β”‚
        β”‚  βœ“ Push to ECR                 β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   ArgoCD GitOps Deployment     β”‚
        β”‚  βœ“ Auto-Sync from Git          β”‚
        β”‚  βœ“ Kustomize Overlays          β”‚
        β”‚  βœ“ Multi-Environment Support   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   AWS EKS Kubernetes Cluster   β”‚
        β”‚  βœ“ Rolling Updates             β”‚
        β”‚  βœ“ Auto-Scaling (HPA)          β”‚
        β”‚  βœ“ Network Policies            β”‚
        β”‚  βœ“ Pod Security Policies       β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   Monitoring & Observability   β”‚
        β”‚  βœ“ Prometheus Metrics          β”‚
        β”‚  βœ“ Grafana Dashboards          β”‚
        β”‚  βœ“ Alertmanager Notifications  β”‚
        β”‚  βœ“ ELK Stack Logging           β”‚
        β”‚  βœ“ Jaeger Distributed Tracing  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‹ Components

1. Docker - Containerization

  • File: Dockerfile
  • Multi-stage build for optimization
  • Non-root user for security
  • Health checks enabled
  • Layer caching optimized

2. Jenkins - CI/CD Orchestration

  • File: Jenkinsfile
  • Parallel execution of security scans
  • Quality gates (SonarQube)
  • Automated testing
  • Docker image building & scanning
  • ECR push automation
  • GitOps trigger

Key Stages:

Checkout β†’ Code Quality β†’ Build β†’ Security Scanning β†’ 
Docker Build β†’ Image Scanning β†’ Push to ECR β†’ GitOps Deploy β†’ Smoke Tests

3. Security Scanning Tools

  • SonarQube: SAST (Static Application Security Testing)
  • Trivy: Container vulnerability scanning
  • Grype: Software vulnerability scanner
  • Semgrep: Code pattern analysis
  • TruffleHog: Secret detection
  • OWASP Dependency-Check: Dependency vulnerabilities

4. Kubernetes (AWS EKS) - Orchestration

  • File: k8s-deployment.yaml
  • Security Context hardened
  • Resource limits enforced
  • Health checks (liveness, readiness, startup)
  • Horizontal Pod Autoscaler (HPA)
  • Pod Disruption Budget (PDB)
  • Network Policies
  • Rolling Updates

5. ArgoCD - GitOps

  • File: argocd-applicationset.yaml
  • Declarative continuous delivery
  • Multi-environment support
  • Kustomize overlays
  • Auto-sync enabled
  • Self-healing capabilities
  • Slack notifications

6. Prometheus - Metrics Collection

  • File: prometheus-setup.yaml
  • Service monitoring via ServiceMonitor
  • Recording rules for performance
  • Alerting rules with thresholds
  • 15-day data retention
  • Alertmanager integration

Key Metrics:

  • Request rate & latency
  • Error rates
  • Pod restart counters
  • Resource usage (CPU/Memory)
  • Deployment status

7. Grafana - Visualization

  • File: grafana-setup.yaml
  • Pre-built dashboards
  • Real-time monitoring
  • Alert visualization
  • Multi-datasource support
  • HTTPS enabled

πŸš€ Quick Start

Local Testing (Docker Compose)

# 1. Start entire stack
docker-compose up -d

# 2. Access services
echo "Netflix App:    http://localhost:3000"
echo "Jenkins:        http://localhost:8080"
echo "Prometheus:     http://localhost:9090"
echo "Grafana:        http://localhost:3001 (admin/admin)"
echo "Kibana:         http://localhost:5601"
echo "SonarQube:      http://localhost:9000"
echo "Jaeger:         http://localhost:16686"

# 3. View application logs
docker logs netflix-clone

# 4. Run security scans
docker-compose exec app npm run security-check

Production Deployment (AWS)

# 1. Make setup script executable
chmod +x setup-devsecops-pipeline.sh

# 2. Configure AWS credentials
export AWS_REGION="us-east-1"
export AWS_ACCOUNT_ID="123456789"

# 3. Run setup
./setup-devsecops-pipeline.sh

# 4. Verify deployment
kubectl get pods -n production
kubectl port-forward svc/netflix-clone 8080:80 -n production

πŸ”’ Security Features

Container Security

βœ… Non-root user execution
βœ… Read-only root filesystem
βœ… No privilege escalation
βœ… Dropped unnecessary capabilities
βœ… Security scanning on build

Kubernetes Security

βœ… Network Policies (ingress/egress)
βœ… Pod Security Policies
βœ… RBAC (Role-Based Access Control)
βœ… Resource quotas & limits
βœ… Security context hardened

Pipeline Security

βœ… SAST analysis (SonarQube)
βœ… Dependency scanning (OWASP)
βœ… Secret detection (TruffleHog)
βœ… Container scanning (Trivy/Grype)
βœ… Code quality gates enforced

Data Security

βœ… Encrypted ECR repositories
βœ… Secrets management via Kubernetes secrets
βœ… HTTPS for all services
βœ… TLS/SSL certificates (Let's Encrypt)


πŸ“Š Monitoring & Alerting

Pre-configured Dashboards

  1. Netflix-Clone Production: Application metrics
  2. Kubernetes Cluster: Cluster health & resources
  3. Docker Containers: Container performance

Alert Rules

  • High error rate (>5% for 5 minutes)
  • High latency (P95 > 1s)
  • Pod restart storms
  • High memory/CPU usage
  • Pod not ready
  • Deployment replica mismatch

Notification Channels

  • Slack channels (#alerts, #critical-alerts)
  • PagerDuty for critical incidents
  • Email notifications

πŸ”„ GitOps Workflow

Repository Structure

netflix-clone-gitops/
β”œβ”€β”€ k8s/
β”‚   β”œβ”€β”€ base/
β”‚   β”‚   β”œβ”€β”€ deployment.yaml
β”‚   β”‚   β”œβ”€β”€ service.yaml
β”‚   β”‚   └── kustomization.yaml
β”‚   └── overlays/
β”‚       β”œβ”€β”€ production/
β”‚       β”‚   └── kustomization.yaml
β”‚       └── staging/
β”‚           └── kustomization.yaml
└── argocd/
    β”œβ”€β”€ application.yaml
    └── applicationset.yaml

Deployment Process

  1. Code Push: Developer pushes to Git
  2. Jenkins: Runs pipeline, pushes image to ECR
  3. GitOps Repo Update: Jenkins updates image tag in Git
  4. ArgoCD Sync: Detects Git changes, syncs to cluster
  5. Deployment: Rolling update with zero downtime

πŸ“ˆ Performance Optimization

Scaling

  • HPA: Automatically scales 3-10 pods based on CPU/Memory
  • Rolling Updates: Zero downtime deployments
  • Pod Disruption Budget: Maintains minimum availability
  • Node Affinity: Spreads pods across nodes

Caching & Performance

  • Redis caching layer
  • Docker layer caching
  • Prometheus query optimization
  • Grafana dashboard caching

Resource Efficiency

  • CPU: 100m request / 500m limit
  • Memory: 256m request / 512m limit
  • Ephemeral storage quotas
  • Automatic pod eviction policies

πŸ› οΈ Troubleshooting

Deployment Issues

# Check pod status
kubectl describe pod <pod-name> -n production

# View logs
kubectl logs <pod-name> -n production

# Get events
kubectl get events -n production --sort-by='.lastTimestamp'

Monitoring Issues

# Check Prometheus targets
kubectl port-forward svc/prometheus 9090:9090 -n monitoring
# Visit http://localhost:9090/targets

# Check Grafana datasources
kubectl port-forward svc/grafana 3000:3000 -n monitoring
# Visit http://localhost:3000

Jenkins Issues

# Check Jenkins logs
kubectl logs -l app.kubernetes.io/name=jenkins -n jenkins

# Access Jenkins console
kubectl port-forward svc/jenkins 8080:8080 -n jenkins

πŸ“š Key Files Reference

File Purpose
Dockerfile Container image definition
Jenkinsfile CI/CD pipeline configuration
k8s-deployment.yaml Kubernetes deployment manifests
argocd-applicationset.yaml GitOps deployment config
prometheus-setup.yaml Prometheus monitoring setup
grafana-setup.yaml Grafana visualization setup
docker-compose.yml Local development stack
setup-devsecops-pipeline.sh Automated AWS setup script

πŸ” Security Compliance

βœ… OWASP Top 10: Addressed in design
βœ… CIS Kubernetes Benchmarks: Implemented
βœ… NIST Cybersecurity: Aligned
βœ… PCI-DSS: Encryption & audit logging
βœ… HIPAA: Encryption at rest & in transit


πŸ“Š Metrics & Dashboards

Application Metrics

  • Request rate (req/s)
  • Error rate (%)
  • P50/P95/P99 latency
  • Active connections

Infrastructure Metrics

  • CPU usage (%)
  • Memory usage (%)
  • Disk usage (%)
  • Network I/O

Kubernetes Metrics

  • Pod restart count
  • Deployment replicas status
  • HPA scaling events
  • Node resource utilization

🀝 Contributing

  1. Create feature branch
  2. Make changes & test locally
  3. Run security scans
  4. Create PR
  5. Jenkins pipeline runs automatically
  6. After approval, merge triggers production deployment

πŸ“ž Support & Documentation

  • Architecture Docs: /docs/architecture.md
  • API Documentation: /docs/api.md
  • Troubleshooting Guide: /docs/troubleshooting.md
  • Security Guidelines: /docs/security.md

πŸ“ License

Proprietary - Netflix-Clone Project


🎯 Summary

This DevSecOps pipeline provides:

  • βœ… Automated Security: Multiple scanning tools integrated
  • βœ… Continuous Deployment: GitOps-based auto-deployment
  • βœ… Comprehensive Monitoring: Real-time metrics & alerts
  • βœ… High Availability: Auto-scaling & failover
  • βœ… Production-Ready: Battle-tested components
  • βœ… Compliance-Ready: Security best practices

Last Updated: 2025-03-24
Version: 1.0.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages