Semaine 6 · Diaporama de notions

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é horizontale
Où en est l'histoire

Dix 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.

Notion 1

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.

Le web (http20)

Gourmand en processeur : il cuisine les pages PHP. Sans état, il pourra un jour se multiplier.

La base (mysql10)

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.

Notion 2

La base de données distante

Trois réglages transforment un MySQL local en serveur de base de données d'équipe :

# 1. ecouter sur le reseau, pas seulement sur localhost
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = ADRESSE_DE_MYSQL10
# 2. un utilisateur autorise a se connecter depuis http20
CREATE USER 'wordpressuser'@'ADRESSE_DE_HTTP20' IDENTIFIED BY '...';
# 3. dire a WordPress ou est sa base (wp-config.php)
define('DB_HOST', 'ADRESSE_DE_MYSQL10');

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.

Notion 3

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 :

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.

Notion 4

Lire la souffrance d'un serveur avec top

top
%Cpu(s): 93.1 us, 4.2 sy, 0.0 ni, 1.4 id, ...
# id = processeur inactif (idle) : 1.4 % ici, le serveur etouffe
Notion 5

La méthode scientifique du module

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.

À retenir

Avant de passer au laboratoire

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