Énoncé officiel · Module 3 · 50 %

Projet
haute-
disponibilité

Le grand œuvre : concevoir, monter, sécuriser, documenter et démontrer une infrastructure complète à haute disponibilité pour la grande coopérative de Cornucopia.

420-5A4-MT · En équipe de 2 à 3 · plus de 12 machines · Pour votre portfolio
Le scénario

Cent mille visiteurs, zéro excuse pour Cornucopia

Cornucopia est désormais une coopérative régionale majeure avec cent mille visiteurs, des paniers bio livrés quotidiennement et zéro tolérance à la panne. Six semaines, une équipe, plus de 12 machines virtuelles dans chaque poste : concevoir, monter, sécuriser, documenter et démontrer une infrastructure complète à haute disponibilité, qui encaisse la croissance, la panne, et la démonstration devant public. Tout ce que la ferme de Flora et Hazel vous a appris, enfin réuni dans une seule architecture.

Cette fois, l'application est la vôtre : le projet quitte WordPress et le connu. C'est votre pièce de portfolio : celle qu'on montre en entrevue.

Le scénario

Cent mille visiteurs, zéro excuse pour Cornucopia

Le jeu de jardinage en ligne de Cornucopia décolle : un million et demi de joueurs par jour, trois millions aux heures de pointe. Les tournois en temps réel doublent encore la mise, les botnets et les tricheurs s'invitent, puis une vague DDoS de quinze millions de connexions hostiles frappe au moment même où le datacenter d'un concurrent part en flammes et déverse huit millions d'ex-joueurs à ses portes.

Plus de 12 serveurs, une architecture pensée pour encaisser la croissance, l'attaque et la panne : c'est le mandat des semaines 11 à 15.

Et vous avez déjà le sujet idéal : votre jeu multijoueur de la session dernière, CreateJS au navigateur, Node.js et les websockets au serveur, servi dans une page animée en parallax. Il tournait sur un poste de développement; le projet le fait passer à l'infrastructure qui encaisse le monde.

⭐ Pour votre portfolio ⭐

Projet haute disponibilité

50 %
👥 Équipe

Réalisé en équipe de 2 à 3.

📅 Démonstration

Évalué en classe le 15 ou 22 décembre.

🐙 Assignment Git

Invitation Git

La démonstration sur l'ordinateur de chaque étudiant et les fichiers dans Git sont nécessaires à la correction.

420-5A4-MT · Projet Haute Disponibilité
Comment se joue la note

10 + 25 + 15 = 50

10 points

Le plan du projet, approuvé et illustré

25 points

L'infrastructure de haute disponibilité

15 points

L'image Docker des développeurs

Total : 50 points · 50 % de la session. Assignment Git : lien remis en classe. La version une page de cet énoncé détaille chaque critère.

Note : L'énoncé de tout le projet est composé des énoncés de chacun de ces 3 laboratoires.
En cas de conflit entre la version « une page » et celle-ci, la version des diapositives prévaut.

Choix du sujet et des technologies

Vous devez mettre en place, documenter et démontrer la scalabilité horizontale pour une App/site web servie en HTTP avec des données provenant d'une base de données. Vous devez limiter les points de faille au minimum et permettre la haute disponibilité.

🎯 Le sujet
  • À privilégier : un projet de techno web http qui contient de l'asynchrone (websocket ou AJAX), comme votre jeu multijoueur Node.js de la session dernière. On peut aussi choisir le Mini-projet Ajax et son panneau admin Laravel.
  • D'autres sujets approuvés par le professeur sont aussi possibles, incluant certains projets open-source.
  • Vous pouvez vous inspirer des composants que vous avez appris à utiliser, mais il n'est pas permis d'utiliser WordPress parce que c'était l'exemple du cours.
🛠️ Les technologies
  • Le plan : outil de dessin ou de diagramme de votre choix tel que draw.io, Inkscape, Google Slides, Canva, Mermaid, HTML, Excalidraw ou LibreOffice Draw.
  • Partie Docker : des machines virtuelles ou DinD ou VPS comme dans les laboratoires du module 1.
  • Partie Haute-Disponibilité : des machines virtuelles ou VPS comme dans les laboratoires du module 2.

