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.
7. 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
10. 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
12. 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 ?
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
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
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 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. 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. 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. 25
Keep in contact with its clients: OroCRM
Client segmentation
Task and call back
Sales processing
e-commerce oriented features
Abandonned carts
User monitoring
27. 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. 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 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. 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