Au cours de ma carrière, et ce depuis mes débuts, j'ai toujours eu à construire des systèmes qui supportaient un nombre important d'utilisateurs par jour sur des sites media ou e-commerce ou à en reprendre en période de crise.
J'ai pu observer des cycles de reprise "de décroissance entropique" et des cycles de déclin systémique "croissance entropique" - je reviendrai sur ces notions - qui amenaient des systèmes au delà de leur point de rupture.
Mon premier constat est que peu d'équipes ont la capacité réelle à le faire et peu de manager savent l'appréhender.
Avoir une expérience réussie dans la durée sur des systèmes dépassant les 100'000 à 1'000'000 visiteurs uniques jour est dans nos pays au final une chose rare. La plupart de ceux qui le font au quotidien sont peu mobiles et bien au chaud dans leurs entreprises car celle-ci ont compris qu'au delà de la technique c'est bel et bien l'homme qui est le facteur clé de succès en pareil cas.
D'autres équipes se contentent de donner l'apparence que les choses tournent mais leurs serveur sont obligés de rebooter en boucle tout les soirs sinon aucun des sites ne seraient online bien longtemps.
Pourtant il existe bel et bien des principes à mettre en place pour se donner le maximum de chance de stabiliser un système puis de leur faire progresser.
Ces "principes" sont simples, faciles à mettre en oeuvre mais doivent être appliqués dans le timing approprié avec les bonnes personnes.
Je vous propose de balayer ceux qui m'ont guidé à chaque fois que je reprenais une situation "désespérée" ou que je batissais un système devant "tenir le choc".
Axiome 1 : "l'entropie d'un système web est croissante".
Je reprends une des lois fondamentales de la thermodynamique pour l'appliquer avec succès aux systèmes webs qui ont une nature liquide. Les principes de la mécanique des fluides et de la thermodynamique "physique classique" sont en effet à l'oeuvre car les milieux sont au final très comparables car liquides.
La plupart des professionnels pensent que l'instabilité croissante d'un système web (j'entends par là l'applicatif et les nécessités systèmes qui le supportent) est en lien avec l'augmentation de trafic c'est à dire que quand cela commence à aller mal, c'est uniquement dûe à une augmentation de trafic (du nombre de visiteurs sur le site ndlr).
C'est en grande partie faux. L'augmentation de trafic ne fait que révéler des problèmes oubliés et déja pathogènes bien avant les crash serveurs .
Par défaut, ce que vous avez construit - au delà des qualités des gens qui travaillent dessus - se délabre de jour en jour de manière constante "et sûre", c'est "une loi" qu'il faut que vous gardiez en tête . L'entropie , en thermodynamique, est la mesure du désordre et les chimistes ont rapidement compris que sa tendance naturelle est l'augmentation ; les systèmes chimiques et physiques ne faisant qu'essayer de trouver de nouveaux points d'équilibre successifs.
Loi 1 : L'entropie provient de la complexité qui augmente inexorablement.
Le premier ennemi de votre système est sa complexité. Avec le temps, il est logique que tout les systèmes deviennent de plus en plus complexes c'est à dire de plus en plus en cahotiques avec de plus en plus d'intervenants dans le temps et de plus en plus de droits ouverts.
Dès qu'une crise majeure apparait, le premier réflexe est le plus mauvais : il consiste à élever encore le niveau de complexité du système en augmentant le nombre de personne qui intervient dessus (appels à de nouveaux prestataires, changement de personnels , ect...), en changeant les technologies ou pire en faisant appel à des technologies non encore maitrisées ou comprises par le personnel "natif".
Vous comprendrez que ces simples décisions - en dehors des problèmes réels qui existent - n'ont comme seul effet d'ajouter du désordre à un écosystème déja instable alors même qu'on devrait chercher à diminuer cette fameuse entropie par quelques mesures simples :
- Réduction des personnes intervenants sur les problématiques
- Recentrage sur des solutions simples et robustes
- Suppression des éléments non vitaux...
en particulier des éléments fonctionnels demandés par le client qui amène un surcout système important (traitement d'images à la volée, traitement de vidéos si jamais...)
Votre système soufre en effet souvent du service des binaires : images en particulier qui contrairement aux idées reçues qui voudraient que cela soit les éléments purement applicatifs qui consomment sont à l'origine d'une monopolisation des ressources des serveurs Apache ou équivalent en particulier.
Si jamais ces mêmes images font l'objet de traitement à la volée par génération "utilisateur" (il existe de nombreuses librairies PHP en particulier qui le font) c'est à dire recadrage automatique, resize automatiq ue...et que vous ne controllez pas les images entrées dans le système par des tiers : vous avez certainement un problème de ce coté-là.
Nous continuerons les conseils de "sortie de crise" dans la deuxième partie de l'article à venir (II).