Faites approuver votre choix de sujet par le professeur à la semaine 11.

Obligations : la base de données séparée du service web; la base en haute disponibilité; un serveur de fichiers en haute disponibilité pour les médias téléversés.
420-5A4-MT · Projet Haute Disponibilité
Évaluation

Plan du projet : un exemple de topologie

IPV .56.49 La redondance Le basculement automatique IPV 192.168.56.49 192.168.56.40 HAPROXY-1 🔀 192.168.56.41 HAPROXY-2 🔀 L'équilibrage de charge 192.168.56.30 VARNISH-1 cache web ⚡ 192.168.56.31 VARNISH-2 cache web ⚡ Serveur de fichiers en haute disponibilité pour les médias téléchargés 192.168.56.10 HTTP APACHE 🪶 pages web + App Base de données en haute disponibilité 192.168.56.20 MYSQL 🐬 les données de l'App 🅷🅰 HighAvailability
💥 Sur HTTP et MySQL, dans cet exemple

Pas de redondance ✅ · Pas de basculement automatique ✅ · Pas de sauvegarde et réplication des données

420-5A4-MT · Projet Haute Disponibilité
Évaluation

Plan du projet

10 points

Présenter et faire approuver par le professeur, un plan de votre projet.

Inclure :

Identifier :

⚠️ Un plan sans sa contrepartie de réalisation suffisamment avancée ne sera pas évalué.

Déposer votre plan dans Git /plan/Projet.png.

Utiliser des boîtes, des traits, des légendes, des illustrations iconifiées et des couleurs pour représenter les éléments de votre diagramme. C'est un diagramme technique, mais il doit être intuitif et facile à lire.

