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

41
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 ?

Upload: the-e-commerce-academy

Post on 21-Jul-2015

844 views

Category:

Internet


0 download

TRANSCRIPT

BARGENTO 2014conférence

Matthieu BOUCHOTExpert Magento

[email protected]

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

Le centre e-Commercede référence

@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

intervenant

EXPERT MAGENTO

Tél. 01 45 63 19 89

[email protected]

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

BARGENTO 2014 !atelier

1er point bilan!

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 ? 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

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

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

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

BARGENTO 2014 !atelier

2e point bilan!

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!

BARGENTO 2014 !atelier

3e point bilan!

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.