Actualités

[08/09/2017] Breaking news ! Smile décroche le label Happy Trainees 2018

Après le label HappyAtWork, Smile s’offre celui décerné par ses stagiaires et alternants !

[21/07/2017] Smile lance les premiers vélos solaires connectés à l’occasion du Sun Trip Tour 2017

Smile, leader des solutions IoT et open source, confirme sa solide expertise sur le marché de l’embarqué en participant activement à la course de vélos solaires du Sun Trip Tour.

[03/07/2017] Smile remporte le Drupagora d'Or 2017 du meilleur site e-commerce

Le vendredi 30 juin, la 3ème édition des Drupagora d'Or s'est déroulée à Paris.

Toutes les actualités picto
       

Vous avez besoin de mettre à jour votre Lecteur Flash Flash 7

Guillemet ouvrant l'actualité des solutions
et des technologies open source Guillemet fermant
picto

Magento 1.x : ça travaille dur

Alors que l'on aurait pu croire que l'ensemble des ressources était focalisé sur la prochaine version majeure (officiellement annoncée durant le Developers Paradise 2011), il se trouve que les développeurs de Magento continue d'annoncer des fonctionnalités majeures pour les versions 1.6 Community et 1.11 Enterprise. Jugez plutôt par vous même.

Support de bases de données multiples

Jusqu'à aujourd'hui Magento ne supportait qu'un seul gestionnaire de base de données : MySQL. Les versions 1.6 et 1.11 de Magento supporteront désormais aussi les bases de données Oracle et MS SQL.
Cette stratégie vise à permettre aux administrateurs et aux entreprises ayant investi dans ces technologies de capitaliser sur ces acquis et de réduire leur besoin de formation.
Ce support a été obtenu par une refonte ingénieuse de la couche de persistance de Magento qui montre une nouvelle fois la compétence en terme de design applicatif des équipes de développements de Magento. Cette refonte permet de factoriser le code commun à tous les gestionnaires et de ne gérer que les différences au sein de Helper spécifiques à chacun d'entre eux.
Pour les applications existantes, la transition devrait se gérer de manière transparente.

Gestion des retours produits (RMA) :

Cette fonctionnalité devrait ravir un certain nombre de nos clients, bien qu'elle soit réservée à l'édition Enterprise de Magento. On devrait avoir droit à une gestion paramétrable du workflow de gestions des retours. Chaque marchand pourra ainsi avoir un backoffice Magento en accord avec leur circuit de retour.

Intégration des transporteurs :

Une intégration plus avancée des transporteurs (notamment UPS, DHL) permettra de lancer des impressions d'étiquettes de transport.

Persistance de session

Le terme peut paraître rebutant mais la fonctionnalité n'en est pas moins intéressante : il s'agit pour un client d'accéder à son panier, à sa liste de produits préférés et pour le marchand d'utiliser les fonctionnalités de segmentation, sans que le client soit identifié et depuis plusieurs supports de lecture (Android, PC...).

Magento 2 : l'avenir

Bien que l'annonce du rachat de Magento par eBay ait suscitée un important intérêt, elle n'a pas réussi à éclipser ce qui fût l'autre annonce majeure des conférences autour de Magento 2. A ce stade toutes les annonces ont été entourées du conditionnel de rigueur à ce stade du projet.

Les objectifs :

Lorsque l'on s'engage sur le développement d'une nouvelle version majeure d'un logiciel, il faut avoir de bonnes raisons. Ceci est d'autant plus vrai que l'on a à faire à une application de taille importante. L'équipe de Magento a donc fixé quelques objectifs :

  • Améliorer l'architecture avec notamment une réduction forte du couplage entre les différents modules et une réécriture d'une partie de la couche de persistance de données.
  • Améliorer les performances. Souvent vu comme l'un des talons d'Achille de Magento, les performances auraient été améliorées de 20% à ce stade précoce du développement.
  • Réduire la durée de montée en compétence technique. L'autre faiblesse de Magento selon beaucoup de développeurs. Magento 2 devrait permettre de simplifier la vie des développeurs notamment pour ce qui est de la partie design des applications.
  • Code testé. La taille atteinte par le projet nécessite de passer aux tests automatiques. L'équipe met en place des tests unitaires, fonctionnels et de performances.
  • Transparence du processus de développement : Magento devrait prochainement ouvrir un accès en lecture à son outil de gestion de projet. Cela devrait permettre de suivre l'avancement et le backlog de l'application donnant une réelle visibilité sur l'état d'avancement et les nouveautés apportées.

