Gateway - How to bring down our monolith

Gateway - How to bring down our monolith

Talk given during a PHP meetup in Poland. I present here the main problems of the old BlaBlaCar monolith and how we are trying to change.

0bd054e9a591ec3afb355f5c2c899a23?s=128

Benjamin De Bernardi

October 20, 2015
Tweet

Transcript

  1. Benjamin De Bernardi Gateway How to bring down our monolith

  2. Benjamin De Bernardi Web Developer @Genes0r

  3. The infamous V3

  4. Front Admin API Workers Monolithic application

  5. It’s huge

  6. 406 187 NLOC There are “only” 268 041 NLOC for

    symfony/symfony
  7. 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)
  8. ~ 75 contributors There are 1 193 contributors for symfony/symfony

  9. ~ 30 minutes to run all the unit tests

  10. What else ? • Long learning curve • Too many

    side effects • Time consuming • Big maintenance • Spaghetti code
  11. Now & the future

  12. countries NEW IN 2015 India Mexico Hungary Romania Serbia Croatia

    19
  13. Exponential growth 20 million members in April 2015

  14. BlaBlaCar is deploying multiple datacenters

  15. We need to localize our data

  16. MICRO-SERVICES

  17. Micro-services Users, ratings, notifications, ridemap...

  18. Overview

  19. Overview

  20. NO API!

  21. The gateway

  22. • 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! It’s easy to use everywhere!
  23. How to: Get a rating

  24. Business

  25. None
  26. Request

  27. Usage

  28. Usage

  29. Usage

  30. Handler

  31. Data

  32. • Cache ready • backend agnostic

  33. • Cache ready • Backend agnostic Encapsulation !

  34. D BALStorage

  35. RedisStorage

  36. Gateway • Flexible • Very strict • Easy to test

    • Deployed when needed • Used for all new projects
  37. V3 Previous ecosystem

  38. Gateway V3 W W W W W C W C

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

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

    C W Future ecosystem? W B B B B B B D D D
  41. Micro services are not a silver bullet, they won’t solve

    all your problems. We are still working on our gateway stuff :)
  42. Thank you Bisous Buziaczki