Skip to content

Module 20 : Projet Final Expert

Objectifs du Module

Ce projet final valide l'ensemble des compétences acquises durant la formation :

  • Concevoir une architecture haute disponibilitĂ©
  • ImplĂ©menter l'infrastructure as code
  • DĂ©ployer une application conteneurisĂ©e
  • Mettre en place monitoring et observabilitĂ©
  • Documenter et prĂ©senter le projet

Durée : 12 heures (projet autonome)

Niveau : Expert


1. Contexte du Projet

Scénario

Vous ĂȘtes ingĂ©nieur DevOps/SRE dans une entreprise qui souhaite migrer son application monolithique vers une architecture microservices cloud-native. Votre mission est de concevoir et implĂ©menter l'infrastructure complĂšte.

Application à Déployer

L'application "ShopApp" comprend :

  • Frontend : React (SPA)
  • API Gateway : Nginx
  • Services Backend :
    • User Service (Node.js)
    • Product Service (Python/FastAPI)
    • Order Service (Go)
  • Bases de donnĂ©es :
    • PostgreSQL (users, orders)
    • MongoDB (products)
    • Redis (cache/sessions)
  • Message Queue : RabbitMQ
graph TB
    subgraph "Load Balancer"
        LB[HAProxy/Nginx]
    end

    subgraph "Frontend"
        FE[React App]
    end

    subgraph "API Gateway"
        GW[Nginx]
    end

    subgraph "Services"
        US[User Service]
        PS[Product Service]
        OS[Order Service]
    end

    subgraph "Data Layer"
        PG[(PostgreSQL)]
        MG[(MongoDB)]
        RD[(Redis)]
        RQ[RabbitMQ]
    end

    LB --> FE
    LB --> GW
    GW --> US
    GW --> PS
    GW --> OS
    US --> PG
    US --> RD
    PS --> MG
    PS --> RD
    OS --> PG
    OS --> RQ

2. Exigences Techniques

Infrastructure (Terraform)

  • [ ] VPC avec subnets publics et privĂ©s
  • [ ] Security groups restrictifs
  • [ ] Cluster Kubernetes (ou VM pour HA)
  • [ ] Load Balancer externe
  • [ ] Stockage persistant pour les BDD
  • [ ] Backend d'Ă©tat Terraform distant

Configuration (Ansible)

  • [ ] Hardening des serveurs
  • [ ] Installation des prĂ©requis
  • [ ] Configuration des services de base
  • [ ] DĂ©ploiement des certificats TLS
  • [ ] Configuration du monitoring

Conteneurisation (Docker/Podman)

  • [ ] Dockerfile optimisĂ© pour chaque service (multi-stage)
  • [ ] Docker Compose pour dĂ©veloppement local
  • [ ] Registry privĂ© pour les images
  • [ ] Scan de sĂ©curitĂ© des images

Orchestration (Kubernetes)

  • [ ] Deployments avec resource limits
  • [ ] Services et Ingress
  • [ ] ConfigMaps et Secrets
  • [ ] PersistentVolumeClaims pour les BDD
  • [ ] Horizontal Pod Autoscaler
  • [ ] Network Policies

Haute Disponibilité

  • [ ] Minimum 2 replicas par service
  • [ ] Base de donnĂ©es en rĂ©plication
  • [ ] Health checks (liveness/readiness)
  • [ ] Pod Disruption Budgets
  • [ ] Anti-affinity rules

Monitoring & Observabilité

  • [ ] Prometheus pour les mĂ©triques
  • [ ] Grafana pour les dashboards
  • [ ] Alertmanager pour les alertes
  • [ ] Logging centralisĂ© (ELK/Loki)
  • [ ] Tracing distribuĂ© (Jaeger)

CI/CD

  • [ ] Pipeline de build des images
  • [ ] Tests automatisĂ©s
  • [ ] DĂ©ploiement GitOps avec ArgoCD
  • [ ] Environnements dev/staging/prod

Sécurité

  • [ ] RBAC Kubernetes
  • [ ] Secrets chiffrĂ©s (Sealed Secrets ou Vault)
  • [ ] TLS sur tous les endpoints
  • [ ] Scan de vulnĂ©rabilitĂ©s
  • [ ] Politique de backup

Documentation

  • [ ] Architecture diagram
  • [ ] Runbook opĂ©rationnel
  • [ ] ProcĂ©dures de disaster recovery
  • [ ] README dĂ©taillĂ©

3. Livrables

3.1 Repository Git

projet-final/
├── README.md
├── docs/
│   ├── architecture.md
│   ├── runbook.md
│   └── disaster-recovery.md
├── infrastructure/
│   ├── terraform/
│   │   ├── environments/
│   │   │   ├── dev/
│   │   │   └── prod/
│   │   └── modules/
│   └── ansible/
│       ├── inventory/
│       ├── roles/
│       └── playbooks/
├── applications/
│   ├── frontend/
│   │   └── Dockerfile
│   ├── user-service/
│   │   └── Dockerfile
│   ├── product-service/
│   │   └── Dockerfile
│   └── order-service/
│       └── Dockerfile
├── kubernetes/
│   ├── base/
│   └── overlays/
│       ├── dev/
│       ├── staging/
│       └── prod/
├── monitoring/
│   ├── prometheus/
│   ├── grafana/
│   └── alertmanager/
└── ci-cd/
    ├── .github/workflows/
    └── argocd/

3.2 Documentation Technique

Architecture (architecture.md)

# Architecture ShopApp

