Spécialiste Magento de la première heure, l'e-Commerce Academy vous présente après 6 ans d'expériences son guide des bonnes pratiques afin d'optimiser vos développements.
2. DÉVELOPPER SOUS MAGENTO
BONNES PRATIQUES APRÈS 6 ANS DE RECUL
Gabriel BOUHATOUS
Expert Magento
Audit, conseil, formation @ e-Commerce Academy
Communauté @ (Bar | Fra)gento
e-Commerce @ Linea Chic
@expert_magento | @ecommerce_acdmy
3.
4. La spécificité de Magento en 1 chiffre
1.207.032
nombre de lignes de code
Magento Enterprise 1.12
7. DÉVELOPPER SOUS MAGENTO
BONNES PRATIQUES APRÈS 6 ANS DE RECUL
1
Les bonnes connaissances
2
Les bons outils
3
Les bonnes pratiques
8. DÉVELOPPER SOUS MAGENTO
BONNES PRATIQUES APRÈS 6 ANS DE RECUL
1
Les bonnes connaissances
2
Les bons outils
3
Les bonnes pratiques
9. Les bonnes connaissances
P.O.O
ZF
les +
maîtrise objet primordiale
fait souvent la différence !
Zend Framework est un +
mais pas un prérequis
culture e-Commerce
compréhension métier
10. Les bonnes compétences
formation
continue
l’autoformation
parfois « en option »
indispensable pour bien faire
peut servir au début
pas une finalité
Les qualités qui font toute la différence :
1. être fainéant
2. savoir se remettre en question
3. se donner les moyens de développer ses compétences
13. DÉVELOPPER SOUS MAGENTO
BONNES PRATIQUES APRÈS 6 ANS DE RECUL
1
Les bonnes connaissances
2
Les bons outils
3
Les bonnes pratiques
14. Les bons outils
1
2
3
un environnement de développement
professionnel (+ plugin éventuel)
un profiler et une toolbar pour
connaître le coût de son code
en complément
logs, testing, outils pros spécifiques
15. DÉVELOPPER SOUS MAGENTO
BONNES PRATIQUES APRÈS 6 ANS DE RECUL
1
Les bonnes connaissances
2
Les bons outils
3
Les bonnes pratiques
16. Préalable : architecte != développeur
1
2
3
on ne peut pas exiger d’un développeur
qu’il fasse le travail de l’architecte
mais de fait, la composition des équipes
ne laisse bien souvent pas le choix
le respect de ce principe assure
maintenabilité, performance et sécurité
17. n° 1 : modularité et adhérence faible
1
connaître les composants et
respecter l’intégrité du Magento Core
• app/code/core
• fichiers natifs /lib/*
• fichiers natifs /js/*
18. n° 1 : modularité et adhérence faible
2
comprendre l’architecture native pour
faire bon usage des codePool
• local vs. community
• choix des modules tiers
• choix des librairies
19. n° 1 : modularité et adhérence faible
3
connaître les techniques existantes et
justifier de la méthode adaptée
• surcharge locale ?
• surcharge ?
• nombre et conflits
20. n° 1 : modularité et adhérence faible
3
connaître les techniques existantes et
justifier de la méthode adaptée
• backend model ?
• attribut ?
• event & observer ?
23. n° 2 : style de codage et lisibilité
1
faire le moins possible le mieux possible
utiliser le natif fonctionnel
• K.I.S.S. vs. usine à gaz
• limiter le paramétrage
• détourner avec modération
24. n° 2 : style de codage et lisibilité
2
faire le moins possible le mieux possible
utiliser le natif technique
• méthodes natives vs.
méthodes indésirables
• écriture dans le flux
25. n° 2 : style de codage et lisibilité
3
faire le moins possible le mieux possible
les conventions, c’est pour le bien
•
•
•
•
encodage, config, FK
usage des pattern factory
bannir les $ GLOBAL
commenter si nécessaire
26. n° 3 : performance, gestion du cache
1
au préalable, développer des logiques
performantes, même sans cache
•
•
•
•
loads d’entités lourdes
loads de collections lourdes
Mage : register, registry
attention aux pièges
(getFirstItem, …)
27. n° 3 : performance, gestion du cache
2
ensuite, déterminer et configurer
la bonne stratégie de cache
• cache != « cache-misère »
• gestion des backends
• cache applicable aux
blocks, comme aux datas
• gestion FPC via Varnish
28. n° 3 : performance, gestion du cache
3
finalement, mesurer et valider :
les performances doivent être adaptées
• SQL : de 150 à 5
• coût : de 1s à 0,1s
• valider par des TMC
conformes à la réalité
29. n° 4 : templating = développement !
1
y attacher de l’importance aussi car
en réalité, templating = développement
• usage du fallback
• structure package & theme
• append, insert, remove,
unsetChild, update handle,
ifconfig, …
30. n° 4 : templating = développement !
2
comprendre la différence entre
blocks vs. templates
•
•
•
•
phtml = pHTML !
logique : dans les vues
get : dans les templates
important pour le caching !
31. n° 4 : templating = développement !
3
inclure dans les critères de qualité
l’optimisation de l’intégration graphique
•
•
•
•
style html vs. css
cdata pour les scripts
délivrer peu, délivrer vite
50 requêtes http par page
32. n° 5 : sécurité
1
identifier et
utiliser les paramètres de sécurité natifs
• protection admin
• https
• droits admin & API
33. n° 5 : sécurité
2
identifier et
sécuriser fichiers et dossiers sensibles
•
•
•
•
.htaccess app, var, lib
fichiers inutiles ou à risque
downloader
RELEASE_NOTES.txt !
34. n° 6 : indexes et autres points avancés
1
comprendre leur fonctionnement et
maîtriser le paramétrage des indexes
• que fait reindexAll ?
• indexes inutiles ?
• update on save, manual ?
35. n° 6 : indexes et autres points avancés
save EAV
4%
divers
4%
cleanCache
BS
8%
cleanCache AS
8%
$product-‐>save();
save EAV
cleanCache BS
cleanCache AS
indexation
divers
indexation
76%
36. n° 6 : indexes et autres points avancés
Un cleanCache lent ralentit les performances du save et
allonge la durée de transaction puisque le cleanCache
model est exécuté dans le _afterSave.
37. n° 6 : indexes et autres points avancés
2
identifier et garder à l’esprit
l’existence de problématiques natives
• product save lent : cron
• save order lent : observers
• « etc. » !
38. Magento 2 ?
Release prévue pour
Q2 2012 Q4 2012
Q1 2013 Q4 2013
2014
…2015 ?
migration automatisée partielle
prochaines versions 1.x (optims)
1.x maintenue au moins 2 ans