$30 off During Our Annual Pro Sale. View Details »

Symfony2 killed me!

Olivier Dolbeau
September 28, 2015

Symfony2 killed me!

From monolithic to microservices at Blablacar.
Talk given at sfPot Nantes #1

Olivier Dolbeau

September 28, 2015
Tweet

More Decks by Olivier Dolbeau

Other Decks in Programming

Transcript

  1. Symfony2 killed me!
    Olivier Dolbeau
    sfPot Nantes #1

    View Slide

  2. @odolbeau
    Web Architect
    Olivier Dolbeau

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. From monolithic to microservices.

    View Slide

  7. Front
    Admin
    API
    Workers
    Monolithic application

    View Slide

  8. “It does everything,
    even coffee”
    Every developer ever

    View Slide

  9. So big!

    View Slide

  10. 406 187
    NLOC
    There are “only” 268 041 NLOC for symfony/symfony

    View Slide

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

    View Slide

  12. ~ 75
    contributors
    There are 1 193 contributors for symfony/symfony

    View Slide

  13. 3 536
    tests
    There are 17 593 tests for symfony/symfony

    View Slide

  14. 20
    minutes to run them all
    28 minutes for symfony/symfony… #fake

    View Slide

  15. View Slide

  16. View Slide

  17. Cons
    ● Conflicts
    ● Time consuming
    ● Maintenance
    ● Learning curve
    ● Side effects

    View Slide

  18. “With minor change
    comes major bugs”
    Myself based on its personal experience.

    View Slide

  19. Objectifs
    Our technical
    objectives at
    Blablacar

    View Slide

  20. Exponential growth
    20 million
    members in April 2015

    View Slide

  21. countries
    NEW IN
    2015
    India
    Mexico
    Hungary
    Romania
    Serbia
    Croatia
    19

    View Slide

  22. BlaBlaCar is
    deploying multiple
    datacenters.

    View Slide

  23. We need to
    localize our data.

    View Slide

  24. MICRO-SERVICES

    View Slide

  25. Micro-services
    Users, ratings, notifications, moderation...

    View Slide

  26. Overview

    View Slide

  27. Overview

    View Slide

  28. NO API!

    View Slide

  29. Enter the gateway...

    View Slide

  30. ● It’s code.
    ● It use DDD.
    ● Everyone love it!
    ● It’s very well organized.
    ● There’s a lot of (very) strict rules.
    ● It separate business logic & data access.
    ● It’s a vendor! It’s easy to use everywhere!

    View Slide

  31. Global organisation

    View Slide

  32. How to: Get a rating

    View Slide

  33. Business

    View Slide

  34. View Slide

  35. Request

    View Slide

  36. Usage

    View Slide

  37. Usage

    View Slide

  38. Usage

    View Slide

  39. Usage

    View Slide

  40. Usage

    View Slide

  41. Response

    View Slide

  42. Handler

    View Slide

  43. Global organisation

    View Slide

  44. Data

    View Slide

  45. ● Cache ready
    ● backend agnostic

    View Slide

  46. ● Cache ready
    ● backend agnostic
    Encapsulation FTW!

    View Slide

  47. D
    BALStorage

    View Slide

  48. RedisStorage

    View Slide

  49. Gateway
    ● Flexible
    ● Usable everywhere
    ● Very strict
    ● Easy to test
    ● Deployed when needed
    ● Used for all new
    projects

    View Slide

  50. V3
    Previous ecosystem

    View Slide

  51. Gateway
    V3
    W
    W
    W
    W
    W
    C W
    C
    C
    C
    W
    Current ecosystem
    W
    ● 90 workers
    ● 40 commands

    View Slide

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

    View Slide

  53. V3
    W
    W
    W
    W
    W
    C
    W
    C
    C
    C
    W
    Future ecosystem?
    W
    B
    B
    B B
    B
    B
    D
    D
    D

    View Slide

  54. View Slide

  55. View Slide