Ces 6 derniers mois, j'ai fait pas mal de R&D autour du produit Magento.
Je ne vous livre pas ici mes convictions sur le produits, mais juste une cartographie globale de la séquence d'exécution d'une requête Magento.
Architecture
Magento demystified : global picture de la séquence d'exécution d'une requête Magento
Le Mode Hébergé (ou Application Service Provider) : où comment changer le business model de votre client
J'ai récemment répondu à un appel d'offres concernant la conception et le développement d'une base de données centralisée sur des données géographiques, je livre ici quelques pensées et remarques liées à cette réponse
Web Services : Avoir le réflexe mise en cache pour optimiser la charge serveur
Vous avez développé votre tout dernier web service destinés à être utilisé par 2 ou 3 autres équipes en interne (voire en externe par des partenaires).
Il (le web service) fonctionne bien, tellement bien, que vous commencez à avoir plusieurs dizaines de requêtes par jour. ...
1 application = de multiples contextes d'exécution
Votre application PHP (script, pages, sites, application complexe) est avant tout développée pour être exécutée dans un contexte unique :
- soit par serveur web
- soit en ligne de commande
- soit sous forme d'application graphique
(dans la majeure partie des cas) ...
Le pattern Adapter : Quezako par l'exemple
Imaginons une classe qui est censé fournir une liste de villes et de départements qui seront utilisés dans une balise HTML select pour permettre à un internaute de sélectionner sa ville de naissance à partir d'une liste.
Nous commençons simplement par récupérer la liste des villes disponibles dans un fichier texte CSV ayant la structure suivante : ...
Commentaires récents
Tres bien presente! :)
Juste une remarque :
"$adapter = new CsvAdapter;
$adapter->setFile('villes.csv');"
-> Visiblement la methode setFile a ete oubliee dans l'implementation de l'adapter.
De la meme maniere j'ajouterais une methode setTable() a la classe DatabaseAdapter, ca rendrait ces 2 adapters encore plus versatiles!
En tout cas merci pour le post!
Joli :)
Que pense-tu d'APC ou memcached, pour le coup?
Cela fera certainement l'objet d'un ou plusieurs autres articles ;) j'ai un penchant pour APC, que j'active systématiquement en production.
Pourquoi pas utiliser memcache?
Ton objet serait stocké dedans par l'appli, et recraché par le script PHP. Tu évite ainsi des accès disques.
Est-ce qu'on peut dire que c'est du cloud computing ?
Pour ma part, j'aurais séparé PHP et MySQL, cela permettra de créer si besoin un cluster en fonction de la charge à prévoir.
Je n'ai pas compris cette notion de Serveur Mandataire, ça ne peut pas être fait par le serveur Web ou PHP ?
Le reverse-proxy est à mon sens géré par l'hébergeur, donc techniquement je n'en parlerai pas dans la réponse. Et puis au final je ne parlerai même pas de PHP ou de MySQL, car pour ton client qui n'a pas de ressource technique ni peut-être de connaissance cela ne lui dit rien.
Par contre, il faudrait accès ton discours autour du gain apporté..
Qu'en pensent les autres ??
Bonne journée
S.
@metagoto: d'après la définition Wikipédia (et celle que j'avais en tête), il ne s'agit pas vraiment de cloud computing, car dans ce cas là le client est "propriétaire" de l'infrastructure et doit gérer le capacity planning notamment. Source: http://fr.wikipedia.org/wiki/Cloud_computing
@syndrael: Bonne remarque concernant la séparation PHP/MySQL. Je n'ai pas jugé utile de le faire dans cette version de la plateforme car nous prévoyons des volumétries relativement modestes, et le client souhaite pouvoir maintenir ou faire maintenir l'application et la plateforme par des partenaires plutôt web agency dans le futur (boite locale). Concernant le reverse-proxy, j'aurais effectivement pu utiliser les mécanisme de load balancing proposé par l'hébergeur (optionnel, pas dispo en standard), je souhaitais avoir un peu plus de flexibilité et pouvoir brancher mon propre monitoring. Concernant le gain apporté, je ne vous ai pas publié la propale ;) mais elle était suffisamment fourni sur ces aspects. Merci pour tes retours !
Je serait curieux de savoir quel logiciel vous avez utilisé pour faire les schémas. Dia ou autre ?
Merci.
@Jonas: J'ai utilisé Powerpoint v2007 ;)
Qu'entendez-vous par "R&D autour du produit Magento" ? Avez-vous participé au projet ?
Prévoyez-vous un billet sur vos "convictions sur le produit" ?
Merci de vos réponses.
"Je ne vous livre pas ici mes convictions sur le produits"
C'est fort dommage !
Voilà les miennes: http://www.desfrenes.com/blog/post/...
Quel outil as-tu utilisé pour générer un tel graphe ?
C'est très intéressant comme analyse, pour n'importe quelle application.
Les convictions, c'est que Magento est une usine à gaz ?
Bonjour, simple question d'ordre pratique : comment faire pour réaliser ce genre de graphe ? Merci
Moi je serais quand même curieux de connaître tes opinions sur ce produit, même si c'est par mail (tu la vois la perche ?) ;-)
@David: Dans le cadre d'une collaboration avec une société française spécialisé dans l'eCommerce et le développement "rapide" de sites eCommerce pour des marques, nous avons fait de la recherche et développement sur le produit Magento (version Community et Enterprise) pour mettre en oeuvre une démarche TDD (Test-First) permettant le développement piloté par les tests (unitaires) sous Magento. Dans ce cadre, nous avons du analyser le produit (techniquement) et comprendre le design, et les patterns / antipatterns d'architecture utilisé. Nous avons détecté un certains nombre d'anti-patterns. Je n'ai pas participé au projet Magento personnellement, mais j'ai *assez* bien compris la topologie du code ;)
@desfresnes,@metagoto,@herve: Je vois que mes "convictions" sur le produit vous intéressent ;) Ce n'était effectivement pas l'objet de mon post. Il est possible que j'écrive un article dans les prochains mois sur le sujet, même si je ne l'avais pas priorisé pour l'instant. Cependant, en résumé voici ce que je pense "magento est le meilleur progiciel d'eCommerce du marché sur le plan des fonctionnalités, de la communauté, de la facilité de mise en oeuvre notamment, par contre quand on ouvre le capot on comprend vite que beaucoup de principe d'architectures et de bonnes pratiques qui garantissent la pérennité et la maintenabilité du produit n'ont pas été mise en oeuvre". Je serais curieux de voir ce que sera devenu ce produit dans 2 ans, et surtout combien cela coutera à maintenir chez Varien. Je suis assez "interloqué" par la complexité technique interne... Le code n'est pas vraiment "lisible" pour un nom initié.
@nanomag,@herve: cela ne va pas vous plaire ;) : le logiciel utilisé est FreeMind + mon analyse statique "à la main" du code de bootstrap de Magento. Aucun logiciel automatisé n'a été utilisé pour réaliser ce schéma, d'un autre côté, il ne m'a pas fallu plus d'1h pour le réaliser, en suivant les différentes instructions en séquence.
Bonsoir,
En ce qui me concerne j'avais lu des commentaires sur sa capacité (ou pas justement) à tenir la charge dans le cas d'un catalogue produits assez étoffé.
Hervé