SlideShare una empresa de Scribd logo
1 de 71
Descargar para leer sin conexión
When E-commerce meet Symfony
#SymfonyCon
@mmoreram
Elcodi
@mmoreram
Co-founder and lead at Elcodi
Organizer of Symfony Barcelona UG
Entrepreneur in AntaiVB - Barcelona
Maintainer of several open source Libs and Bundles
(GearmanBundle, ControllerExtraBundle, Visithor, php-
formatter, PaymentSuite…)
About this talk
E-commerce in PHP until 201*
E-commerce project life cycles
Architecture for pragmatic development
Symfony in action
3 tips about Elcodi
E-commerce + PHP
until 201*
Ideal Marc dialogue
Marc: Hey dude, how are you?
Ideal developer, in an ideal environment with an ideal
amount of money: …
Real Marc dialogue
Marc: Hey dude, how are you?
Real developer, in a real environment with a real amount
of money: …
What has happened here???
PHP Until 201*
PHP Full-stack projects based mostly on final user
needs
Old PHP code without change margin
Technological effort on maintenance over refactoring
Can these projects evolve?
PHP Until 201*
From the developer’s point of view…
Configuration
Configuration
Extension + Pain
Configuration
PHP Until 201*
No testing
No SOLID principles
PHP Until 201*
So… why are they that used?
A lot of users and developers have based their
companies on them (YAY! Me, want!)
BIG and Extremely well created plugin and template
markets
E-commerce with minimum time-to-market
Is that enough for me?
No is not!
:’(
E-commerce life cycle
MVP
Minimum Valuable Project
The minimum you need to make sure you can measure the
impact of your application - First stage… ALWAYS!
Small investment (FFF)
Small budget to spend on everything
Perfect for applications with advanced template and plugin
markets
MVP
Technology is not used to being important here
And, in fact, it should never be…
Most of times, projects die after this stage because the
market is not ready or the project is not valuable enough
Fast set-up technologies are used here
After MVP
Business Angels in action!
Bigger budget than before, but not as big as we’d love to
We can spend a little bit more on technology
This is where we need to make the difference, so…
Hello, Custom Business!!!
Bye Bye, 90% of all existing
plugins!!!
After MVP
This is where a lot of companies start a refactoring
process
This refactoring is used to costing too much money $$$
Everything is for yesterday :’(
Things are done poorly and rapidly
Pain^n
Do you know what this causes?
Sadness!
Frustration!
I hate E-commerce!
Bye Bye E-commerce!
After MVP : #tip
Choosing here your strategy can save your project!
As important as MVP, but even more difficult to manage
Smart decisions will be important
When Venture Capital
The amount of money is much bigger (shut up and take
my money…)
We are going to be a player, so our technology must be a
player as well
Time for do all these things you always had in mind
No excuses, you have to hire talent and be responsible
But you know what?
First of all, you need to
reach that point
Pragmatic
Architecture
Just some questions…
Is PHP the right platform for that?
“is it?”
“it is, why not?”
Just some questions…
From a technical point of view… what criteria should I
follow about when deciding an E-commerce platform?
Do I feel confortable working with it?
Will I be able to born with this project?
Plugins, Templates, User documentation
Will I be able to grow with this project?
Excellent technical documentation, Communication,
Community
Some tips
Will I be able to increase my skills as developer using
this technology?
Will I be able to do it… properly?
Will I (as a company) co-exist with this technology?
For how long?
Some tips
“Do I feel confortable working
with it?”
Just some questions…
Should I test my MVP application?
Some tips
Take a tested (or popular) platform when you need to
reach your MVP
If your project is not going to grow, take the project with
the most advanced plugin and template system. Forget
about everything else
You may not care about the roadmap of the project if
your project ends as soon as you finish it
Some tips
If your project is LTS, then… tests battery will only tell
you if the initial product works properly
You will really need tests after your MVP, and your
application will be completely different
You will have to do your own tests then. Be ready for that!
That one of the things you could invest on with your new
money :)
Just some questions…
What architecture should I use?
“What architecture I really need?”
Some tips
What architecture allow you to overwrite more easily
Cart, Product, Shipping, Payment
Admin functionalities, integrations, change capacity
What architecture allow your team to understand the business model?
What part of the application handles your business logic? Service layer?
Model? Commands + Controllers + EventListeners + Twig Extensions?
CQRS, Event-Driven Design… do you really know how it works?
Annotations at the beginning, maybe? Easier :)
Choose the architecture that
really fits your case
Some tips
As soon as your developers (or you) are better, then your
needs will be bigger and stronger
Technology will follow you, not vice versa
Don’t base your E-commerce on practices you don’t
really know how to handle with
And the more better you are…
… the more alternatives you’ll
find
Some tips
Annotations will become bad practices, maybe
You will understand that an Event Listener, for example,
should have 0 business Logic (Same as other entry points)
You will NEED tests in all your developments. Not for the
“tested” badge on Github, but only for you
You will understand as well why ValueObjects are great,
for example
Symfony in action
Symfony
What parts of Symfony can really help us on our
adventure <E-commerce case>!
Event Dispatcher
Symfony DIC
Tests integrations (PHPUnit, Behat, Visithor…)
Bundles
Event Dispatcher
Event-Driven Design is one of the most important things
when you want to build a Plugin-based environment
+Events = +Extension points = +Adopters =
+Integrations
DIC
How easy overwriting a service is by registering your
own service with the same name (after the original one)
Good for composition and inheritance
+Easy to overwrite = +Customizations = +Adopters =
+Installations
Tests integrations
Integrations with Testing Platforms
Behat Symfony2 Extension (Symfony3?)
Symfony PHPUnit Bridge
VisithorBundle
Bundles
Why a bundle is something relevant here?
How a bundle can help when trying to create a Plugin +
Template environment…
A Bundle can be a Plugin!
3 tips about Elcodi
Elcodi
Set of E-commerce PHP Components
Set of Symfony2 bundles for these components
Project called Bamboo. Full stack E-commerce based on
Elcodi + Symfony components and bundles.
http://github.com/elcodi
By giving us a star is like… Hey guys! You’re cool ;)
Elcodi Tip #1
Intended to be a great option for MVPs
Create a Plugin environment on top of Symfony Bundles
Template as a Plugin
Install in less than 2 minutes with Heroku (i.e.)
4 layers of testing
Elcodi Tip #1
[Components] PHPUnit for unit testing of our Service
Layer (classes)
[Bundles] PHPUnit for functional testing of our processes
(services, event listeners, event dispatchers…)
[Bamboo] Behat for behavioral testing (user processes…)
[Bamboo] Visithor just for testing the HTTP layer
(responses)
Visithor
http://github.com/visithor/VisithorBundle
You only need a single and small YAML file, and some
lines. One per route.
Define your routes by url, url name (Visithor) +
parameters (VitithorBundle)
Authenticate in a Firewall with a ROLE (Admin routes)
Visithor
Elcodi Tip #2
Intended to be a great option after MVP
Use Symfony ecosystem for evolving your project. No
refactoring needs
The project is built on top of some Best Practices, and is
treated with A LOT OF LOVE
Both developer and final user oriented. No one is less
important than the other one
Elcodi Tip #3
Community-Driven. Developers are the brain of any open
source project. Final users are the heart
The more happiness any open source project provides,
the more quality offers
Join us on this adventure :)
http://gitter.im/elcodi/elcodi
Elcodi Extra Tip
Elcodi (L) Symfony ^3.0.0 (December 2015)
Elcodi App Market (2016)
And… much, more, soon!
Emanuele Minotto, new Core dev :) Thanks dude!
TB;WS
TB;WS
Too Boring; Was Sleeping
TB;WS
Each E-commerce stage needs different strategies
Check all Symfony E-commerce solutions, and find the
one who REALLY makes you feel comfortable
And if you really love E-commerce… consider getting
involved in one of them, and spread the word :)
and meanwhile… read!
Q / A
Differences Elcodi - ~^.*$~
Elcodi is a ready-for-production project
We offer both a project and a way of doing, of
understanding open source and collaborative projects
Just make sure you discover this way of doing, and join us
if you really enjoy it
We are still waiting for your feedback and energy :)
Thanks!
Gràcies!
@mmoreram

