Symfony2 & eCommerce
2
@fabien_gasser
 Presales consultant @ Smile
 Ex Project Manager @ SensioLabs
 Hobbies: rap music & eCommerce
Smile - Open source solutions
provider
 More than 60 projetcs > 250 men.days
 Magento, Drupal, Jahia, Liferay, Sf2, Spring…
 eCommerce
o > 10 millions of products managed…
o > 200 pages served per second
o Multi Store, Multi Merchant, Multi Channel,
Marketplace…
3
Different eCommerce types
 B2C
o eShop:Unkut, Marketplace:Fnac, Chronodrive, Auchan Drive…
o Subscription:Birchbox
o Flash sales:Private journeys
 B2B with price negotiated for each customer:
o Managment of enterprises’ committees, cars sales…
 …
We should focus our strength on our business to create a
relationship with the customer and develop loyalty
 Alternative:Design an incredible product… without any competitor.
4
5
Product
catalog
PIM
Customers
CRM
Customer
account
Orders
Shopping
cart
Order
Manager
Symfony 2 & eCommerce
7
« Symfony should become the standard as a PHP middleware »
 Symfony 2 as Middleware: an applicative glue
 Specific development mind the gap between the best softwares and customer
requirements.
o Respect functional areas
8
Applications
Middleware
Database
Infrastructure
Orders
PIM
ERP
CRM
Sf2 Middleware
BIDAM
Customers
Product
catalog
Order
Manager
WebApp Borne Web
CMS
Search
Shopping cart Grid Checkout Merch Search
9
Drupal
Leaphly
Vespolina
Sonata
10
Even though it’s interesting to meet all
business requirements within the same
application
 !!! Difficult to maintain
 !!! Complex and unuseful business rules
 Changes on the solution core
Making e-commerce with a blogging
solution… No !
 Separation of concern : CMS / E-commerce / BI
Your e-commerce is not a business
intelligence tool : keep simple kpi on your
dashboard but use a real tool like Pentaho
or JasperSoft for your BI
We don’t do slides with Excel
11
12
Do smaller things and reduct the coupling of apps
 Core API
 Fine management of ACL through an oauth server for instance…
 Design applications by domain:Doing less but doing better
o Facilitate the update of a service / its maintenance / its availability
 Let‘s forget monolithic applications
o The applicative segmentation by controlers is not enough
 Why not considering a segmentation by functional domain ?
13
Desktop Tablet Mobile
Search
CSS
HTML
Javascript
Resource
WebComponent
Comments
Panier
Recherche
Website
WebComponent
Middleware
API HATEOAS
Json-ld
ETL
14
Representation
 Hateoas + HAL
 json/xml/messagepack
 Microformats
Stateless:Horizontal scalability
Security: SSL + token
Easy testing and automated
documentation NelmioApiBundle
Applicative versioning
Tip: Use Varnish to define frequency
of data update
15
Redis:cache, session, queues
Empty Varnish cache / CDN when you modify a product information…
If you don’t have to calculate the catalogue, then save it within
Elasticsearch/SolR: scalable, API Rest
Get some alerts on services and data flows:New Relic, Monitoring…
Don’t be afraid to use third-party services:
 Prediggo, Compario, LiveFyre, Gigya…
The bundles
 Core:MSSecurityExtraBundle, StofDoctrineExtensionBundle, LiipCacheControlBundle,
MonologBundle, Symfony-cmf/Routing, TemplatedUriBundle
 API:JMSSerializerBundle, FosRestBundle, BazingaHateoasBundle, NelmioApiDocBundle,
BazingaFakerBundle
16
17
Repository
 Assets & pictures
Order Manager
Data flows
Clients
 CRM
Search and recommendation
CMS
Payment
Sale
18
19
Product management with Akeneo PIM
ERP
images
Third part data
source
Videos
PIM
Search
Enrich
Translate
Maintain
E-store
Mobile
POS
Print
20
21
Media management:
 KnpLabs/KnpGaufretteBundle:s3, MongoGridFS
 Sonata Media Bundle
 Thumbor:service intelligent de gestion d’images (Détections de visages, motifs)
Smart interface for media management ? Ckfinder ?
Mass processing with an asynchronous queue
22
Order Manager system is the heart of your e-commerce
Create Finite State Machine thanks to the bundles
 github.com/yohang/Finite
 DoctrineStateMachineBundle
