2. 2
@fabien_gasser
Consultant avant-vente @ Smile
Ex Project Manager @ SensioLabs
Passions : rap français – e-commerce
Smile intégrateur de solutions open
source
Plus de 60 projets de plus 250 jours
Magento, Drupal, Jahia, Liferay, Sf2, Spring…
E-commerce
o 10 millions de produits et plus…
o 200 pages / secondes et plus
o Multi Store, Multi Marchand, Multi Canaux,
Marketplace…
3. 3
Différents types d’e-commerces
B2C
o e-shop : Unkut, Marketplace : Fnac, Drive : Chronodrive, Auchan Drive…
o Abonnement : Birchbox
o Ventes flash : Voyages privés
B2B prix négocié par client :
o gestion de CE, vente de voitures…
…
Il faut concentrer ses forces sur le métier pour créer du lien avec
le client et le faire revenir
Alternative : avoir un produit incroyable… sans aucune concurrence.
7. 7
« Nous voulons faire de Symfony le standard du middleware PHP »
Symfony 2 comme Middleware : le liant applicatif
Le développement spécifique sert à combler le gap entre les progiciels référents et
le besoin client.
o Respect des domaines fonctionnels
10. 10
Il est tentant de réunir l’ensemble des besoins dans une même
application.
!!! Difficulté de maintenance
!!! Règles métiers complexes et inutiles
Modification de la structure d’un outil
Faire d’un blog un e-commerce…
Il faut séparer les deux applications
o CMS
o E-commerce
On ne fait pas des slides avec Excel !
13. 13
Faisons des choses plus petites et réduisons le couplage !
Core API
Une gestion fine des ACL via un serveur oauth, autres…
Concevoir des applications par domaine : faire peu mais faire mieux
o Faciliter la mise à jour d’un service / sa maintenance / sa disponibilité
Oublions les applications monolithiques
o La segmentation applicative à partir des Controlleur n’est pas suffisante
Et si on envisageait la segmentation par domaine fonctionnel ?
15. 15
Représentation
Hateoas + HAL
json/xml/messagepack
Microformats
Stateless : scalabilité horizontale
Sécurisé : SSL + token
Test facile et documentation
automatique NelmioApiBundle
Gestion de version applicative
Varnish pour définir la fréquence
de rafraichissement des données
16. 16
Redis : cache, session, queues
Videz le cache Varnish / CDN quand vous modifiez une information produit /
catalogue…
Si vous n’avez pas de calcul à faire sur votre catalogue (création de vue), prix le
plus le bas… Stockez le dans Solr ou Elasticsearch : scalable, API Rest
Ayez des alertes sur vos services et flux : New Relic, Monitoring…
N’ayez pas peur d’utiliser des services tiers :
Prediggo, Compario, LiveFyre, Gigya…
Les bundles
Socle : MSSecurityExtraBundle, StofDoctrineExtensionBundle, LiipCacheControlBundle, MonologBundle,
Symfony-cmf/Routing, TemplatedUriBundle
API : JMSSerializerBundle, FosRestBundle, BazingaHateoasBundle, NelmioApiDocBundle,
BazingaFakerBundle
22. 22
La gestion des images, medias :
KnpLabs/KnpGaufretteBundle : s3, MongoGridFS
Sonata Media Bundle
Thumbor : service intelligent de gestion d’images (Détections de visages, motifs)
Interface intelligente de gestion des medias ? Ckfinder ?
Mise en place de queue de traitement asynchrone pour les
traitements de masse.
23. 23
La gestion des commandes est un des nerfs de la guerre
Créer une machine à état grâce aux bundles :
github.com/yohang/Finite
DoctrineStateMachineBundle
Gestion des différents états de la commande ou du panier
Une tâche en parallèle vérifie les états des commandes pour déclencher des
actions
Liée à des systèmes tiers comme la notification de paiement ou de
remboursement, la gestion d’abonnement…
Votre e-commerce n’est pas un outil de Business Intelligence,
gardez uniquement des KPI simples sur votre interface
d’administration
24. 24
Un e-commerce est une solution dialoguant avec de nombreux
interlocuteurs
ESB ERP CRM BI WMS DAM MARKETPLACE (lengow, mirakl…)
Dans différents formalismes :
SOAP REST EDI CSV...
HATEHOAS Messapack pour les applications mobiles
Organisation votre modèle de données
Modèle de base pour gérer votre modèle
Créer des services pour manipuler vos interfaces SOAP / REST exposées
MONITORER LES FLUX !!!
25. 25
Créer une base client unique et partagée avec vos différentes
applications
Utilisateur :
o FosUserBundle
o HWIOAuthBundle
o FosCommentBundle
o …
SonataAdminBundle
Centraliser les événements utilisateurs et suivre l’activité de ses
utilisateurs
Real user monitoring / New Relic Insight
26. 26
Rester en contact avec ses clients : OroCRM
Segmentation client
Tâches et rappels
Processus de ventes
Des fonctionnalités orientées e-commerce
Panier abandonné
Suivi utilisateur
28. 28
La Recherche :
Intégration Elastic Search ou Solr pour indexer la PIM et bénéficier des avantages
d’un moteur de recherche
o API REST
o Fonctionnalités liées à un moteur de recherche
Recommandation : up sell, cross sell…
Ajout de la gestion d’affinité produit à chaque achat ou création de liste de
produits pour effectuer un système de recommandation simple
Définition de règle métier avec ExpressionLanguage pour l’association de produit
Intégrer des outils tiers : Prediggo, Fred Hopper, Compario…
29. 29
CMS & Merchandising : Drupal 8, Sulu CMF, Bolt
Placer du contenu CMS pour faire vivre vos catégories
Le contenu des experts, le rappel concernant la sécurité de paiements
ESI / SSI / Hinclude / pjax / turbolinks
Content as a Service / Data as a Service
Sulu.io
Pagekit
30. 30
Intégration des moyens de paiements
Paiement : intégration d'un prestataire monétique :
o PayumBundle
Utilisez un PSP – payment service provider : be2bill, paybox…
o Facilité d’ouverture de nouveaux de pays
o Gestion de la fraude
o API de gestion des paiements
Paiement One-Click Paiement 3 x sans frais
par CB
(et relances automatique)
Paiement à l’expéditionPaiement simple
Remboursement
partiel/total depuis le
Back-Office
Paiement Cross-Canal Autorisation simple
(vérification de la validité de
la carte)
31. 31
200 pages / seconde et plus…
Prévoir un fallback sur les pages les plus consommatrices : une version dégradée
de l’application.
Prévoir son application stateless de façon à faciliter la scalabilité horizontale
Découplage des services et des sites
Ratchet ? WebRTC ?
Hébergement scalable
Cluster de base de données et d’indexation
Création d’instance à la volée pour s’adapter à la charge :
o Docker, Serf, Mesos…
Predictive auto-scaling (Scryer/Netflix) Traffic pattern : variable