Más contenido relacionado

La actualidad más candente

Understanding PHP memory
Understanding PHP memoryUnderstanding PHP memory
Understanding PHP memory
julien pauli
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
Xinchen Hui
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
julien pauli
 

La actualidad más candente (20)

Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)
 
Understanding PHP memory
Understanding PHP memoryUnderstanding PHP memory
Understanding PHP memory
 
PHP Optimization
PHP OptimizationPHP Optimization
PHP Optimization
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTS
 
PHP 5.6 New and Deprecated Features
PHP 5.6  New and Deprecated FeaturesPHP 5.6  New and Deprecated Features
PHP 5.6 New and Deprecated Features
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides22021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2
 
Php’s guts
Php’s gutsPhp’s guts
Php’s guts
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension review
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4
 
Building Custom PHP Extensions
Building Custom PHP ExtensionsBuilding Custom PHP Extensions
Building Custom PHP Extensions
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
Php 7 hhvm and co
Php 7 hhvm and coPhp 7 hhvm and co
Php 7 hhvm and co
 
How to inspect a RUNNING perl process
How to inspect a RUNNING perl processHow to inspect a RUNNING perl process
How to inspect a RUNNING perl process
 
10 Most Important Features of New PHP 5.6
10 Most Important Features of New PHP 5.610 Most Important Features of New PHP 5.6
10 Most Important Features of New PHP 5.6
 
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
 
