Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Symfony @ BlaBlaCar

Symfony @ BlaBlaCar

Talk given with @odolbeau at the Symfony Con 2015. We present some of the use-cases we encountered with symfony at BlaBlaCar.

Avatar for Benjamin De Bernardi

Benjamin De Bernardi

December 04, 2015
Tweet

More Decks by Benjamin De Bernardi

Other Decks in Technology

Transcript

  1. Leader ride-sharing service. Our goal is to become the 1st

    travel platform. 30€ 30€ 30€ 30€
  2. Symfony Upgrades Started with SF2 2.0 Upgrade as soon as

    we can Remove deprecated code Follow best practices 2.0 → 2.7
  3. Expected Deal with ∞ combination of brands / medias. Different

    configuration / views / ... Keep (a lot of) small containers.
  4. • Not that small containers • You need to add

    code in app_prod. php to choose the right kernel to boot. • You can’t easily use your application as a consumer. DON’T!
  5. What else? + Quick to bootstrap a new project +

    Quick to code a small project - Hard to respect MVC - Hard to deal with cache - Hard to deal with integrity problems in DB - Not made to decouple code (relations). - Not made to scale.
  6. Check eventName & event interface Dispatch the event in the

    application. Decorated EventDispatcher. Publish to RabbitMQ
  7. + Perfect to decouple code inside the app. + Small

    listeners, easy to understand, to test. + Easy to dispatch events outside application. + Scalable! - Sometimes, hard to understand what happen. - Need tools / rules to keep a common logic. - Try to limit entities usage. ;) What else?
  8. 29 582 Commits There are “only” 15 506 commits for

    symfony/symfony There are “only” 10 228 commits for joyent/node There are “only” 9 266 commits for twbs/bootstrap There are 44 809 commits for rails/rails (but it’s ruby… #troll)
  9. What else ? • Long learning curve • Too many

    side effects • Time consuming • Big maintenance • Spaghetti code
  10. The gateway ❖ It’s code ❖ It uses DDD ❖

    Everyone love it ❖ It’s very well organized ❖ There’s a lot of (very) strict rules ❖ It separates business logic & data access ❖ It’s a vendor ! Easy to use everywhere
  11. The gateway ❖ Flexible ❖ Easy to test ❖ Deployed

    when needed ❖ Used for all new projects
  12. Gateway V3 W W W W W C W C

    C C W Current ecosystem W • 90 workers • 40 commands
  13. V3 W W W W W C W C C

    C W Future ecosystem? W Gateway Gateway Gateway
  14. V3 W W W W W C W C C

    C W Future ecosystem? W B B B B B B D D D
  15. DO! DON’T! + Use feature flags / on the fly

    toggling. + Make code reviews. + Keep a clean codebase. + Use encapsulation! <3 + Be generic + Promote reusability - Onboard people too quickly. - Depend too much on the framework - Let your container get too big. - Try not to extend the framework.
  16. Symfony2 was a good choice. Even if we made lot

    of wrong choices. We’ll decouple!
  17. • Fail, learn, succeed! • Microservices FTW! • Be worldwide!

    • Bermudas are great tools to build performant websites Benjamin De Bernardi @Genes0r Olivier Dolbeau @odolbeau We’re hiring! In Paris & Warsaw! http://blbl.cr/dreamjobs