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 o...
About this talk
E-commerce in PHP until 201*
E-commerce project life cycles
Architecture for pragmatic development
Symfony...
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 ef...
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...
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 stag...
MVP
Technology is not used to being important here
And, in fact, it should never be…
Most of times, projects die after thi...
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 m...
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 ...
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
...
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 t...
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 platf...
Do I feel confortable working with it?
Will I be able to born with this project?
Plugins, Templates, User documentation
Wi...
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 c...
“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 t...
Some tips
If your project is LTS, then… tests battery will only tell
you if the initial product works properly
You will re...
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, int...
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 foll...
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 hav...
Symfony in action
Symfony
What parts of Symfony can really help us on our
adventure <E-commerce case>!
Event Dispatcher
Symfony DIC
Tests in...
Event Dispatcher
Event-Driven Design is one of the most important things
when you want to build a Plugin-based environment...
DIC
How easy overwriting a service is by registering your
own service with the same name (after the original one)
Good for...
Tests integrations
Integrations with Testing Platforms
Behat Symfony2 Extension (Symfony3?)
Symfony PHPUnit Bridge
Visitho...
Bundles
Why a bundle is something relevant here?
How a bundle can help when trying to create a Plugin +
Template environme...
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-c...
Elcodi Tip #1
Intended to be a great option for MVPs
Create a Plugin environment on top of Symfony Bundles
Template as a P...
Elcodi Tip #1
[Components] PHPUnit for unit testing of our Service
Layer (classes)
[Bundles] PHPUnit for functional testin...
Visithor
http://github.com/visithor/VisithorBundle
You only need a single and small YAML file, and some
lines. One per rout...
Visithor
Elcodi Tip #2
Intended to be a great option after MVP
Use Symfony ecosystem for evolving your project. No
refactoring need...
Elcodi Tip #3
Community-Driven. Developers are the brain of any open
source project. Final users are the heart
The more ha...
Elcodi Extra Tip
Elcodi (L) Symfony ^3.0.0 (December 2015)
Elcodi App Market (2016)
And… much, more, soon!
Emanuele Minott...
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 ...
Q / A
Differences Elcodi - ~^.*$~
Elcodi is a ready-for-production project
We offer both a project and a way of doing, of
unders...
Thanks!
Gràcies!
@mmoreram
Próxima SlideShare
Cargando en…5
×

When e-commerce meets Symfony

801 visualizaciones

Publicado el

The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?

Publicado en: Ingeniería
0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
801
En SlideShare
0
De insertados
0
Número de insertados
62
Acciones
Compartido
0
Descargas
10
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

When e-commerce meets Symfony

  1. 1. When E-commerce meet Symfony #SymfonyCon
  2. 2. @mmoreram Elcodi
  3. 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. 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
  5. 5. E-commerce + PHP until 201*
  6. 6. Ideal Marc dialogue Marc: Hey dude, how are you? Ideal developer, in an ideal environment with an ideal amount of money: …
  7. 7. Real Marc dialogue Marc: Hey dude, how are you? Real developer, in a real environment with a real amount of money: …
  8. 8. What has happened here???
  9. 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. 10. PHP Until 201* From the developer’s point of view… Configuration Configuration Extension + Pain Configuration
  11. 11. PHP Until 201* No testing No SOLID principles
  12. 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. 13. Is that enough for me?
  14. 14. No is not! :’(
  15. 15. E-commerce life cycle
  16. 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. 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. 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…
  19. 19. Hello, Custom Business!!!
  20. 20. Bye Bye, 90% of all existing plugins!!!
  21. 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. 22. Do you know what this causes?
  23. 23. Sadness!
  24. 24. Frustration!
  25. 25. I hate E-commerce!
  26. 26. Bye Bye E-commerce!
  27. 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. 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. 29. But you know what?
  30. 30. First of all, you need to reach that point
  31. 31. Pragmatic Architecture
  32. 32. Just some questions… Is PHP the right platform for that?
  33. 33. “is it?”
  34. 34. “it is, why not?”
  35. 35. Just some questions… From a technical point of view… what criteria should I follow about when deciding an E-commerce platform?
  36. 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. 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. 38. “Do I feel confortable working with it?”
  39. 39. Just some questions… Should I test my MVP application?
  40. 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. 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. 42. Just some questions… What architecture should I use?
  43. 43. “What architecture I really need?”
  44. 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. 45. Choose the architecture that really fits your case
  46. 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. 47. And the more better you are…
  48. 48. … the more alternatives you’ll find
  49. 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
  50. 50. Symfony in action
  51. 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. 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. 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. 54. Tests integrations Integrations with Testing Platforms Behat Symfony2 Extension (Symfony3?) Symfony PHPUnit Bridge VisithorBundle
  55. 55. Bundles Why a bundle is something relevant here? How a bundle can help when trying to create a Plugin + Template environment…
  56. 56. A Bundle can be a Plugin!
  57. 57. 3 tips about Elcodi
  58. 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. 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. 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. 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)
  62. 62. Visithor
  63. 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. 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. 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. 66. TB;WS
  67. 67. TB;WS Too Boring; Was Sleeping
  68. 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. 69. Q / A
  70. 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 :)
  71. 71. Thanks! Gràcies! @mmoreram

×