Taming the resource tiger
Taming the resource tigerTaming the resource tiger
Taming the resource tiger
 
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
 

Destacado

Destacado (8)

Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
 
Sobreescritura y extensión de validaciones, formularios y entidades
Sobreescritura y extensión de validaciones, formularios y entidadesSobreescritura y extensión de validaciones, formularios y entidades
Sobreescritura y extensión de validaciones, formularios y entidades
 
Cucumbers Have Layers - RubyConf 2015
Cucumbers Have Layers - RubyConf 2015Cucumbers Have Layers - RubyConf 2015
Cucumbers Have Layers - RubyConf 2015
 
Matters of State
Matters of StateMatters of State
Matters of State
 
From * to Symfony2
From * to Symfony2From * to Symfony2
From * to Symfony2
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Guard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful SecurityGuard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful Security
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 

Similar a When e-commerce meets Symfony

Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev Playground
Factor-y S.r.l.
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround
 

Similar a When e-commerce meets Symfony (20)

Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
From open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysferaFrom open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysfera
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev Playground
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon Otto
 
Workshop Trends In Open Source Tech 1 20 10
Workshop Trends In Open Source Tech 1 20 10Workshop Trends In Open Source Tech 1 20 10
Workshop Trends In Open Source Tech 1 20 10
 
apidays LIVE Australia 2021 - Designing Embedded Platforms by Jeremy Glassenb...
apidays LIVE Australia 2021 - Designing Embedded Platforms by Jeremy Glassenb...apidays LIVE Australia 2021 - Designing Embedded Platforms by Jeremy Glassenb...
apidays LIVE Australia 2021 - Designing Embedded Platforms by Jeremy Glassenb...
 
Quality and the "Secret Mission:" From End-Stage Tester to Skilled Analyst
Quality and the "Secret Mission:" From End-Stage Tester to Skilled AnalystQuality and the "Secret Mission:" From End-Stage Tester to Skilled Analyst
Quality and the "Secret Mission:" From End-Stage Tester to Skilled Analyst
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
Kamon Ayeva Antipatterns, Patterns, And Rules Of Thumb For Successful Plone...
Kamon Ayeva   Antipatterns, Patterns, And Rules Of Thumb For Successful Plone...Kamon Ayeva   Antipatterns, Patterns, And Rules Of Thumb For Successful Plone...
Kamon Ayeva Antipatterns, Patterns, And Rules Of Thumb For Successful Plone...
 
How to choose appropriate technology for product development
How to choose appropriate technology for product developmentHow to choose appropriate technology for product development
How to choose appropriate technology for product development
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
CMs presentation March 2010
CMs presentation March 2010CMs presentation March 2010
CMs presentation March 2010
 
Bejug - Activiti in Action (part 1)
Bejug - Activiti in Action (part 1)Bejug - Activiti in Action (part 1)
Bejug - Activiti in Action (part 1)
 
Flamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel PötzingerFlamingo presentation at code.talks commerce by Daniel Pötzinger
Flamingo presentation at code.talks commerce by Daniel Pötzinger
 
Magento, OXID, xt:commerce - evaluation guide for enterprises
Magento, OXID, xt:commerce - evaluation guide for enterprisesMagento, OXID, xt:commerce - evaluation guide for enterprises
Magento, OXID, xt:commerce - evaluation guide for enterprises
 
From DevOps to NoOps
From DevOps to NoOpsFrom DevOps to NoOps
From DevOps to NoOps
 

Más de Marc Morera (6)