## Vue d'ensemble
[Diagramme d'architecture]

## Composants
- Description de chaque service
- Technologies utilisées
- Ports et protocoles

## Flux de données
- Authentification
- Commande client
- Mise en cache

## Décisions d'architecture
- Pourquoi Kubernetes vs VMs
- Choix de la BDD
- Stratégie de scaling

Runbook (runbook.md)

# Runbook Opérationnel

## Procédures Courantes

### Déploiement d'une nouvelle version
1. Merger la PR sur main
2. Attendre le build CI
3. ArgoCD sync automatique
4. Vérifier les health checks

### Scaling manuel
kubectl scale deployment user-service --replicas=5

### Rollback
kubectl rollout undo deployment/user-service

## Alertes et Réponses

### HighCPUUsage
- **Seuil** : > 80% pendant 5min
- **Impact** : Performance dégradée
- **Action** : Vérifier HPA, augmenter replicas si nécessaire

### DatabaseConnectionErrors
- **Seuil** : > 10 erreurs/min
- **Impact** : Service indisponible
- **Action** : Vérifier connexion BDD, restart du service

Disaster Recovery (disaster-recovery.md)

# Plan de Disaster Recovery

## RTO/RPO
- **RTO** : 1 heure
- **RPO** : 15 minutes

## Scénarios

### Perte d'un Pod
- **Détection** : Automatique (Kubernetes)
- **Récupération** : Automatique (ReplicaSet)
- **Temps** : < 1 minute

### Perte d'un Node
- **Détection** : Probe Kubernetes
- **Récupération** : Reschedule des pods
- **Temps** : < 5 minutes

### Perte de la BDD
- **Détection** : Alerte Prometheus
- **Récupération** : Restore depuis backup
- **Procédure** :
  1. Identifier le dernier backup
  2. Restaurer la BDD
  3. Vérifier l'intégrité
  4. Reconnecter les services

## Backups
- PostgreSQL : pg_dump toutes les 15min vers S3
- MongoDB : mongodump quotidien
- Volumes K8s : Velero

3.3 Présentation

Préparez une présentation de 15-20 minutes couvrant :

  1. Introduction (2 min)

    • Contexte du projet
    • Objectifs
  2. Architecture (5 min)

    • Choix techniques
    • Diagrammes
  3. Démonstration (8 min)

    • DĂ©ploiement d'une nouvelle version
    • Scaling automatique
    • Test de rĂ©silience (kill un pod)
    • Dashboard monitoring
  4. Retour d'expérience (3 min)

    • DifficultĂ©s rencontrĂ©es
    • AmĂ©liorations possibles
  5. Questions (5 min)


4. Grille d'Évaluation

CritĂšre Points Description
Infrastructure 20 Terraform fonctionnel, modulaire
Configuration 15 Ansible idempotent, roles réutilisables
Conteneurs 15 Dockerfile optimisés, multi-stage
Kubernetes 20 Manifests complets, bonnes pratiques
CI/CD 10 Pipeline fonctionnelle, GitOps
Monitoring 10 Dashboards, alertes
Documentation 10 Claire, complĂšte, utile
Total 100

Niveaux

Score Niveau
90-100 Expert confirmé
75-89 Expert
60-74 Avancé
< 60 À amĂ©liorer

5. Ressources

Environnement de Développement

# Option 1 : Minikube (local)
minikube start --cpus=4 --memory=8192 --driver=docker

# Option 2 : Kind (Kubernetes in Docker)
kind create cluster --config kind-config.yaml

# Option 3 : Cloud Provider Free Tier
# - GKE Autopilot (Google)
# - EKS (AWS)
# - AKS (Azure)

Repositories de Référence

  • Microservices Demo : github.com/GoogleCloudPlatform/microservices-demo
  • Kubernetes Examples : github.com/kubernetes/examples
  • Terraform AWS Modules : github.com/terraform-aws-modules

Documentation Officielle


6. Conseils

Approche Recommandée

graph LR
    A[1. Design] --> B[2. Local Dev]
    B --> C[3. IaC]
    C --> D[4. Deploy]
    D --> E[5. Monitor]
    E --> F[6. Document]
  1. Commencez simple

    • Un seul service d'abord
    • Docker Compose en local
    • Puis Kubernetes
  2. Itérez

    • Version minimale fonctionnelle
    • Ajoutez les features progressivement
  3. Testez tĂŽt

    • Health checks dĂšs le dĂ©but
    • Monitoring dĂšs le dĂ©but
  4. Documentez en continu

    • Pas Ă  la fin !
    • Runbook vivant

Erreurs Courantes à Éviter

  • ❌ Commencer par l'infrastructure complexe
  • ❌ Ignorer les health checks
  • ❌ Hardcoder les secrets
  • ❌ Oublier les resource limits
  • ❌ NĂ©gliger les backups
  • ❌ Documentation Ă  la derniĂšre minute

Félicitations !

En complétant ce projet, vous avez démontré une maßtrise complÚte de :

  • L'administration systĂšme Linux avancĂ©e
  • La conteneurisation et l'orchestration
  • L'infrastructure as code
  • Les pratiques DevOps/SRE
  • La haute disponibilitĂ© et la rĂ©silience

Vous ĂȘtes maintenant un IngĂ©nieur Linux Expert !

Prochaines Étapes

  • Certifications : CKA, RHCE, AWS/GCP/Azure
  • SpĂ©cialisation : SRE, Platform Engineering, Security
  • CommunautĂ© : Contributions open source, meetups

Retour au : Programme de la Formation


← Module 19 : Infrastructure as Code Programme →

Retour au Programme