pourquoi & est-ce vrai que magento 1.x est considéré comme une plateforme lourde ?
TRANSCRIPT
BARGENTO 2014conférence
Matthieu BOUCHOTExpert Magento
Pourquoi& est-ce vrai que MAGENTO 1.xest considéré commeune plateformeLOURDE ?
@ecommerce_acdmy
MÉTIERS
Devenir e-Commerçant
Gestion & pilotage
Webmarketing | Ergonomie
Référencement
Google Adwords | Analytics
SOLUTIONS
Magento
Prestashop
Drupal Commerce
Oxid eSales
RBS Change
BARGENTO 2014 !atelier
Pourquoi & est-ce vrai que MAGENTO 1.x!est considéré comme une plateforme LOURDE ?!
MAGENTO 1.x : une p la te forme lourde ? L o u r d e u r d ’ u n e a p p l i c a t i o n
Indicateurs de mesures : • volume de sources • facilité d’apprentissage • structure de l’application • temps d’exécution global • ratio temps d’exécution technique/temps d’exécution métier • problèmes connus ?
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? D é fi n i t i o n d e M A G E N T O
MAGENTO est : • une plateforme e-Commerce • un socle technique (presque) autonome
MAGENTO n’est pas : • un CMS • une application Zend Framework
Solution existante depuis mars 2008
Actuellement en version 1.9.0.1
9 versions majeures en édition CE
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? C o m p a r a t i f e n t r e M A G E N T O C E & E E
MAGENTO CE & EE partagent : • le même socle technique • les mêmes modules core (Mage_)
MAGENTO EE a en plus : • des modules (fonctionnalités) supplémentaires • support éditeur
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? Vo l u m e s d e s o u r c e s
Nombre de modules 65 Nombre de fichiers (sans var et media) 13091 Nombre de dossiers (sans var et media) 4866 Implémentation PHP > 5.2 POO et Pattern MVC Nombre de classes total • dont core Magento • dont librairies • dont Zend Framework
7187 4503 2653 2380
Nombre de lignes de code • dont core Magento • dont librairies • dont Zend Framework
1.321.898 740.629 578.791 494.165
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? I n d i c a t e u r s b a s e d e d o n n é e s
Base de données MySQL : • 341 tables • 3006 colonnes • 450 contraintes d’intégrité (foreign keys) • 723 indexes • utilisation de l’EAV (sur certaines entités)
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? S t r u c t u r e d e l ’ a p p l i c a t i o n
Magento est une plateforme modulaire assurant un maximum de découplage entre composants, de plus, la structure des modules est rigoureuse et ne laisse pas de place au hasard.
Vue macro des modules Structure d’un module
MAGENTO 1.x : une p la te forme lourde ? P r e m i e r p o i n t b i l a n
Volume de sources/structure BDD ����� Structure de l’application ����� Facilité d’apprentissage �����
D’un point de vue structurel, la plateforme est donc lourde mais offre en contrepartie : • beaucoup de fonctionnalités • un socle technique robuste
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : p r o t o c o l e ( 2 p a r t i e s )
Technique Magento (incluant) • chargement des fichiers de classes (autoload) • chargement de configuration • chargement des blocks en mémoire (LoadLayout) • traversée de la couche routage • calcul des traductions • calcul des chemins des ressources (template/layout/skin) avec le fallback
Fonctionnel Magento (incluant) • chargement des entités que l’on souhaite récupérer/afficher • sauvegarde d’entité que l’on souhaite mettre à jour • affichage
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : p é r i m è t r e d ’ é t u d e
Sur les pages/actions suivantes : • home page • page catégorie • page produit • page panier • action ajout au panier • action sauvegarde de commande
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : c o n t e x t e d ’ é t u d e
Version de l’environnement MAGENTO 1.9 CE Nombre de vues magasins 3 (FR, EN, DE) Catégories 1k Produits 500k Clients 1M Commandes 200k Caches actifs ? Oui Indexes flats actifs ? Oui Réf. Machine de test Core i5 2,4Ghz
Ram 4Go HD 1To : 5400rpm
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : p a g e d ’ a c c u e i l
Temps total d’exécution en sec. 0,71 Nombre de requêtes SQL 58 Volume d’entrées de caches lues en Ko 83 Volume de données lues en Ko 1055
Autoload de classes (en sec.) 0,16 0,25
Nombre de classes chargées 381 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,14 0,053
Chargement des blocks en mémoire (en sec.) 0,1 Chargement des templates/layouts/skins (en sec.) 0,007 Traductions (en sec.) 0,003
Temps de traitement métier (controller) en sec. 0,02 0,18 Temps de traitement vue (affichage block) en sec. 0,16
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s p a g e d ’ a c c u e i l
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : p a g e c a t é g o r i e
Temps total d’exécution en sec. 0,70 Nombre de requêtes SQL 43 Volume d’entrées de caches lues en Ko 55 Volume de données lues en Ko 1055
Autoload de classes (en sec.) 0,18 0,26
Nombre de classes chargées 336 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,15 0,064
Chargement des blocks en mémoire (en sec.) 0,1 Chargement des templates/layouts/skins (en sec.) 0,014 Traductions (en sec.) 0,003
Temps de traitement métier (controller) en sec. 0,014 0,18 Temps de traitement vue (affichage block) en sec. 0,16
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s p a g e c a t é g o r i e
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : p a g e p r o d u i t
Temps total d’exécution en sec. 0,82 Nombre de requêtes SQL 49 Volume d’entrées de caches lues en Ko 121 Volume de données lues en Ko 1064
Autoload de classes (en sec.) 0,18 0,21
Nombre de classes chargées 418 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,12 0,048
Chargement des blocks en mémoire (en sec.) 0,08 Chargement des templates/layouts/skins (en sec.) 0,011 Traductions (en sec.) 0,003
Temps de traitement métier (controller) en sec. 0,11 0,23 Temps de traitement vue (affichage block) en sec. 0,12
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s p a g e p r o d u i t
Temps total d’exécution en sec. 0,85 Nombre de requêtes SQL 55 Volume d’entrées de caches lues en Ko 70 Volume de données lues en Ko 1094
Autoload de classes (en sec.) 0,18 0,18
Nombre de classes chargées 424 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,13 0,05
Chargement des blocks en mémoire (en sec.) 0,04 Chargement des templates/layouts/skins (en sec.) 0,005 Traductions (en sec.) 0,003
Temps de traitement métier (controller) en sec. 0,44 0,53 Temps de traitement vue (affichage block) en sec. 0,09
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s p a g e p a n i e r
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : a c t i o n a j o u t e r a u p a n i e r
Temps total d’exécution en sec. 0,74 Nombre de requêtes SQL 51 Volume d’entrées de caches lues en Ko 107 Volume de données lues en Ko 845
Autoload de classes (en sec.) 0,18 0,17
Nombre de classes chargées 321 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,17 0,07
Chargement des blocks en mémoire (en sec.) NA Chargement des templates/layouts/skins (en sec.) NA Traductions (en sec.) 0
Temps de traitement métier (controller) en sec. 0,53 0,53 Temps de traitement vue (affichage block) en sec. NA
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s a c t i o n a j o u t e r a u p a n i e r
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : a c t i o n s a u v e g a r d e d e c o m m a n d e
Temps total d’exécution en sec. 3,5 Nombre de requêtes SQL 112 Volume d’entrées de caches lues en Ko 69 Volume de données lues en Ko 845
Autoload de classes (en sec.) 0,2 0,22
Nombre de classes chargées 437 Temps jusqu’à l’éxecution de l’action (en sec.) • dont chargement de configuration (en sec.)
0,22 0,06
Chargement des blocks en mémoire (en sec.) 0,003 Chargement des templates/layouts/skins (en sec.) 0 Traductions (en sec.) 0
Temps de traitement métier (controller) en sec. 2,9 2,98 Temps de traitement vue (affichage block) en sec. 0,08
MAGENTO 1.x : une p la te forme lourde ? É t u d e d e p e r f o r m a n c e : m é t r i q u e s a c t . s a u v. d e c o m m a n d e
Métriques générales
Métriques techniques
Métriques métiers
MAGENTO 1.x : une p la te forme lourde ? S e c o n d p o i n t b i l a n
Moyenne classes chargées (en unité) �400 Moyenne temps d’exécution (en sec.) �1s Moyenne ratio exé. Techniques/exé. Métier (en %) �35% Moyenne requêtes SQL (en unité) �60 Moyenne volume de données manipulées (en Mo) �1Mo
Magento peut-être considéré comme une plateforme lourde à cause de son overhead de temps d’exécution, en revanche, c’est quasiment un temps constant sur toutes les pages. Il conviendra donc d’être vigilant pour vérifier si des temps de chargements sont anormalement longs, cela proviendrait de développements spécifiques ou modules communautaires mal conçus/implémentés.
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? L a r é - i n d e x a t i o n d a n s M A G E N T O
La ré-indexation MAGENTO a pour particularité : • de ne s’appliquer qu’aux entités catalogue (produits/catégories) nativement • d’être nécessaire pour le bon affichage des données sur le front • de devoir être lancée après chaque import catalogue • d’accélérer les traitements en lecture côté front • de permettre l’agrégation de données (ex. promotion catalogue)
MAGENTO 1.x : une p la te forme lourde ? M é t r i q u e s r é - i n d e x a t i o n
catalog_product_attribute (en sec.) 1550 catalog_product_price (en sec.) 840 catalog_url (en sec.) > 18000 catalog_product_flat (en sec.) 7160 catalog_category_flat (en sec.) 7 catalog_category_product (en sec.) > 10000 catalogsearch_fulltext (en sec.) 5400 cataloginventory_stock (en sec.) 220
Bilan : une estimation entre 10h et 15h est nécessaire pour une ré-indexation totale
Indexe de prix Nombre de produits X nombre de groupes clients X nombre de websites
Flat + Inventory + Category / Product + Product attribute
Nombre de produits ou catégories X nombre de websites
MAGENTO 1.x : une p la te forme lourde ? P o u r q u o i e s t - c e s i l o n g / l e n t ?
• ajout de colonnes (tables flat) • combinaisons pouvant être « explosives »
• locks au moment d’écrire dans les tables d’index (surtout pour les gros
volumes)
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? S t r a t é g i e d u « t o u t o u r i e n »
Hors E.E. 1.13, MAGENTO n’indexe que : • produit par produit (en mode automatique) • en ré-indexation totale
Pas de ré-indexation partielle !
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? I m p a c t d e s i n d e x e s
locks des tables et des enregistrements deadlocks possibles Ralentissements liés à des slow queries import produits long
1
2
3
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? Vu e s m a g a s i n s & C u s t o m e r g r o u p ?
L’ajout de vues magasins non contrôlé impacte : • combinatoire excessive sur les tables d’index (rallongement de l’indexation) • rechargement très couteux de la configuration
L’ajout de groupes clients non contrôlé impacte : • combinatoire excessive sur la table d’index des prix BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.x : une p la te forme lourde ? Tr o i s i è m e p o i n t b i l a n
Les problèmes connus de MAGENTO sont donc : • limitation sur le nombre de vues magasins • gestion des indexes qui bride les imports produits • limitation sur le nombre de groupes clients
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO 1.X : une p la te forme lourde ? C o n c l u s i o n
BARGENTO!2014!–!E/COMMERCE!ACADEMY!
MAGENTO est donc reconnue et avérée comme étant une plateforme lourde car : • exigeante techniquement • contient beaucoup de traitements techniques spécifiques (pas forcément utile) • à des problèmes connus très gênants concernant les imports produits Cependant, le fait que ce soit une plateforme lourde ne permet pas de justifier systématiquement que cela soit la cause principale de problèmes de performances.