Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

When e-commerce meets Symfony

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?

  • Be the first to comment

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. 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 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 :)
  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