Manage various state for order, quote or cart
 A parralel task will check the state of the order to fire actions
 Manage easily actions around your orders: paiement notification or refund,
subscription system
23
An e-commerce platform communicates with several third-parties
 ESB ERP CRM BI WMS DAM MARKETPLACE (lengow, mirakl…)
With different formalisms:
 SOAP REST EDI CSV...
 HATEHOAS Messapack for mobile applications
Organization of the database model
 Create services to manipulate your SOAP / REST exposed interfaces
MONITOR data flows !!!
24
Create a unique base of clients and share it with applications
 User:
o FosUserBundle
o HWIOAuthBundle
o FosCommentBundle
o …
 SonataAdminBundle
Centralize the user events and follow the activity of users
 Real user monitoring / New Relic Insight
25
Keep in contact with its clients: OroCRM
 Client segmentation
 Task and call back
 Sales processing
e-commerce oriented features
 Abandonned carts
 User monitoring
26
27
Search:
 Implementation of Elasticsearch or Solr to index the PIM and take the benefit of the
search engine
o API REST
o Search features
Recommendation: up sell, cross sell…
 Management of affinitiy with a product at every purchase or creatino of product list
to make a simple recommendation
 Design of business rules with ExpressionLanguage to associate a product
Implement third-party solutions such as: Prediggo, Fredhopper,
Compario…
28
CMS & Merchandising: Drupal 8, Sulu CMF, Bolt
 Place CMS content to animate category pages
 Expert content, security of payments
 ESI / SSI / Hinclude / pjax / turbolinks
 Content as a Service / Data as a Service
Sulu.io
Pagekit
29
Implementation of payment solutions
 Paiement: Integration of a monetic supplier
o PayumBundle
 Use a PSP – payment service provider: be2bill, paybox…
o Ease of inception in a new country
o Fraud management
o REST API
One-click payment Payment in 3 times
withouth fee
Payment at deliverySimple payment
Partial or total refund Cross-chanel payment Simple
aknowledgement
30
200 pages / second and more…
 Prévoir un fallback sur les pages les plus consommatrices:une version dégradée
de l’application.
 Plan its stateless application in order to facilitate horizontal scalability
 Decoupling services and sites
 Ratchet ? WebRTC ?
Scalable hosting
 Cluster of databases and indexes
 On the fly creation:
o Docker, Serf, Mesos…
 Predictive auto-scaling (Scryer/Netflix) Traffic pattern:variable
Symfony 2 & e-commerce ecosystem  - Now in english !

