Cas client : Gérer les pics d’activité d’un site e-commerce
Notre client a lancé il y a quelques années sa propre plateforme e-commerce pour vendre en ligne ses produits auprès des internautes. Ils sont présents dans le monde entier et dispose d’une cinquantaine de boutiques physiques.
La période des fêtes de fin d’année constitue une période de forte activité, et leur service marketing a signé des passages de publicité sur des radios et chaînes de télévisions de grandes écoutes.
Le DSI prend ainsi conscience que les performances actuelles du site ne peuvent pas supporter les surcharges de trafic et crains que la charge induite par une forte affluence, augmente de façon importante les temps de réponses (les temps de chargement de la page web). L’enjeu est de taille car cela risquerait de faire fuir les internautes sans qu’il ne puissent finaliser leurs commandes entraînant une perte de chiffre d’affaires conséquente.
Ainsi, pour faire face à cette croissance d’activité, le directeur technique a fait appel à Syloé afin de réaliser un test de charge sur son infrastructure (hébergé chez un infogérant français) et donc gérer les pics d’activité d’un site e-commerce
L’objectif de ce test :
Connaître les limites de leurs application web et la charge qu’ils sont capables d’absorber en cas de forte croissance des visites et cela sans ralentissements des temps de réponse. Le cas échéant mettre en évidence les goulots d’étranglement. Cela revient à connaître à l’issue du test de montée en charge : au bout de combien d’utilisateurs simultanées, le temps de réponse des pages web va dépasser 5 secondes, ce qui est la valeur maximum tolérable pour leurs internautes.
Réalisation du test de charge avec scénario de navigation
Syloé a accompagné son client dans la définition des scénarios de navigation cibles, et dans l’estimation des paliers d’arrivée des internautes suites aux passages des publicités.
L’objectif est d’arriver à fournir une information simple au client, s’articulant de cette façon :
Au bout de X utilisateurs simultanées, quel est le temps de réponse des pages cibles dépassant une valeur V (estimée comme raisonnable pour un site de E-commerce) ?
Voici concrètement ce que Syloé a mis en place pour analyser le comportement des applicatifs et/ou système responsables d’une probable latence, avec les préconisations d’améliorations pour y remédier.
Installation des outils sur les composants systèmes et création des scénarios
Des sondes (à base d’agent Zabbix branchés sur l’infrastructure Zabbix SaaS et à base d’extend développés par Syloé) sont installés sur les différents composants systèmes afin de mesurer de près le comportement des briques systèmes en corrélation avec le fonctionnement des scénarios métiers.
4 scénarios de navigation ont été créés reproduisant le cheminement réel des internautes avec l’outil Open Source JMETER.
Un premier pré-test a révélé la présence de plusieurs noeuds d’étranglement
Plusieurs nœuds d’étranglement (SPOF) ont été mis en évidence. Et ceci était dû à une nouvelle fonctionnalité introduite (à la demande du service marketing) par les développeurs, qui permet de suggérer dynamiquement des produits en fonction de plusieurs critères.
Concrètement, notre supervision, a détecté qu’au bout de 35 utilisateurs simultanés, le temps de réponse de deux pages spécifiques est passé de 2 secondes à 7 puis à 10 secondes. Ce qui a commencera provoquer d’autres ralentissements sur 3 autres pages web, etc .. Notre analyse des autres éléments de supervision en place nous a permis d’isoler une fonctionnalité précise du code.
Après notre notification à l’équipe, une correction de l’application a eu lieu, accompagnée d’une meilleure optimisation des systèmes de gestion de caches.
Test de charge complet
Le test de charge complet a pu être réalisé avec un objectif de temps de réponses de 4 secondes pour 1000 utilisateurs simultanées.
Résultats du test :
Ce test a révélé des temps de réponse supérieur à 8 secondes au delà de 178 internautes simultanées.
En cause, la structure de la base de données qui très gourmande en traitement.
Pour optimiser cette structure, la solution la plus efficace et “propre” aurait été de réécrire un bout de code de l’application et des requêtes SQL, malheureusement avec l’arrivée de forte charge à venir et par manque de temps, ce n’était pas possible de le faire.
Optimisation de l’infrastructure suite aux tests réalisés et analyse des performances
Loadbalancing & Clustering
Syloé a mis en place une autre solution plus rapide à mettre en oeuvre. Elle consiste à dupliquer certaines briques systèmes en introduisant du Loadbalancing sur la partie base de données, dans un premier temps, afin de diviser mécaniquement la charge reçu par l’infrastructure initiale. Ainsi le temps d’exécution des requêtes SQL a été divisé par quatre.
Une fois ce goulot d’étranglement levé, la mise en place d’un clustering au niveau de Tomcat a permi aussi de diviser les temps de traitement du code métier par 3.
Analyse des performances
Une fois cette infrastructure mise en place, un nouveau test de charge complet a été réalisé et les temps de réponse attendus était atteint :
2.8 secondes en moyenne sur les pages cibles pour 1450 utilisateurs simultanées.
Pendant les passages des Publicités, le nombre d’utilisateurs simultanées moyen max a été de 1600 utilisateurs, avec des temps de réponse de 3.1 secondes par page « lourde ».
Gestion des pics d’activité d’un site e-commerce et industrialisation du processus par Syloé
La gestion des pics d’activité d’un site e-commerce passe aussi par l’industrialisation des processus pour gagner du temps par la suite. Une fois la période de forte activité passée, les équipes de développement ont travaillé et revu le code applicatif ainsi que les requêtes SQL. Ce qui leur a permis d’atteindre les mêmes temps de réponse avec une infrastructure moins importante en terme de ressources.
Les ressources complémentaires mis en place par Syloé ont été déprovisionnés, mais le processus conduisant à leur mis en place a été maintenu dans le cadre d’une future montée en charge soudaine ou dans le cadre d’un PRA sur site distant. Ce processus a été industrialisé avec Ansible et GIT afin de rendre sa mise en oeuvre réalisable en moins de 30 minutes.
Contactez Syloé, Experts Linux
Vous souhaitez également effectuer des tests de charge sur vos applications web pour gérer les pics d’activité d’un site e-commerce et optimiser l’architecture technique de votre système d’information ? Contactez un Expert Syloé, il vous conseillera et vous accompagnera selon vos besoins !
sam
Super article , merci pour ce partage qui donne envie de te suivre !