Upload
fabien-gasser
View
4.815
Download
1
Embed Size (px)
DESCRIPTION
Comment construire un environnement e-commerce complet avec Symfony 2 ?
Citation preview
Symfony2 & e-commerce
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
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.
4
5
Catalogue
PIM
Clients
CRM Compte
client
Commandes
Panier Order
Manager
Symfony 2 et E-commerce
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
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
9
Drupal
Leaphly
Vespolina
Sonata
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 !
11
Référentiel :
prix, produits,
stocks,
catégories
25%
Client
10%
Paiement
5%
Commande
20%
Flux
30%
SEO, analytics
2%
Recherche
8%
12
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 ?
14
Desktop Tablet Mobile
Recherche
CSS
HTML
Javascript
Ressource We
b C
om
po
san
t
Co
mm
en
taire
s
Pa
nie
r
Re
ch
erc
he
Website
We
b C
om
po
san
t
Middleware
API HATEOAS Json-ld
ETL
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
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
17
18
Référentiel
Assets et images
Order Manager
Flux
Clients
CRM
Recherche et recommandation
CMS
Paiement
Les soldes !!!
19
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
21
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
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
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
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
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
27
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
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
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)
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