DevOps - ESIEE 2025-2026

Gallina · Wu · Torres


Lancement

Tout lancer en une commande

make site/launch

Lance automatiquement Docker Desktop, le site de documentation Quartz et l’application FOC, chacun dans un onglet terminal separe, puis ouvre le site Quartz dans le navigateur des que le deploiement Cloudflare est termine.

Le deploiement complet prend quelques minutes. Docker Desktop doit demarrer, Minikube initialiser le cluster, les images Docker se construire et les pods Kubernetes passer en etat pret. Une page “Internal Error” peut s’afficher brievement au premier acces au site FOC : elle disparait automatiquement une fois tous les services up.

0 matchs affiches sur FOC ? C’est normal. Le scraper a besoin de quelques minutes pour effectuer son premier cycle de scraping sur OddsPortal. Patientez et les cotes apparaitront automatiquement.

Commandes disponibles

make site/setup    # A executer une seule fois lors du premier lancement
make site/launch   # Lance Docker + le site Quartz + l'application FOC
make site/update   # Resynchronise le contenu et redeploie le site Quartz
make site/check    # Verifie la syntaxe des scripts
make site/clean    # Supprime le repertoire local du site Quartz

Architecture du projet FOC

FOC (First On Cotes) est un agregateur de cotes sportives en temps reel. Il scrape automatiquement OddsPortal toutes les 3 minutes et expose les donnees via une API Flask avec rafraichissement automatique toutes les 10 secondes.

OddsPortal --> Scraper (Selenium) --> MongoDB --> Flask API --> Frontend JS
                    ^                                ^
             (toutes les 3 min)          (rafraichissement auto 10s)

L’application est deployee sur un cluster Kubernetes local (Minikube) avec trois micro-services :

ServiceType KubernetesPortRole
flask-appNodePort5000Interface web et API REST
mongodbClusterIP27017Base de donnees NoSQL
scraperDeployment-Worker de scraping periodique

Stack technique

CoucheTechnologies
BackendPython 3.12, Flask
ScrapingSelenium, Chromium headless
Base de donneesMongoDB 7.0, PyMongo
ConteneurisationDocker
OrchestrationKubernetes, Minikube
CI/CDGitHub Actions
AutomatisationMake, Bash

Labs

Cinq travaux pratiques progressifs couvrant les fondations du DevOps, de l’infrastructure as code jusqu’au CI/CD complet.

Lab 1 — Prise en main

Introduction au DevOps avec une application Node.js simple. Decouverte de l’environnement de travail et premiers deploiements.

Lab 2 — Infrastructure as Code

Automatisation de l’infrastructure avec Ansible, Terraform/OpenTofu et Packer sur AWS :

  • Provisionnement d’instances EC2 avec Ansible et inventaire dynamique par tags AWS
  • Creation d’images VM preconfigureees (AMI) avec Packer
  • Deploiement d’infrastructure reproductible avec OpenTofu (modules EC2, groupes de securite, paires de cles SSH)

Lab 3 — Deploiement d’applications

Quatre approches d’orchestration comparees en profondeur :

  • Ansible — configuration de serveurs, rolling updates avec serial: 1, Nginx comme load balancer
  • Packer + OpenTofu — images VM immuables, Auto Scaling Groups, Application Load Balancer, Instance Refresh
  • Docker + Kubernetes — conteneurisation, deploiement sur cluster local et EKS, strategie RollingUpdate, registre ECR
  • AWS Lambda — deploiement serverless avec API Gateway, mise a jour sans interruption

Lab 4 — Controle de version, Build Systems et Tests

Cycle de developpement DevOps complet :

  • Git — branches, tags, rebase, commits signes GPG, protection de branche GitHub
  • NPM — build system, gestion des dependances (dependencies vs devDependencies), scripts automatises
  • Docker — Dockerfile optimise, images multi-plateforme avec buildx, versions fixes pour la reproductibilite
  • Tests — Jest et SuperTest pour les tests unitaires et d’integration, couverture de code, Test-Driven Development (TDD)
  • OpenTofu — tests d’infrastructure avec tofu test, deploiement + validation + destruction automatique

Lab 5 — CI/CD avec Kubernetes et GitHub Actions

Pipeline CI/CD complet et securise :

  • Integration Continue — workflow GitHub Actions declenche sur chaque push, tests automatises de l’application Node.js
  • Authentification OIDC — credentials dynamiques a courte duree de vie, trois roles IAM distincts (testing, plan, apply)
  • Livraison Continuetofu plan sur Pull Request avec commentaire automatique, tofu apply apres fusion dans main
  • Backend d’etat distant — bucket S3 chiffre + table DynamoDB pour le verrouillage concurrent
  • Strategies de deploiement — Blue/Green, Canary, Feature Toggles, Promotion entre environnements

Projet FOC

La documentation complete du projet est disponible dans la section Projet : architecture detaillee, API reference, schema MongoDB, pipeline CI/CD et instructions de deploiement.


Le site est accessible via l’Explorer sur la gauche de l’interface.