juil 27

Magento sur le grill!

S’il est désormais acquis pour tous (ou presque) que Magento offre toute la richesse fonctionnelle requise pour des sites e-commerce professionnels exigeants, il existait peu d’études approfondies sur sa capacité à accompagner les projets les plus ambitieux en termes de volumétrie, et nous étions fréquemment interrogés sur cette question.  Magento peut-il  gérer un catalogue de plusieurs millions d’articles ?  Une fréquentation de plus de 20 millions de visites par mois mois ?   Plusieurs milliers de commandes à l’heure ?

La réponse à cette question dépend évidemment d’un certain nombre de paramètres pas forcément liés directement à la qualité intrinsèque de Magento (qualité des développements, infrastructure d’hébergement etc…) Toutefois, si l’on part du postulat que toutes les bonnes pratiques sont respectées à tous les niveaux, qu’est réellement capable de faire Magento?

Pour y répondre de manière factuelle, nous avons mené sur plusieurs semaines, une grande campagne de tests de charge, mobilisant jusqu’à une douzaine de serveurs octo-cœurs, déroulant des scénarios complets et représentatifs d’un trafic réel, sur plusieurs jours de charge.

Nous avons compilé ces résultats et procédé à quelques analyses présentées dans un document téléchargeable ici : http://factory.clients.smile.fr/docs/magento-performances_et_scalabilite.pdf

Quelques mots sur la démarche

L’infrastructure et les scénarios de tests mis en œuvre ont pour objectif de mesurer plusieurs indicateurs :

  • les temps de réponse des principaux écrans de navigation dans un contexte de très forte charge
  • la capacité de service nominale d’un serveur et la scalabilité d’une architecture multi-serveurs
  • le trafic supportée en fonction du nombre de frontaux
  • le nombre de commandes et de mise au panier par heure en fonction du nombre de frontaux
  • l’endurance de la plateforme sur une période de surcharge de 8h consécutives

Le document présente l’ensemble de l’architecture mise en oeuvre ainsi que les adaptations apportées à Magento pour pouvoir supporter de telles charges.

Alors, ça donne quoi?

En synthèse, la plateforme Magento a présenté un bon comportement en charge et une excellente extensibilité.

Les temps de réponse unitaires sont excellents pour les pages qui utilisent pleinement le dispositif de cache, et sont plus élevés pour les pages de mise au panier ou de confirmation de commande. Un aspect important des choix d’architecture logicielle de Magento est de solliciter principalement la CPU des frontaux, et assez peu la base de données.   C’est cette caractéristique qui permet une très bonne extensibilité, c’est-à-dire la capacité à mettre en place une plateforme à très haute capacité d’accueil par simple ajout de serveurs.   Cette extensibilité permet de faire monter en puissance une plateforme au fur et à mesure que son succès se confirme, sans rupture ni grande migration.

Cette campagne de tests démontre qu’une plateforme Magento bien conçue peut accueillir 28 millions de visites par mois, en servant jusqu’à 800 pages par seconde aux heures de pointe.

Scalabilité de Magento

La base de données quant à elle, arrive à servir 20 serveurs frontaux en conservant une charge acceptable. Au delà, il faudra commencer à réfléchir à d’autres pistes d’optimisation.

Ce qu’il faut retenir

Notons, pour fixer les idées, que ces 28 millions de visites / mois, associées à une hypothèse de taux de transformation de 2% correspondent, pour un panier moyen de 20 €, à un CA mensuel de 22 M€, et pour un panier moyen de 100 €, à un CA mensuel de 112 M€.   Il y a peu d’acteurs dans le monde dans cette catégorie.

Indicateur Valeur
Nombre d’articles dans le catalogue 1 050 000
Capacité d’un unique frontal Magento en visites / mois 1 525 200
Capacité de 10 frontaux Magento en visites / mois 14 136 000
Capacité de 10 frontaux Magento en commandes / heure 1 080
Nombre maximum de frontaux pour une base de données 20
Capacité maxi d’une plateforme Magento sur une base de données unique, en visites / mois 28 millions

