32
Symfony2 & e-commerce

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Symfony2 & e-commerce

Page 2: Comment construire un environnement e-commerce complet avec Symfony 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…

Page 3: Comment construire un environnement e-commerce complet avec Symfony 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.

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

4

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

5

Catalogue

PIM

Clients

CRM Compte

client

Commandes

Panier Order

Manager

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

Symfony 2 et E-commerce

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

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

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

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

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

9

Drupal

Leaphly

Vespolina

Sonata

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

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 !

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

11

Référentiel :

prix, produits,

stocks,

catégories

25%

Client

10%

Paiement

5%

Commande

20%

Flux

30%

SEO, analytics

2%

Recherche

8%

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

12

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

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 ?

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

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

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

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

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

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

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

17

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

18

Référentiel

Assets et images

Order Manager

Flux

Clients

CRM

Recherche et recommandation

CMS

Paiement

Les soldes !!!

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

19

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

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

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

21

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

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.

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

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

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

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 !!!

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

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

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

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

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

27

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

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…

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

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

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

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)

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

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

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