Et concrètement, ça donnera quoi ?

PHP 5.3

Magento 2 devrait s'appuyer sur certaines nouvelles fonctionnalités du langage et ne sera donc à priori pas compatible avec les versions antérieures de PHP. On parle notamment beaucoup de l'utilisation des namespaces de PHP 5.3.

Zend Framework :

A ce sujet, l'équipe de développement n'a rien arrêté à ce jour. En effet la sortie de Zend Framework 2.0 en version stable a été décalée à plusieurs reprises. L'équipe ne s'interdit pas son inclusion à la condition que sa date de sortie soit compatible avec le planning du projet. Dans le cas contraire, l'utilisation de Zend Framework 1.x sera conservée.

jQuery :

Magento 2 devrait voir l'abandon de Prototype au profit de jQuery. Au delà des guerres de chapelles, il s'agit à mon avis avant tout d'un choix pragmatique résultant de la plus grande popularité de ce dernier. Il est ainsi plus aisé de trouver des ressources compétentes pour jQuery que pour Prototype.

Le design : héritage des thèmes et édition drag and drop

Magento 2 devrait introduire quelques nouveautés dans la gestion des design parmi lesquelles l'héritage des thèmes (une petite fonctionnalité bienvenue) ainsi que la capacité d'utiliser un mode drag and drop pour construire les pages (une fonctionnalité déjà à l'œuvre dans Magento Go).

Une refonte de la couche de persistance

Parmi les modifications qui devraient avoir l'impact le plus grand sur notre manière de travailler avec Magento 2, la plus importante est sans nul doute la refonte de la couche de persistance des données. Celle-ci devrait être fortement inspirée par ce que l'ORM Doctrine propose (l'équipe de développement s'est même posée la question de l'inclusion de ce dernier).

Le chargement et la sauvegarde d'un objet sont respectivement réalisés via :

$object->load($id)
et
$object->save();

Sous Magento 2, il semble que les développeurs se dirigent vers la mise en place d'un entity manager qui aurait la responsabilité de la persistance des objets. Le code précédant pourrait devenir :

$object = $entityManager->load($type, $id)
et
$entityManager->save($object);

Ces changements sont majeurs et potentiellement très impactants pour nous autres développeurs. Il faut cependant comprendre la logique architecturale prônée par les développeurs de Magento pour mieux l'apprécier. Dans la version actuelle de Magento, la triplette (Model, Resource, Collection) doit être déclarée pour chaque modèle. Dans le nouveau modèle, seule la classe Model resterait. Cela réduirait considérablement la complexité du modèle de Magento.

D'un point de vue architectural :

  • la couche modèle n'implémente plus que la logique métier des modèles
  • la couche de persistance est un service de l'application isolé via l'entity manager

Cet assainissement devrait néanmoins avoir quelques inconvénients par rapport au système actuel. Le plus important sera sans nul doute l'obligation supposée de déclarer tous les champs persistants dans les modèles.

Découplage des modules

L'interdépendance entre les modules devrait être largement réduite dans Magento 2. Le but avoué est que l'on puisse se passer de n'importe quel modules de Magento. Pour obtenir ce résultat, les modules actuels devraient subsister mais encapsulés dans des ensembles de plus haut niveau nommés composants.
Les modules ne pourront dépendre uniquement que de modules appartenant au même composant qu'elle. Une interdépendance entre composant devrait venir se greffer à ce modèle.
Cela devrait permettre d'identifier plus facilement les différents couplages au sein de l'application. Par ailleurs, l'équipe est engagée dans un travail qui devrait lui permettre d'identifier les couplages fort qui ne sont pas strictement nécessaires au sein de l'application et qui pourraient être remplacés par des liens plus faibles. L'une des pistes est de réduire au maximum les appels directs entre les modules en s'appuyant encore plus fortement sur les observers.

Conclusion :

Cette version majeure de Magento devrait être disponible fin 2012, avec une version alpha en avance sur ce calendrier. Les changements apportés devraient modifier substantiellement notre manière de travailler sans toutefois remettre en cause les grands principes de Magento. De ce que nous savons aujourd'hui, nous assistons plus à un grand refactoring pragmatique qu'à une réécriture complète.

Aurélien Foucret
picto

Commentaires

Soyez la premiere personne à ajouter un commentaire sur cet article.
Ecrire un nouveau commentaire