When symfony met promises
When symfony met promises When symfony met promises
When symfony met promises
 
El Efecto "Este código es una basura"
El Efecto "Este código es una basura"El Efecto "Este código es una basura"
El Efecto "Este código es una basura"
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Gearman bundle, Warszawa 2013 edition
Gearman bundle, Warszawa 2013 editionGearman bundle, Warszawa 2013 edition
Gearman bundle, Warszawa 2013 edition
 
Crawling the world
Crawling the worldCrawling the world
Crawling the world
 
Rsqueue bundle 06.2013
Rsqueue bundle 06.2013Rsqueue bundle 06.2013
Rsqueue bundle 06.2013
 

Último

Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Último (20)

KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects2016EF22_0 solar project report rooftop projects
2016EF22_0 solar project report rooftop projects
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 

When e-commerce meets Symfony

  • 1. When E-commerce meet Symfony #SymfonyCon
  • 3. @mmoreram Co-founder and lead at Elcodi Organizer of Symfony Barcelona UG Entrepreneur in AntaiVB - Barcelona Maintainer of several open source Libs and Bundles (GearmanBundle, ControllerExtraBundle, Visithor, php- formatter, PaymentSuite…)
  • 4. About this talk E-commerce in PHP until 201* E-commerce project life cycles Architecture for pragmatic development Symfony in action 3 tips about Elcodi
  • 6. Ideal Marc dialogue Marc: Hey dude, how are you? Ideal developer, in an ideal environment with an ideal amount of money: …
  • 7. Real Marc dialogue Marc: Hey dude, how are you? Real developer, in a real environment with a real amount of money: …
  • 9. PHP Until 201* PHP Full-stack projects based mostly on final user needs Old PHP code without change margin Technological effort on maintenance over refactoring Can these projects evolve?
  • 10. PHP Until 201* From the developer’s point of view… Configuration Configuration Extension + Pain Configuration
  • 11. PHP Until 201* No testing No SOLID principles
  • 12. PHP Until 201* So… why are they that used? A lot of users and developers have based their companies on them (YAY! Me, want!) BIG and Extremely well created plugin and template markets E-commerce with minimum time-to-market
  • 13. Is that enough for me?
  • 16. MVP Minimum Valuable Project The minimum you need to make sure you can measure the impact of your application - First stage… ALWAYS! Small investment (FFF) Small budget to spend on everything Perfect for applications with advanced template and plugin markets
  • 17. MVP Technology is not used to being important here And, in fact, it should never be… Most of times, projects die after this stage because the market is not ready or the project is not valuable enough Fast set-up technologies are used here
  • 18. After MVP Business Angels in action! Bigger budget than before, but not as big as we’d love to We can spend a little bit more on technology This is where we need to make the difference, so…
  • 20. Bye Bye, 90% of all existing plugins!!!
  • 21. After MVP This is where a lot of companies start a refactoring process This refactoring is used to costing too much money $$$ Everything is for yesterday :’( Things are done poorly and rapidly Pain^n
  • 22. Do you know what this causes?
  • 27. After MVP : #tip Choosing here your strategy can save your project! As important as MVP, but even more difficult to manage Smart decisions will be important
  • 28. When Venture Capital The amount of money is much bigger (shut up and take my money…) We are going to be a player, so our technology must be a player as well Time for do all these things you always had in mind No excuses, you have to hire talent and be responsible
  • 29. But you know what?
  • 30. First of all, you need to reach that point
  • 32. Just some questions… Is PHP the right platform for that?
  • 34. “it is, why not?”
  • 35. Just some questions… From a technical point of view… what criteria should I follow about when deciding an E-commerce platform?
  • 36. Do I feel confortable working with it? Will I be able to born with this project? Plugins, Templates, User documentation Will I be able to grow with this project? Excellent technical documentation, Communication, Community Some tips
  • 37. Will I be able to increase my skills as developer using this technology? Will I be able to do it… properly? Will I (as a company) co-exist with this technology? For how long? Some tips
  • 38. “Do I feel confortable working with it?”
  • 39. Just some questions… Should I test my MVP application?
  • 40. Some tips Take a tested (or popular) platform when you need to reach your MVP If your project is not going to grow, take the project with the most advanced plugin and template system. Forget about everything else You may not care about the roadmap of the project if your project ends as soon as you finish it
  • 41. Some tips If your project is LTS, then… tests battery will only tell you if the initial product works properly You will really need tests after your MVP, and your application will be completely different You will have to do your own tests then. Be ready for that! That one of the things you could invest on with your new money :)
  • 42. Just some questions… What architecture should I use?
  • 43. “What architecture I really need?”
  • 44. Some tips What architecture allow you to overwrite more easily Cart, Product, Shipping, Payment Admin functionalities, integrations, change capacity What architecture allow your team to understand the business model? What part of the application handles your business logic? Service layer? Model? Commands + Controllers + EventListeners + Twig Extensions? CQRS, Event-Driven Design… do you really know how it works? Annotations at the beginning, maybe? Easier :)
  • 45. Choose the architecture that really fits your case
  • 46. Some tips As soon as your developers (or you) are better, then your needs will be bigger and stronger Technology will follow you, not vice versa Don’t base your E-commerce on practices you don’t really know how to handle with
  • 47. And the more better you are…
  • 48. … the more alternatives you’ll find
  • 49. Some tips Annotations will become bad practices, maybe You will understand that an Event Listener, for example, should have 0 business Logic (Same as other entry points) You will NEED tests in all your developments. Not for the “tested” badge on Github, but only for you You will understand as well why ValueObjects are great, for example
  • 51. Symfony What parts of Symfony can really help us on our adventure <E-commerce case>! Event Dispatcher Symfony DIC Tests integrations (PHPUnit, Behat, Visithor…) Bundles
  • 52. Event Dispatcher Event-Driven Design is one of the most important things when you want to build a Plugin-based environment +Events = +Extension points = +Adopters = +Integrations
  • 53. DIC How easy overwriting a service is by registering your own service with the same name (after the original one) Good for composition and inheritance +Easy to overwrite = +Customizations = +Adopters = +Installations
  • 54. Tests integrations Integrations with Testing Platforms Behat Symfony2 Extension (Symfony3?) Symfony PHPUnit Bridge VisithorBundle
  • 55. Bundles Why a bundle is something relevant here? How a bundle can help when trying to create a Plugin + Template environment…
  • 56. A Bundle can be a Plugin!
  • 57. 3 tips about Elcodi
  • 58. Elcodi Set of E-commerce PHP Components Set of Symfony2 bundles for these components Project called Bamboo. Full stack E-commerce based on Elcodi + Symfony components and bundles. http://github.com/elcodi By giving us a star is like… Hey guys! You’re cool ;)
  • 59. Elcodi Tip #1 Intended to be a great option for MVPs Create a Plugin environment on top of Symfony Bundles Template as a Plugin Install in less than 2 minutes with Heroku (i.e.) 4 layers of testing
  • 60. Elcodi Tip #1 [Components] PHPUnit for unit testing of our Service Layer (classes) [Bundles] PHPUnit for functional testing of our processes (services, event listeners, event dispatchers…) [Bamboo] Behat for behavioral testing (user processes…) [Bamboo] Visithor just for testing the HTTP layer (responses)
  • 61. Visithor http://github.com/visithor/VisithorBundle You only need a single and small YAML file, and some lines. One per route. Define your routes by url, url name (Visithor) + parameters (VitithorBundle) Authenticate in a Firewall with a ROLE (Admin routes)
  • 63. Elcodi Tip #2 Intended to be a great option after MVP Use Symfony ecosystem for evolving your project. No refactoring needs The project is built on top of some Best Practices, and is treated with A LOT OF LOVE Both developer and final user oriented. No one is less important than the other one
  • 64. Elcodi Tip #3 Community-Driven. Developers are the brain of any open source project. Final users are the heart The more happiness any open source project provides, the more quality offers Join us on this adventure :) http://gitter.im/elcodi/elcodi
  • 65. Elcodi Extra Tip Elcodi (L) Symfony ^3.0.0 (December 2015) Elcodi App Market (2016) And… much, more, soon! Emanuele Minotto, new Core dev :) Thanks dude!
  • 66. TB;WS
  • 68. TB;WS Each E-commerce stage needs different strategies Check all Symfony E-commerce solutions, and find the one who REALLY makes you feel comfortable And if you really love E-commerce… consider getting involved in one of them, and spread the word :) and meanwhile… read!
  • 69. Q / A
  • 70. Differences Elcodi - ~^.*$~ Elcodi is a ready-for-production project We offer both a project and a way of doing, of understanding open source and collaborative projects Just make sure you discover this way of doing, and join us if you really enjoy it We are still waiting for your feedback and energy :)