PHP / Legacy / Prestashop

Mise à niveau d'une plateforme e-commerce PHP

Mise à niveau technique d'une application PHP développée sur plusieurs années, ayant accumulée une obsolescence technique importante et devenue risquée à utiliser en production, mais pourtant sans alternative crédible.

Résultats clefs

  • +10 sites e-commerce propulsés
  • PHP 7.4 compatibilité du code
  • 250h de refactoring

Le contexte

Retour en 2021, Prestashop a abandonné la version 1.6 de son CMS e-commerce depuis deux ans déjà au profit de la version 1.7. Problème, la version 1.7 existe elle-même déjà depuis cinq ans et n'a toujours pas su atteindre la maturité suffisante afin de gagner le cœur des agences e-commerce. La faute à des ambitions trop grandes, des dysfonctionnements à répétition et une architecture technique bancale et déjà obsolète.

Malheureusement, la version 8 tant promise n'en est de son côté qu'à ses balbutiements et ne verra finalement le jour que fin 2024. Dans ce contexte, les agences web se trouvent devant un dilemme existentiel, comment bénéficier de la stabilité et de la performance de la version 1.6 sans s'exposer à des failles critiques et accumuler l'obsolescence' technique ?

La solution : Migrer le socle technique de la version 1.6.

Chronologie 2014-2026 : PrestaShop 1.6 stable puis plus maintenue, 1.7 de maturité insuffisante, version 8 pas encore disponible en 2021 ; côté PHP, fin de support de PHP 7.1 en décembre 2019 et PHP 7.4 retenu comme cible. Un repère marque la décision de 2021 de moderniser le socle 1.6.
Fig. 01 En 2021, aucune version de PrestaShop n'offrait à la fois stabilité et socle technique à jour.

Les enjeux

Au-delà des guerres de clocher, un e-commerçant a besoin d'une plateforme performante et sécurisée pour ses acheteurs. Tout le reste est accessoire, que le site marchand soit propulsé par PrestaShop, Magento, Shopify, WooCommerce ou n'importe quel autre CMS n'a absolument aucune importance, chaque plateforme a ses avantages et ses inconvénients et tout dépend des spécificités du projet. Dans le cas qui nous intéresse nous nous focalisons sur Prestashop.

Le cœur de la performance et de la sécurité est le socle technique backend, le frontend n'a que peu d'importance avec cette perspective et, en 2021, Prestashop 1.6 proposait un socle technique qui était devenu beaucoup trop obsolète. Mais les alternatives chez cet éditeur n'étaient pas crédibles à cette époque.

Les principaux problèmes concernaient la version de PHP supportée qui était plafonnée à la version 7.1, déjà obsolète depuis le 1er décembre 2019. C'était la même chose concernant les librairies tierces utilisées par cette version de Prestashop, elles étaient le plus souvent déployées dans des versions non maintenues. Et des éléments d'architecture clef pouvaient être améliorés en termes de performance et de sécurité.

L'approche la plus efficiente était de conserver la fiabilité fonctionnelle inégalée de Prestashop 1.6 tout en sécurisant le socle technique. et en conservant la compatibilité avec l'écosystème Prestashop.

L'approche

