Les propriétaires d'une plateforme Magento ou Adobe Commerce redoutent souvent les montées de version, qui peuvent être particulièrement coûteuses en temps et en budget, sans nécessairement apporter de gain fonctionnel évident. Qui plus est, le versionning sémantique n'est malheureusement pas respecté : ainsi, une version 2.x.1
peut avoir des backward compatibility breaks (incompatibilités) avec la version suivante 2.x.2
(à noter que Adobe fournit des versions "patch" incluant des correctifs de qualité et de sécurité).
Pour autant, comme nous allons le voir dans la suite de cet article, cela n'est pas une fatalité : il est tout à fait possible de faciliter grandement ses montées de version Magento / Adobe Commerce, grâce à un ensemble d'outils et de bonnes pratiques.
Depuis la version
2.4.4
, Adobe offre 3 ans de support pour toutes les versions, à compter de leur date de disponibilité (GA date) :
Adobe Commerce Lifecycle Policy.
Ainsi, la version
2.4.7
sortie le 9 avril 2024 est officiellement supportée jusqu'au
9 avril 2027.
Une montée de version Magento / Adobe Commerce peut être requise ou souhaitable pour de nombreuses raisons :
- Nouvelle fonctionnalité ou brique technique souhaitée
- Version plus supportée par Adobe (correctifs de sécurité)
- Version d'un outil sous-jacent plus supportée, et montée de version impossible : PHP
7.4
par exemple, dont le support officiel a pris fin en novembre 2022, obligeant à passer sous Magento 2.4.4
ou plus récente
- Rester à jour afin de faciliter les montées de versions suivantes
Bonnes pratiques
- Développement
- Ne jamais modifier le coeur de Magento
- Privilégier autant que faire se peut l'utilisation de fonctionnalités natives vs. des développements spécifiques
- Éviter l'utilisation de preferences pour surcharger du natif ; quand cela est indispensable, documenter clairement les raisons de la surcharge
- Éviter l'utilisation de plugins de type
around
- Découper autant que possible en modules à responsabilité unique afin de faciliter leur maintenance, et éviter les modules fourre-tout type
XX_Catalog
, XX_Sales
, etc.
- Réaliser des tests automatisés ou rédiger des procédures de test détaillées pour le code "à risque"
- Idéalement, documenter dans chaque module les développements spécifiques réalisés, leurs impacts et potentiels effets de bord, a fortiori lorsqu'il s'agit de surcharges de comportements natifs
- Flux
- Privilégier l'utilisation des fonctionnalités natives (import / export) et/ou des API REST existantes, afin de limiter le couplage
- Modules et extensions
- Privilégier des modules activement maintenus, idéalement d'éditeurs reconnus (Amasty, Webkul, Mirasvit, etc.)
- Dans la mesure du possible, étudier la qualité du module et son impact éventuel sur des montées de version
- Mettre à jour régulièrement les modules installés, en prenant soin de lire les release notes (attention lors de nouvelles versions majeures, il peut être souhaitable d'attendre quelques semaines une stabilisation)
- Général
- Suivre les montées de versions Magento / Adobe Commerce, afin de minimiser l'impact de chaque mise à jour
Adobe propose désormais deux nouveaux mécanismes permettant d'
étendre le fonctionnement de la solution, sans code spécifique :
- Events (à partir de 2.4.5
) : déclenchement d'évènements asynchrones sous conditions, par exemple pour la transmission d'une commande à l'ERP
- Webhooks (à partir de 2.4.4
) : déclenchement d'évènements synchrones sous conditions, par exemple pour calculer les taxes d'une commande
Outils
Pour les clients de la version Commerce, Adobe met à disposition un outil d'aide à la mise à jour particulièrement utile : Upgrade Compatibility Tool.
L'outil open-source Rector permet également de scanner et mettre à jour son code afin de correspondre à de nouveaux standards, par exemple lors d'un passage à une nouvelle version de PHP.
Conclusion
Le meilleur moyen de faciliter les montées de versions reste de limiter autant que possible le code spécifique, ainsi que les extensions installées :
- Moins de code à maintenir
- Moins de tests à réaliser
- Meilleures performances
- Amélioration globale de la connaissance du projet
Adobe fournit pour chaque nouvelle version une release note détaillée, celle-ci est particulièrement utile afin de déterminer ce qui a été modifié et peut nécessiter des adaptations :
Release Notes Adobe Commerce.