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 portfolioCent 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.
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.
Projet haute disponibilité
50 %Réalisé en équipe de 2 à 3.
Évalué en classe le 15 ou 22 décembre.
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é10 + 25 + 15 = 50
Le plan du projet, approuvé et illustré
L'infrastructure de haute disponibilité
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é.
- À 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.
- 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.
Plan du projet : un exemple de topologie
Pas de redondance ✅ · Pas de basculement automatique ✅ · Pas de sauvegarde et réplication des données ❌
Plan du projet
10 pointsPrésenter et faire approuver par le professeur, un plan de votre projet.
Inclure :
- Une illustration de l'ensemble des machines virtuelles/services/nodes en format légal (8.5 x 14 po) orientation paysage .png 1
- Leur identification (nom et IP quand disponible) 1
- Leur fonction (rôle, brève description et identification des protocoles utilisés) 1
- Leur relation (ligne sur le diagramme) 1
Identifier :
- Les points de faille (single point of failure) prévus et quelques causes les plus probables pour chacuns 2
- Les éléments permettant la haute-disponibilité et expliquer pourquoi brièvement 2
- L'échelle des machines virtuelles les plus utilisées vers les moins utilisées prévues 1 ex. : si il y a 5 machines, 5 est le plus utilisé, 1 est le moins utilisé
- L'IP utilisée pour accéder à l'App 1
⚠️ 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.
Infrastructure de scalabilité horizontale
25 points- Il n'est pas permis d'utiliser l'image Docker des développeurs (la partie devbox, présentée plus loin).
- Tous les fichiers nécessaires au fonctionnement : Dockerfile, configuration, faux secrets, code, données, scripts, etc.
- 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
- Le tableau de test de charge Test-charge.md
- Capture d'écran montrant le test de charge
- Le rapport Sécurité.md
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.
Linux · Apache · MySQL · PHP, Perl, Python
Tous les services de l'App dans la même image Docker.
Les données survivent au conteneur.
Maîtrise de Docker pour les développeurs
15 pointsL'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.
- Tous les fichiers nécessaires à la création de l'image Docker : Dockerfile, configuration, faux secrets, code, données, scripts, etc.
- README.md qui présente l'environnement et son utilisation
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éArchitecture de remise
Votre dépôt Git doit respecter scrupuleusement l'arborescence suivante :
- Les 3 dossiers plan/, infrastructure/ et devbox/ correspondent aux étapes du projet.
- Dans devbox/ et infrastructure/, on sépare sources/ (ce qui fait fonctionner), doc/ (ce qui explique) et audit/ (ce qui prouve).
La démonstration finale
- Sur l'ordinateur de chaque étudiant : l'infrastructure complète répond, encaisse le test de charge, et survit à la panne qu'on provoque devant public.
- Chaque membre peut expliquer chaque composant : l'IA a pu aider partiellement mais vous pouvez expliquer et modifier chaque ligne sur demande.
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.
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).
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 portfolioEnvironnement informatique
- Toutes les activités se réalisent avec votre propre ordinateur Linux : Kubuntu 24.04 ou Debian 12 avec KDE.
- Les outils suivants doivent être installés : un navigateur (Chrome, Brave ou Firefox), Konsole et Dolphin.
- Chaque étudiante dispose d'un compte Linode (ou OVH ou Hetzner) en règle pour le déploiement.
- Le noyau Linux 6.17 doit être en markhold. C'est le noyau 6.14 qui est obligatoire pour le projet (jusqu'à indication contraire) et la commande de mise à jour (
sudo apt update && sudo apt upgrade) doit passer sans erreur ni forcer l'installation du nouveau noyau.
- La VM de référence : UbuntuServerAlpha, clonée en DockerAlpha (2 Go de mémoire, 12 Go de disque).
- Clonage permis pour sauver du temps : nouvelle adresse MAC, nouveau nom d'hôte, nouvelle adresse IP.
Le processus de travail
- Le travail se réalise en laboratoire présentiel. Le laboratoire sert exclusivement aux activités du cours (pas d'autres devoirs ou activités pendant ces séances). Toute autre activité doit se faire à l'extérieur du local.
- La majorité du laboratoire se réalise dans la séance de 4h, environ 80% du travail.
- Si tu es bloqué(e) ou en difficulté, tu dois demander de l'aide PENDANT la séance du bon laboratoire.
- Tu finalises ensuite ta remise AVANT le labo suivant.
- Chaque étudiant remet une solution originale, différente de celles des autres étudiants, qu'il maîtrise.
- Utilisation de l'IA en chatbot web est permise mais l'étudiant doit rédiger ses propres scripts.
Remise et Examen pratique
La remise
- Remise en équipe, incrémentale, d'une solution originale (différente des autres équipes).
- La devbox : Dockerfile et scripts en équipe, publiés sur le Docker Hub (5); examen pratique individuel (10).
- L'examen pratique est obligatoire pour recevoir une note.
L'examen pratique
- La partie devbox EST l'examen pratique : individuelle, réalisée au laboratoire.
- L'IA est permise mais publique : la console d'IA reste affichée à l'écran pendant l'examen et est partagée après.
- Les instances sont fonctionnelles AVANT l'examen pratique.
- Chaque ligne devra pouvoir être expliquée sur demande.
- Des modifications seront demandées au moment de l'examen pratique.
Utilisation de l'IA
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
- Ne pas participer au laboratoire ou faire autre chose pendant le labo.
- Absences aux laboratoires et vouloir faire les travaux à la maison.
- Refus ou incapacité de subir l'examen pratique.
À 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.