← Ă©volutif.projet.autos ÉnoncĂ© officiel (diaporama)

Laboratoires
Application distribuée

ÉnoncĂ© officiel : quatre laboratoires et une dĂ©monstration pour faire passer le site de la petite entreprise du simple serveur Ă  la grappe qui ne tombe jamais.

25 % de la session Équipe de 4 Module 2 Dix mille visiteurs Laboratoires semaines 6 Ă  9 DĂ©monstration semaine 10 420-5A4-MT
Le scénario

La petite entreprise devient grande

Le site de Cornucopia a bien rĂ©sistĂ© au Module 1 : conteneurisĂ©, composĂ©, essaimĂ©, sauvegardĂ©. Mais l'expansion rĂ©gionale bat son plein : dix mille visiteurs et des milliers de paniers personnalisĂ©s pointent Ă  l'horizon, et une seule machine ne suffit plus. Flora et Hazel doivent grandir en largeur : sĂ©parer le web et la base de donnĂ©es, mettre en cache Varnish, balancer avec HAProxy, doubler les points de faille avec des IP virtuelles, et prouver chaque Ă©tage avec un vrai test de charge. À la fin, l'infrastructure tournera sur du matĂ©riel qu'on peut toucher.

Ces laboratoires reprennent le trajet historique des grandes infrastructures web : chaque partie ajoute un étage, et chaque étage se mesure.

Votre mission

Un étage à la fois, chiffres à l'appui

1

WordPress et MySQL sur une seule instance

➜
2

1 service = 1 instance

➜
3

Cache Varnish en avant du HTTP

➜
4

Balancement HAproxy, deux Varnish

➜
5

Heartbeat et IP virtuelle : haute disponibilité

➜
6

Installation sur matériel réel

À chaque Ă©tage, un test de charge BRUTAL avec JMeter documente ce que le montage encaisse : les chiffres racontent la croissance.

Nouveau cette année

Vos instances, votre choix d'infrastructure

Chaque serveur de ces laboratoires est une instance. Comme au laboratoire de l'essaim du module 1, vous choisissez le substrat qui la fournit, au lieu que VirtualBox soit imposé :

Machines virtuelles VirtualBox

La voie de référence : chaque instance est un clone de la machine de base UbuntuServerAlpha (Ubuntu Server, 1 Go de mémoire vive, 12 Go de disque). Hors ligne, gratuit, et le plan d'adressage historique s'applique tel quel.

Conteneurs DinD

Chaque instance est un conteneur sur votre machine : lĂ©ger, rapide, gratuit et hors ligne. Vos noeuds vivent dans un rĂ©seau Docker que vous adressez vous-mĂȘmes. RecommandĂ© si votre poste manque de mĂ©moire vive.

VPS infonuagiques

Chaque instance est un vrai serveur louĂ© Ă  l'heure (Linode), dans la mĂȘme rĂ©gion, pare-feu et clĂ©s SSH obligatoires. Le plus authentique : vraies machines, vrai Internet, vraie facture (quelques cents l'heure).

Option VPS : des instances qui dorment coĂ»tent des sous. « Conserver ses instances » signifie alors : ĂȘtre capable de les recrĂ©er et de les restaurer en quelques minutes par script et sauvegardes (vos rĂ©flexes du module 1). À la dĂ©monstration, vous devez pouvoir relever l'ensemble complet rapidement, devant tĂ©moin.

La convention

Noms d'hĂŽtes et plan d'adressage

Chaque instance porte un nom d'hĂŽte de la forme SERVICE_PRINCIPAL + 3_DERNIERS_CHIFFRES_DE_L_IP (exemples : http20, mysql10, varnish30).

RÎle de l'instance VirtualBox (référence) DinD ou VPS
Tout-en-un (partie 1)192.168.56.2Reprenez les mĂȘmes derniers chiffres dans votre propre sous-rĂ©seau, et documentez le tout dans votre plan d'adressage : c'est un livrable.
MySQL192.168.56.10 · mysql10
HTTP (apache2)192.168.56.20 · http20
Varnish192.168.56.30 · varnish30
Varnish no 2192.168.56.31 · varnish31
HAproxy192.168.56.40 · haproxy40
HAproxy no 2192.168.56.41 · haproxy41
IP virtuelle de la grappe192.168.56.49
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

Structure attendue

Architecture de remise

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

📁 votre-depot-git/
├── 📄 README.md
├── 📁 labo1/
│ ├── 📄 (fichiers de config)
│ └── 📄 README.md (guide)
├── 📁 labo2/
│ ├── 📄 (fichiers de config)
│ └── 📄 README.md (guide)
├── 📁 labo3/
│ ├── 📄 (fichiers de config)
│ └── 📄 README.md (guide)
└── 📁 labo4/
├── 📄 (fichiers de config)
└── 📄 README.md (guide)
Laboratoire 1 · Semaine 6