—————-

Conclusion

Beaucoup de chemin a été fait depuis les premières versions de Magento qui souffraient, il faut bien le reconnaître, de quelques soucis de performances. Aujourd’hui, la donne a changé et Magento n’a définitivement pas à rougir face aux mastodontes du e-commerce sur cette question de la scalabilité et des performances. Et ce que l’on sait aujourd’hui de Magento 2 qui nous arrivera l’année prochaine nous laisse espérer des résultats encore meilleurs…

écrit par Frédéric de Gombert \\ tags: , , ,


7 commentaires sur “30 millions de visites par mois, c’est possible avec Magento?”

  1. 1. Nicolas Dit :

    Merci Frédéric & Smile de partager cette étude! Je me l’imprime et je lirais ça tranquillement pendant mes vacances ;)

    C’est intéressant de voir le rapport frontaux/bdd.

  2. 2. Matthieu Dit :

    Bonjour et merci pour l’article et surtout le travail accompli pour ressortir ces resultats. Cependant j’ose exposer un bemol sur les capacites d’extensions de Magento vis a vis des bases de donnees. D’apres moi et d’apres votre document, il semblerait que Magento a beaucoup de mal a gerer le cote ‘scalable’ de MySQL en ecriture, certes, il existe des solutions complexes (qui n’ont rien a voir avec Magento), mais de base, il est difficile d’ajouter des serveurs SQL a Magento, comme on peut le faire avec les frontaux par exemple. C’est a mon avis un probleme a l’extensibilite que peut proposer Magento. Votre schema, ainsi qu’un paragraphe dans votre document l’explique bien, mais cela ne ressort pas vraiment sur cet article (« En synthèse, la plateforme Magento a présenté un bon comportement en charge et une excellente extensibilité. »). Enfin petite question en apparte : quelle est le loadbalancer utilise ?

  3. 3. Frederic de Gombert Dit :

    Effectivement, la question de la scalabilité horizontale de MySQL est moins visible dans l’article que dans le document.

    Comme vous l’évoquez, le souci de scalabilité de la base de données en écriture n’est pas lié à Magento mais à MySQL lui-même et aux SGBD classiques (le futur est sans doute dans le NoSQL à la Facebook pour éviter les problèmes de consistance des données). En fait, la solution la moins couteuse et la moins complexe techniquement est la scalabilité verticale, c’est à dire augmenter la puissance et la capacité d’un serveur au lieu de les multiplier.

    Magento devrait supporter rapidement d’autres SGBD tels qu’Oracle. Nous pourrions alors rejouer les tests avec ce système pour voir si nous obtenons les mêmes résultats.

    Et puis, il faut quand même préciser qu’avant de se poser cette question, il faut arriver à empiler 20 serveurs frontaux (et peut-être même plus en continuant le travail d’optimisation et en mettant une machine de guerre sur le serveur MySQL). Relativement peu de e-commercants seront concernés par cette problématique…

    Enfin, en ce qui concerne le load-balancer utilisé, nous avons rapidement abandonné celui fourni par Amazon (qui tombait très/trop fréquemment) au profit de HAProxy.

  4. 4. 30 millions de visites par mois, c’est possible avec Magento? « E-choisel Dit :

    [...] Source: 30 millions de visites par mois, c’est possible avec Magento? [...]

  5. 5. Benoit | Info-ecommerce Dit :

    Vraiment impressionnant ces tests :)
    Ceci dit avec 122 M$ de Ca / mois il n’y en a en effet pas beaucoup des sites E-commerce de ce calibre en France, même dans le monde !

  6. 6. 30 millions de visites par mois avec Magento ? | BLOG E-COMMERCE de François Ziserman, Consultant e-commerce Dit :

    [...] L’article du blog est ici. [...]

  7. 7. Matthieu Dit :

    Concernant la scabilite verticale de MySQL, un article tres interessant de Percona a ce sujet :

    http://www.percona.com/redir/files/white-papers/scaling-mysql-percona-server-virident.pdf

Poster une réponse