Symfony 2 & e-commerce ecosystem - Now in english !

  • 1.
  • 2.
    2 @fabien_gasser  Presales consultant@ Smile  Ex Project Manager @ SensioLabs  Hobbies: rap music & eCommerce Smile - Open source solutions provider  More than 60 projetcs > 250 men.days  Magento, Drupal, Jahia, Liferay, Sf2, Spring…  eCommerce o > 10 millions of products managed… o > 200 pages served per second o Multi Store, Multi Merchant, Multi Channel, Marketplace…
  • 3.
    3 Different eCommerce types B2C o eShop:Unkut, Marketplace:Fnac, Chronodrive, Auchan Drive… o Subscription:Birchbox o Flash sales:Private journeys  B2B with price negotiated for each customer: o Managment of enterprises’ committees, cars sales…  … We should focus our strength on our business to create a relationship with the customer and develop loyalty  Alternative:Design an incredible product… without any competitor.
  • 4.
  • 5.
  • 6.
    Symfony 2 &eCommerce
  • 7.
    7 « Symfony shouldbecome the standard as a PHP middleware »  Symfony 2 as Middleware: an applicative glue  Specific development mind the gap between the best softwares and customer requirements. o Respect functional areas
  • 8.
  • 9.
  • 10.
    10 Even though it’sinteresting to meet all business requirements within the same application  !!! Difficult to maintain  !!! Complex and unuseful business rules  Changes on the solution core Making e-commerce with a blogging solution… No !  Separation of concern : CMS / E-commerce / BI Your e-commerce is not a business intelligence tool : keep simple kpi on your dashboard but use a real tool like Pentaho or JasperSoft for your BI We don’t do slides with Excel
  • 11.
  • 12.
    12 Do smaller thingsand reduct the coupling of apps  Core API  Fine management of ACL through an oauth server for instance…  Design applications by domain:Doing less but doing better o Facilitate the update of a service / its maintenance / its availability  Let‘s forget monolithic applications o The applicative segmentation by controlers is not enough  Why not considering a segmentation by functional domain ?
  • 13.
  • 14.
    14 Representation  Hateoas +HAL  json/xml/messagepack  Microformats Stateless:Horizontal scalability Security: SSL + token Easy testing and automated documentation NelmioApiBundle Applicative versioning Tip: Use Varnish to define frequency of data update
  • 15.
    15 Redis:cache, session, queues EmptyVarnish cache / CDN when you modify a product information… If you don’t have to calculate the catalogue, then save it within Elasticsearch/SolR: scalable, API Rest Get some alerts on services and data flows:New Relic, Monitoring… Don’t be afraid to use third-party services:  Prediggo, Compario, LiveFyre, Gigya… The bundles  Core:MSSecurityExtraBundle, StofDoctrineExtensionBundle, LiipCacheControlBundle, MonologBundle, Symfony-cmf/Routing, TemplatedUriBundle  API:JMSSerializerBundle, FosRestBundle, BazingaHateoasBundle, NelmioApiDocBundle, BazingaFakerBundle
  • 16.
  • 17.
    17 Repository  Assets &pictures Order Manager Data flows Clients  CRM Search and recommendation CMS Payment Sale
  • 18.
  • 19.
    19 Product management withAkeneo PIM ERP images Third part data source Videos PIM Search Enrich Translate Maintain E-store Mobile POS Print
  • 20.
  • 21.
    21 Media management:  KnpLabs/KnpGaufretteBundle:s3,MongoGridFS  Sonata Media Bundle  Thumbor:service intelligent de gestion d’images (Détections de visages, motifs) Smart interface for media management ? Ckfinder ? Mass processing with an asynchronous queue
  • 22.
    22 Order Manager systemis the heart of your e-commerce Create Finite State Machine thanks to the bundles  github.com/yohang/Finite  DoctrineStateMachineBundle Manage various state for order, quote or cart  A parralel task will check the state of the order to fire actions  Manage easily actions around your orders: paiement notification or refund, subscription system
  • 23.
    23 An e-commerce platformcommunicates with several third-parties  ESB ERP CRM BI WMS DAM MARKETPLACE (lengow, mirakl…) With different formalisms:  SOAP REST EDI CSV...  HATEHOAS Messapack for mobile applications Organization of the database model  Create services to manipulate your SOAP / REST exposed interfaces MONITOR data flows !!!
  • 24.
    24 Create a uniquebase of clients and share it with applications  User: o FosUserBundle o HWIOAuthBundle o FosCommentBundle o …  SonataAdminBundle Centralize the user events and follow the activity of users  Real user monitoring / New Relic Insight
  • 25.
    25 Keep in contactwith its clients: OroCRM  Client segmentation  Task and call back  Sales processing e-commerce oriented features  Abandonned carts  User monitoring
  • 26.
  • 27.
    27 Search:  Implementation ofElasticsearch or Solr to index the PIM and take the benefit of the search engine o API REST o Search features Recommendation: up sell, cross sell…  Management of affinitiy with a product at every purchase or creatino of product list to make a simple recommendation  Design of business rules with ExpressionLanguage to associate a product Implement third-party solutions such as: Prediggo, Fredhopper, Compario…
  • 28.
    28 CMS & Merchandising:Drupal 8, Sulu CMF, Bolt  Place CMS content to animate category pages  Expert content, security of payments  ESI / SSI / Hinclude / pjax / turbolinks  Content as a Service / Data as a Service Sulu.io Pagekit
  • 29.
    29 Implementation of paymentsolutions  Paiement: Integration of a monetic supplier o PayumBundle  Use a PSP – payment service provider: be2bill, paybox… o Ease of inception in a new country o Fraud management o REST API One-click payment Payment in 3 times withouth fee Payment at deliverySimple payment Partial or total refund Cross-chanel payment Simple aknowledgement
  • 30.
    30 200 pages /second and more…  Prévoir un fallback sur les pages les plus consommatrices:une version dégradée de l’application.  Plan its stateless application in order to facilitate horizontal scalability  Decoupling services and sites  Ratchet ? WebRTC ? Scalable hosting  Cluster of databases and indexes  On the fly creation: o Docker, Serf, Mesos…  Predictive auto-scaling (Scryer/Netflix) Traffic pattern:variable