Top Banner
BARGENTO 2014 conférence Matthieu BOUCHOT Expert Magento [email protected] Pourquoi & est-ce vrai que MAGENTO 1.x est considéré comme une plateforme LOURDE ?
41

Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

Jul 21, 2015

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

BARGENTO 2014conférence

Matthieu BOUCHOTExpert Magento

[email protected]

Pourquoi& est-ce vrai que MAGENTO 1.xest considéré commeune plateformeLOURDE ?

Page 2: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

Le centre e-Commercede référence

Page 3: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

@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

Page 4: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

intervenant

EXPERT MAGENTO

Tél. 01 45 63 19 89

[email protected]

Page 5: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

BARGENTO 2014 !atelier

Pourquoi & est-ce vrai que MAGENTO 1.x!est considéré comme une plateforme LOURDE ?!

Page 6: 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!

Page 7: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 8: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 9: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 10: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 11: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 12: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

BARGENTO 2014 !atelier

1er point bilan!

Page 13: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 14: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

MAGENTO 1.x : une p la te forme lourde ? S c h é m a w o r k fl o w t e c h n i q u e M A G E N T O

Page 15: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 16: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 17: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 18: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 19: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 20: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 21: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 22: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 23: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 24: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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 a n i e r

Page 25: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 26: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 27: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 28: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 29: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 30: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

BARGENTO 2014 !atelier

2e point bilan!

Page 31: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 32: 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 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)

Page 33: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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

Page 34: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 35: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 36: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 37: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 38: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

BARGENTO 2014 !atelier

3e point bilan!

Page 39: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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!

Page 40: Pourquoi & est-ce vrai que Magento 1.x est considéré comme une plateforme lourde ?

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.