Plusieurs piliers techniques essentiels ont été gérés de façon méthodique lors du refactoring afin d'adresser les différents objectifs de sécurité et de performance induits par la réduction de l'obsolescence' technique tout en ne dégradant pas le fonctionnement natif du système.

  1. Support PHP 7.4 : au moment de ce refactoring, deux versions de PHP étaient envisageables, PHP 7.4 avec un support jusqu'à fin 2022 ou PHP 8.0 jusqu'à fin 2023. Le choix de migrer le code en PHP 7.4 a été fait, car il est significatif sans être pour autant un gros saut de génération comme avec PHP 8.0. Une transition en douceur vers une version de PHP activement supportée a été privilégiée.
  2. Composer : toutes les dépendances du projet ont été migrées pour être désormais gérées via Composer. Elles ont été mises à jour avec les dernières versions compatibles avec PHP 7.4. Tout le code de Prestashop utilisant ces dépendances a été adapté pour fonctionner avec ces nouvelles versions.
  3. Architecture : une architecture à racine web a été mise en place pour faciliter la gestion des fichiers statiques et des ressources du site et les séparer du reste du code qui se situe dans un dossier non accessible. Cela a nécessité une réécriture de l'ensemble des chemins de l'application.
  4. Isolation : les interconnexions avec les API's de Prestashop ont été coupées pour éviter les risques de piratage via des injections de code malveillant comme cela a déjà pu avoir eu lieu par le passé.
  5. Marketplace : les liens avec le marketplace de Prestashop ont été recodés afin d'assurer la compatibilité avec les modules proposés via ce biais et ne pas compromettre l'accès à l'écosystème.
  6. Frontend : ce point ne répond pas à une nécessité de réduction d'obsolescence technique pure, mais plutôt à un souhait de mise à jour de l'interface avec un support Saas via la syntaxe SCSS pour une meilleure expérience utilisateur et un support amélioré par les moteurs de recherche à des fins de référencement (SEO).
  7. Fonctionnalités : de nombreuses fonctionnalités améliorant l'outil de base ou proposés par des modules tiers ont été intégrées directement afin d'étendre les capacités de base.
  8. Correction de bugs : des bugs ont été corrigés afin d'améliorer la stabilité et la fiabilité du système. Certains bugs ont été corrigés en se basant sur les bugs corrigés dans la version 1.7 de Prestashop, d'autres sont spécifiques.
  9. Performances : des optimisations ont été effectuées pour améliorer la performance et la tolérance à la charge de la plateforme.
  10. Installation : un outil de déploiement automatisé via GIT et une interface en ligne de commande sur un environnement conteneurisé a été intégré afin d'assurer une installation rapide et normalisée.
Comparaison avant / après : à l'origine, tout le code est exposé dans la racine web avec PHP 7.1 au maximum, des librairies non maintenues et une API éditeur ouverte ; après refactoring, seul le dossier public est servi, le code et les dépendances Composer sont hors d'atteinte, en PHP 7.4 avec API isolée, Docker et compatibilité marketplace.
Fig. 02 Le socle avant et après refactoring : seule la racine web www/ reste exposée.

Le livrable

  • Une version de Prestashop 1.6 boostée aux hormones, avec une réduction de l'obsolescence technique et une amélioration de la sécurité, des performances et des fonctionnalités. Le tout installable automatiquement et compatible avec l'écosystème Prestashop. De quoi attendre la version 8 de Prestashop en toute sérénité.

Prolonger la durée de vie d'une plateforme existante est une tâche complexe qui nécessite une approche méthodique et une attention particulière aux détails avec une bonne compréhension des problématiques d'architecture logicielle. La contrepartie se cache dans le sentiment gratifiant d'une approche responsable et résiliente de l'utilisation de la technologie.

Comparaison des deux options de 2021 : adopter PrestaShop 1.7, où les fonctionnalités sont à revalider, les modules et thèmes à adapter, l'architecture à apprendre et le socle encore immature, avec un effort de tests lourd, une courbe d'apprentissage raide, un risque de bugs et des ressources consommées élevés ; face au refactoring de PrestaShop 1.6, où fonctionnalités, modules et architecture sont éprouvés et maîtrisés et seul le socle technique est mis à niveau, avec des tests ciblés, un apprentissage faible, un risque maîtrisé et des ressources réduites.
Fig. 03 Refactoriser un socle éprouvé plutôt qu'adopter une version instable : une approche sobre et résiliente.

Ce que j'en retiens

Pourquoi changer un système fonctionnel si l'obsolescence est uniquement technique ? D'autant plus si les alternatives ne sont pas crédibles et qu'une mise à jour purement technique est à portée au prix d'un effort raisonnable ? Trop souvent, nous cédons aux sirènes marketing et nous nous précipitons vers la mise à jour d'un système sans même envisager la pertinence d'une telle action et les alternatives rationnelles à notre disposition. Il est important de bien comprendre les avantages et les inconvénients de chaque approche avant de prendre une décision éclairée.

Études de cas

Autres interventions

Toutes les études de cas

Un projet, une décision d'architecture, ou simplement un doute à lever ?

Prendre contact

Votre adresse sert uniquement à l'envoi de la newsletter. Elle est transmise à notre prestataire d'envoi (voir la politique de confidentialité). Comment votre adresse est traitée