BLOG X2i

L'actualité Magento et e-commerce vue par X2i

Architecture d’hébergement Magento : Comment assurer performance et haute disponibilité !

10 novembre 2016 - Publié par Céline - Gestion de l'information

Architecture d'hébergement pour un site Magento performant
Nous vous retrouvons aujourd’hui pour poursuivre notre série d’articles sur les différents types d’architecture possibles pour héberger votre plateforme e-commerce sous Magento ! Dans un notre précédent billet, nous avons présenté une infrastructure minimaliste et économique pour Magento 2. Voici comment la faire évoluer vers plus de performance et haute disponibilité.

Vers une plateforme redondée

Haute disponibilité et performance : ces deux concepts sont intimement liés, et l’amélioration de l’un passe souvent par l’optimisation de l’autre.

Pour améliorer la haute disponibilité, on utilise généralement une deuxième machine en “secours”. Il serait dommage de ne pas exploiter les ressources de cette deuxième machine pour améliorer les performances de votre plateforme.

Attention à bien faire la distinction entre deux aspects de la performance : temps de réponse et tenue en charge. L’ajout d’une nouvelle machine (nouveau front par exemple) n’a généralement pas d’impact immédiat sur le temps de réponse de votre site : il améliore sa tenue en charge, c’est à dire qu’il pourra servir votre site à plus d’utilisateurs en même temps (le temps de réponse se dégradera moins vite).

Pour améliorer le temps de réponse de votre site e-commerce, une optimisation applicative sera généralement beaucoup plus efficace qu’une optimisation matérielle (mais parfois plus coûteuse…).

Magento 2 se prête bien au Load Balancing : la charge applicative est générée par l’exécution du code PHP (ressource processeur), l’accès aux composants de données générant peu de charge. On peut donc améliorer la tenue en charge en ajoutant de nouveaux frontaux (scalabilité “horizontale”).

Le schéma suivant montre une infrastructure Magento 2 redondée, avec répartition de charge (“load balancing”).

Infrastructure Magento 2 redondée avec répartition de charge

 

Les mécanismes suivants sont utilisés sur cette infrastructure :

    • Le SSL offloading est en mode “actif-passif” : pour les performance de l’établissement des connexions HTTPS, il est préférable que la gestion des connexions SSL soit centralisée. Le deuxième Nginx est donc passif.
    • Le Cache HTTP Varnish est également en mode “actif-passif” : cela permet d’éviter une division du cache. Un load balancing sur les Varnish aurait été moins optimal : générer le cache pour une même page fait travailler deux fois la plateforme.
    • Le Firewall dispose d’un mécanisme permettant d’assurer la bascule (“failover”) vers un autre front, en cas de panne du frontal 1.
    • Le Load Balancing est directement assuré par Varnish.
    • Les composants de données (MySQL, Redis, NFS, ElasticSearch) sont répliqués et utilisés par les frontaux en mode “actif-passif”.

ElasticSearch possède un mécanisme de haute disponibilité natif. Il en est de même pour Redis, même si les données de session et de cache sont souvent jugées moins critiques.
Le partage de fichier peut être géré par NFS, voire un autre mécanisme proposé par votre hébergeur.

En ce qui concerne la réplication MySQL, nous recommandons d’utiliser le module Galera, implémenté dans Percona XtraDB Cluster ou MariaDB. Par rapport à une réplication MySQL classique, ce composant rend la réplication plus robuste et facilite grandement les bascules. Un lien réseau rapide est un prérequis à ce genre de réplication semi-synchrone.

Attention à l’augmentation de complexité liée aux mécanismes de haute disponibilité. Ces mécanismes doivent être testés régulièrement afin d’éviter les mauvaises surprises au moment où ils sont vraiment nécessaires.

Les processus de déploiement sont également à modifier pour livrer le code source sur tous les frontaux en même temps. L’outil Capistrano est très utile pour gérer les déploiement multi-fronts, ainsi que les rollbacks.

Quels sont les bénéfices d’un CDN ?

Le CDN (Content Delivery Network / Réseau de diffusion de contenu) a pour objectif de fournir un cache HTTP au plus proche des utilisateurs, afin d’optimiser les temps de téléchargement, et donc le temps de rendu des pages Web.

Le bénéfice de la mise en place d’un CDN pour votre boutique dépend de plusieurs facteurs :

    • Si votre site adresse uniquement un marché local, le bénéfice d’un CDN est moins évident.
    • Si vous vendez à l’international, l’utilisation d’un CDN prend tout son sens.
    • Plus les médias que vous servez ont une taille significative, plus l’utilisation du CDN sera avantageuse.

Conclusion

De nombreuses solutions s’offrent à vous pour l’architecture d’une plateforme Magento 2. Ces choix dépendent du niveau de performance et de haute disponibilité désiré, mais aussi de votre budget.

Aussi, si vous rencontrez des difficultés avec votre architecture d’hébergement ou si vous souhaitez faire évoluer votre architecture pour optimiser les performances de votre plateforme Magento, n’hésitez pas à nous écrire !

A lire aussi

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Actualité

NEWSLETTER X2i

Recevez en exclusivité notre actualité par e-mail :
conseils, nouveautés Magento, événements e-commerce, livres blancs...