When e-commerce meets Symfony
-
Upload
marc-morera -
Category
Engineering
-
view
766 -
download
2
Transcript of When e-commerce meets Symfony
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;WSToo 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