Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Comment construire un environnement e-commerce complet avec Symfony 2 ?

Comment construire un environnement e-commerce complet avec Symfony 2 ?

Fabien Gasser

April 07, 2014
Tweet

Other Decks in Programming

Transcript

  1. 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…
  2. 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.
  3. 4

  4. 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
  5. 8 Applications Middleware Database Infrastructure Commandes PIM ERP CRM Sf2

    Middleware BI DAM Clients Catalogue Order Manager WebApp Borne Web CMS Recherche Panier Grid Tunnel Merch Search
  6. 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 !
  7. 11 Référentiel : prix, produits, stocks, catégories 25% Client 10%

    Paiement 5% Commande 20% Flux 30% SEO, analytics 2% Recherche 8%
  8. 12

  9. 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 ?
  10. 14 Desktop Tablet Mobile Recherche CSS HTML Javascript Ressource Web

    Composant Commentaires Panier Recherche Website Web Composant Middleware API HATEOAS Json-ld ETL
  11. 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
  12. 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
  13. 17

  14. 18 Référentiel  Assets et images Order Manager Flux Clients

     CRM Recherche et recommandation CMS Paiement Les soldes !!!
  15. 19

  16. 20 Construire un référentiel produits: Akeneo PIM ERP images Sources

    de donnees tierces Videos PIM chercher enrichir traduire maintenir E-store Mobile Point de vente Print
  17. 21

  18. 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.
  19. 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
  20. 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 !!!
  21. 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
  22. 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
  23. 27

  24. 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…
  25. 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
  26. 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édition Paiement simple Remboursement partiel/total depuis le Back-Office Paiement Cross-Canal Autorisation simple (vérification de la validité de la carte)
  27. 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