Exemple partiel de diagramme (une inspiration seulement, votre diagramme explique bien d'autres choses) : Haute Disponibilité & PMV d'Architecture
420-5A4-MT · Projet Haute Disponibilité
Évaluation

Infrastructure de scalabilité horizontale

25 points
Vous devez mettre en place sur des machines virtuelles, avec ou sans conteneur, votre App
+
Vous devez mettre en place sur le groupe de raspberry pi, votre App 5
Faire un test de charge brutal et identifier le niveau d'usage de chaque machine virtuelle et le temps d'attente moyen après 10 et 60 secondes 1
📐 Diagramme
  • Mettre à jour le diagramme du projet 2
  • Explication des différences dans un diagramme côte à côte en format légal (8.5 x 14 po) orientation paysage .png 2
🎬 Démonstration
  • Démonstration de l'accès à la partie publique de l'App à partir de la machine hôte 1
  • Démonstration de l'ajout d'un item dans votre App à partir de la machine hôte 2
  • Démonstration de la haute-disponibilité : on coupe un serveur au hasard 2
📝 Documentation
  • Produire un guide d'installation de l'infrastructure de votre App avec du texte et des illustrations 4
  • Identification des éléments de sécurité mis en place et des améliorations possibles dans Sécurité.md.
    Citation de vos sources nécessaire. 4
🐙 Déposer dans Git /infrastructure 2 infrastructure/sources
  • Tous les fichiers nécessaires au fonctionnement : Dockerfile, configuration, faux secrets, code, données, scripts, etc.
infrastructure/doc
  • README.md qui présente le guide d'installation de l'infrastructure de votre App
  • Le nouveau diagramme du projet Projet.png
  • Le diagramme des différences Projet-différence.png
infrastructure/audit
  • Le tableau de test de charge Test-charge.md
  • Capture d'écran montrant le test de charge
  • Le rapport Sécurité.md
420-5A4-MT · Projet Haute Disponibilité
Évaluation · Examen pratique individuel

Maîtrise de Docker pour les développeurs

Une seule image Docker, facile à lancer sur n'importe quelle machine, qui emballe l'App et toutes ses dépendances.

🖥️ Machine virtuelle · 192.168.56.2 Correspondance des ports : 80:80
LAMP-WEB-TRANSACTIONNEL 🐳 L A M P

Linux · Apache · MySQL · PHP, Perl, Python

Tous les services de l'App dans la même image Docker.

📦 Docker-volume www mysql

Les données survivent au conteneur.

420-5A4-MT · Projet Haute Disponibilité
Évaluation · Examen pratique individuel

Maîtrise de Docker pour les développeurs

15 points

L'App que vous avez choisie doit être facile à tester pour les développeurs. Malheureusement, cette App existe dans un environnement complexe. Pour aider l'intégration des nouveaux développeurs à votre équipe, vous devez mettre en place une image Docker de votre création permettant de déployer sur n'importe quelle machine votre App et ses dépendances. Le but final est d'accéder à la partie publique de l'App à partir de la machine hôte.

La devbox se remet en équipe (Git + Docker Hub); son examen pratique est individuel.

👥 En équipe

Réaliser en équipe le Dockerfile et les scripts de l'image (configuration, faux secrets, code, données, etc.), par étapes :

  • Les étapes intermédiaires : sans script, avec script, avec flag 1
  • Le Dockerfile final 1
  • La publication finale sur le Docker Hub 1
  • L'environnement : README.md, les 3 scripts construire.sh, demarrer.sh et arreter.sh, les variables 1
⚙️ Configuration
  • En cas de besoin, l'utilisateur de l'image utilisera seulement une configuration via des pages web pour finaliser l'installation
  • Les informations spécifiques de configuration sont des variables dans le fichier de configuration de Docker ou inscrite directement dans les fichiers de configuration des services
🐙 Déposer dans Git /devbox 1 devbox/sources
  • Tous les fichiers nécessaires à la création de l'image Docker : Dockerfile, configuration, faux secrets, code, données, scripts, etc.
devbox/doc
  • README.md qui présente l'environnement et son utilisation
🧪 Examen pratique
  • La devbox se réalise en examen pratique individuel, au laboratoire 10
  • L'IA est permise mais publique : votre console d'IA reste affichée à l'écran pendant l'examen et est partagée après.

Il n'est pas nécessaire que le conteneur de base de données soit différent de celui qui sert les pages web à cette étape. Tous les services doivent être dans la même image Docker. Il n'y a pas de concept de point de faille ou de haute disponibilité dans cette image Docker. Il n'est pas nécessaire d'utiliser Docker Compose.

420-5A4-MT · Projet Haute Disponibilité
Structure attendue

Architecture de remise

Votre dépôt Git doit respecter scrupuleusement l'arborescence suivante :

📁 votre-depot-git/
├── 📄 README.md (présentation globale, noms de l'équipe)
├── 📁 plan/
│ └── 📄 Projet.png
├── 📁 infrastructure/
│ ├── 📁 sources/ (tout le nécessaire au fonctionnement)
│ ├── 📁 doc/ (README.md, Projet.png, Projet-différence.png)
│ └── 📁 audit/ (Test-charge.md, capture d'écran, Sécurité.md)
└── 📁 devbox/
├── 📁 sources/ (Dockerfile, configuration, faux secrets, code, données, scripts)
└── 📁 doc/ (README.md : l'environnement et son utilisation)
Semaine 15

La démonstration finale

🖥️ Plus de 12 machines dans chaque poste

La topologie complète vit en plus de 12 machines virtuelles VirtualBox instanciées dans le poste de chaque membre. C'est la richesse de la topologie qui compte, et elle se rend vivable par la méthode :

  • Une VM maître minimale, clonée en clones liés : plus de 12 machines pour l'espace disque de deux.
  • Démarrage headless : pas d'écran, tout en SSH, comme en production.
  • Le plan d'adressage écrit d'avance : qui porte quelle adresse, quel rôle, quel port. C'est un livrable : la documentation d'infrastructure commence avant la première machine.

La petite entreprise de la semaine 1 est devenue grande. L'infrastructure qui tourne devant le public, elle est résiliente et évolutive : elle est adaptée à votre propre projet. Elle ira dans votre portfolio.

Évaluation

Distribution des points

Les fichiers dans Git et la démonstration sont nécessaires à la correction.

Le plan du projet, approuvé 10

Un diagramme technique intuitif et facile à lire (format légal 8,5 x 14 paysage, .png, boîtes, traits, légendes, icônes, couleurs), présenté et approuvé par le professeur :

  • Toutes les machines, services et noeuds : identification (nom, adresse) (2) et fonction avec protocoles (1)
  • Leurs relations, en traits sur le diagramme (1)
  • Les points de faille prévus et leurs causes probables (2)
  • Les éléments de haute disponibilité, brièvement expliqués (2)
  • L'échelle d'usage des machines (la plus à la moins utilisée) (1) et l'adresse d'accès à l'application (1)

Git : /plan/Projet.png. Un plan sans réalisation suffisamment avancée ne sera pas évalué.

L'infrastructure de haute disponibilité 25

Le coeur du projet : votre application déployée sur la topologie de plus de 12 machines (l'image des développeurs n'est pas permise ici).

  • Topologie complète montée et fonctionnelle, points de faille doublés (5)
  • Guide d'installation de l'infrastructure, texte et illustrations (4)
  • Test de charge BRUTAL : usage de chaque machine et temps d'attente moyen à 10 et 60 secondes (1)
  • Diagramme du projet mis à jour (2) et diagramme des différences côte à côte, format légal paysage (2)
  • Démonstrations depuis l'hôte : partie publique (1), ajout d'un item dans l'application (2), haute disponibilité sous panne (2)
  • Sécurité.md : les mesures en place et les améliorations possibles, sources citées (4)
  • Git /infrastructure : README, fichiers, diagrammes, Test-charge.md, captures (2)

Maîtrise de Docker pour les développeurs 15

Votre application vit dans un environnement complexe. Pour accueillir les nouveaux développeurs de l'équipe : une image Docker de votre création qui déploie l'application et ses dépendances sur n'importe quelle machine.

  • En équipe : étapes intermédiaires, Dockerfile final, environnement (README, scripts, variables), remise Git /devbox et publication sur le Docker Hub (5)
  • Examen pratique individuel au laboratoire (10)

Ici, tout-en-un permis : tous les services dans la même image, pas de haute disponibilité. C'est l'image des développeurs, pas celle de la production.

Examen pratique individuel au laboratoire : IA permise mais publique (console affichée pendant l'examen, partagée après).

Énoncé officiel · Module 3 · 50 %

Les règles
du jeu

Le grand œuvre : concevoir, monter, sécuriser, documenter et démontrer une infrastructure complète à haute disponibilité pour la grande coopérative de Cornucopia.

420-5A4-MT · En équipe de 2 à 3 · plus de 12 machines · Pour votre portfolio
Le matériel

Environnement informatique


Les règles du jeu

Le processus de travail

Les règles du jeu

Remise et Examen pratique

versionnement dockerfile ligne par ligne dans l'ordre de developpement
L'ordre n'est pas l'ordre des lignes (ex: lignes de test qui disparaissent)

La remise

L'examen pratique

⚠️ Note de 0 % si on ne te voit pas travailler sur chaque labo et bien l'expliquer !
Travailler avec l'IA

Utilisation de l'IA

⚠️ Note de 0 % si on ne te voit pas travailler sur chaque labo et bien l'expliquer !

Bonne utilisation

  • Demander des explications sur les concepts du cours.
  • Demander des exemples de scripts similaires.
  • Demander des explications d'exemples typiques.
  • Copier-coller à l'IA des messages d'erreur pour aider à résoudre des problèmes.

Mauvaise utilisation

  • Copier-coller de grandes sections de script dans son travail et tenter de l'utiliser tel quel.

    La bonne méthode : vous pouvez copier une seule ligne de configuration à la fois fournie par une IA, la tester, et faire un commit de chaque ligne.

Signes que tu utilises mal l'IA

À l'examen pratique (devbox) : l'IA est permise mais publique. Votre console d'IA reste affichée à l'écran pendant l'examen et est partagée après.