WordPress et MySQL : une instance, puis deux

5 points Git : /votre-nom/laboratoire1/

Partie 1 : tout sur une seule instance. Mettez en place, en fonction du matériel de cours, une instance unique qui héberge les deux services principaux :

Partie 2 : 1 service = 1 instance. Reconstruisez l'ensemble avec chaque service principal sur une instance distincte (mysql10, http20), selon la convention d'adressage.

Mesures (pour chaque partie) : test de charge BRUTAL avec JMeter :

BarÚme : guide d'installation (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

Minimum 2 commits pertinents en classe durant la semaine 6; le reste avant le cours de la semaine 7. Ce laboratoire doit ĂȘtre entiĂšrement terminĂ© pour le dĂ©but de la semaine 7.

Laboratoire 2 · Semaine 7

Varnish : la cache en avant

5 points Git : /votre-nom/laboratoire2/

Ajoutez Ă  votre ensemble d'instances existant, avec les mĂȘmes caractĂ©ristiques :

Mesures : test de charge BRUTAL avec JMeter, captures top Ă  10 et 60 secondes (performances_partie_3_10secondes.png, performances_partie_3_60secondes.png), tableau rempli (id par instance, temps moyen JMeter).

BarÚme : guide d'installation (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

Minimum 2 commits pertinents en classe durant la semaine 7; le reste avant le cours de la semaine 8. Ce laboratoire doit ĂȘtre entiĂšrement terminĂ© pour le dĂ©but de la semaine 8.

Laboratoire 3 · Semaine 8

HAproxy et Heartbeat : balancer, puis ne jamais tomber

10 points Git : /votre-nom/laboratoire3/

Partie HAproxy. Ajoutez Ă  votre ensemble existant :

Partie Heartbeat. Puis :

Mesures : pour chaque partie, test de charge BRUTAL, captures top Ă  10 et 60 secondes (parties 4 et 5), tableau rempli.

BarÚme : guide d'installation (4), fichiers de configuration (2), tableau rempli (2), captures d'écran (2).

Minimum 2 commits pertinents en classe durant la semaine 8; le reste avant le cours de la semaine 9. Ce laboratoire doit ĂȘtre entiĂšrement terminĂ© pour le dĂ©but de la semaine 9. Note selon le substrat : l'IP virtuelle se configure diffĂ©remment en VirtualBox (rĂ©seau hĂŽte), en DinD (rĂ©seau Docker) et en VPS (IP partagĂ©e du fournisseur); le coup de main par substrat est donnĂ© en classe.

Laboratoire 4 · Semaine 9 · En équipe

Installation sur matériel réel

5 points Git : /laboratoire4/

BarÚme : guide d'installation de l'équipe (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

La démonstration par l'affichage de votre WordPress dans un navigateur est nécessaire pour obtenir des points à cette étape. Des commits dans le nouveau guide par chaque membre sont nécessaires : si les commits d'un participant ne sont pas significatifs, il n'obtient pas de points. Minimum 4 commits pertinents en classe durant la semaine 9 (au moins 1 par étudiant); le reste avant le cours de la semaine 10.

Semaine 10

La démonstration

En classe, Ă  la semaine 10 :

Rappel : sans démonstration conforme, le laboratoire n'est pas évalué. L'épreuve du HAproxy maßtre éteint sous charge sera rejouée devant tout le monde : c'est le moment de gloire de votre grappe.

La grille

Récapitulatif des points

Laboratoire Guide d'installation Fichiers de configuration Tableau rempli Captures d'écran Total
1 · WordPress et MySQL21115
2 · Varnish21115
3 · HAproxy et Heartbeat422210
4 · Installation sur matériel21115

Total : 25 points · 25 % de la session

Le livrable chiffré

Le tableau des performances Ă  remplir

Pour chaque partie, notez la valeur id (processeur inactif) donnée par top pour chaque instance active, et le temps moyen de réponse indiqué par JMeter. Une copie de ce tableau, remplie, par étudiant, en .PDF dans Git.

Partie Instances actives id par instance (10 s) id par instance (60 s) Temps moyen JMeter
1 · Tout-en-unà remplirà remplirà remplirà remplir
2 · 1 service = 1 instanceà remplirà remplirà remplirà remplir
3 · Varnishà remplirà remplirà remplirà remplir
4 · HAproxyà remplirà remplirà remplirà remplir
5 · Heartbeatà remplirà remplirà remplirà remplir
6 · Matérielà remplirà remplirà remplirà remplir

La question qui vaut de l'or, à discuter dans votre README : d'un étage à l'autre, qu'est-ce qui s'est amélioré, et qu'est-ce que ça a coûté ?