La séparation
Acte 5 : la base de données et le web, chacun sa machine. Et pour la première fois, on mesure scientifiquement.
420-5A4-MT · Module 2 · Scalabilité horizontaleDix mille visiteurs en vue
Le site de la petite entreprise est emballé, composé, sauvegardé. Mais la croissance ne s'arrête pas : dix mille visiteurs pointent à l'horizon, et une seule machine, même grosse, ne suffira plus. Le module 2 commence par le premier geste horizontal du métier : séparer les services. Et il apporte l'instrument qui manquait : le test de charge, pour que chaque progrès soit prouvé par des chiffres.
- Objectif du jour : comprendre pourquoi on sépare, et comment on mesure.
Grandir en largeur commence par découper
Sur une machine unique, le web et la base de données se disputent les mêmes ressources : quand MySQL avale la mémoire, Apache suffoque, et inversement. La séparation des services donne à chacun sa machine, donc son propre oxygène.
Gourmand en processeur : il cuisine les pages PHP. Sans état, il pourra un jour se multiplier.
Gourmande en mémoire et en disque : elle garde les données. Avec état, elle restera unique encore longtemps.
Le prix à payer : chaque requête vers la base traverse maintenant le réseau. On perd quelques millisecondes de latence, on gagne deux machines qui respirent.
La base de données distante
Trois réglages transforment un MySQL local en serveur de base de données d'équipe :
Et le pare-feu suit le principe du moindre privilège : le port 3306 de mysql10 n'est ouvert que pour http20, jamais pour le monde.
Le test de charge avec JMeter
Un test de charge simule des dizaines de visiteurs simultanés et mesure comment le montage encaisse. Dans JMeter, trois réglages font tout :
- Number of Threads : le nombre d'usagers simulés.
- Ramp-Up Period : en combien de secondes ils arrivent.
- Loop Count (ou Forever) : combien de fois chacun recharge la page.
On y ajoute une requête HTTP vers la page d'accueil et une vue View Results in Table : c'est elle qui donne le chiffre roi du cours, le temps moyen de réponse.
Lire la souffrance d'un serveur avec top
- La valeur id est le souffle restant du serveur : proche de 100, il s'ennuie; proche de 0, il suffoque.
- Le protocole du cours : une capture de top en SSH sur toutes les instances actives après environ 10 secondes de test, une autre après environ 60 secondes.
- Deux photos, car le début et le régime de croisière racontent deux histoires différentes.
La méthode scientifique du module
- Mesurer avant : le montage actuel, sous test de charge BRUTAL.
- Changer une seule chose : séparer, puis plus tard mettre en cache, puis balancer.
- Mesurer après : même test, mêmes captures, même tableau.
Le tableau des performances de l'énoncé (valeur id par instance, temps moyen JMeter) est le journal de bord de cette méthode. À la fin du module, il racontera à lui seul toute l'histoire de la croissance : c'est votre preuve, et votre plus bel argument d'entrevue.
Avant de passer au laboratoire
- Séparer la base du web : chacun sa machine, chacun ses ressources.
- La base distante : bind-address, utilisateur distant, DB_HOST, pare-feu au strict nécessaire.
- JMeter simule les visiteurs; top montre la souffrance; le tableau garde la preuve.
Au laboratoire : le montage tout-en-un d'abord, mesuré. Puis la séparation, mesurée. Deux architectures, deux lignes au tableau, et votre première conclusion d'architecte appuyée par des chiffres.
Version de départ · ce diaporama va s'enrichir