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

ForumPHP 2015

ForumPHP 2015

Découvrez comment BlaBlaCar utilise PHP au quotidien pour étendre son service à l'international. Nous verons ensemble un aperçu de nos méthodologies et nos choix techniques qui nous ont amené jusqu'ici. Un retour d'expérience sans prétention de nos réussites, de nos erreurs et de nos ambitions en terme d'architecture pour les mois à venir.

https://joind.in/talk/view/15716

Matthieu Moquet

November 24, 2015
Tweet

More Decks by Matthieu Moquet

Other Decks in Technology

Transcript

  1. Un éléphant dans
    le monde des Licornes

    View Slide

  2. MattKetmo

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. 2012 2013

    View Slide

  8. View Slide

  9. View Slide

  10. Master
    Branch
    CR + CI
    Prod
    Staging

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. ORM

    View Slide

  16. View Slide

  17. View Slide

  18. Bundles

    View Slide

  19. View Slide

  20. Events

    View Slide

  21. View Slide

  22. Tests

    View Slide

  23. Unit
    Integration
    Functional

    View Slide

  24. View Slide

  25. public function user_should_be_able_to_publish_trip()
    {
    // **Given** I am logged in with user "john"
    $this->login('john')
    // **When** I publish a trip from Paris to Rennes in 2 days
    $this->client->request($this->url('publication'));
    $params = [
    'from' => 'Paris',
    'to' => 'Nantes',
    'date' => new \DateTime('+2 days')
    ];
    $this->form('publication')->fill($params)->submit();
    // **Then** a trip from Paris to Rennes should be published
    $this->response->OK();
    $this->assertNotNull(
    $this->tripRepository->findOneBy($params)
    );
    // **And** a trip.published event is dispatched
    $this->event->dispatched('trip.published');
    }

    View Slide

  26. Monolithic

    View Slide

  27. View Slide

  28. Gateway

    View Slide

  29. RegisterUser
    PublishTrip PostMessage LeaveRating
    Trip User Messaging

    View Slide

  30. /** @var RegisterUserResponse */
    $response = $handler->handler(
    new RegisterUserRequest(
    'John Doe',
    '[email protected]'
    )
    );
    // `RegisterUserEvent` dispatched
    $userId = $response->getUserId();

    View Slide

  31. f(x) = y

    View Slide

  32. GET /api/messages

    View Slide

  33. View Slide

  34. View Slide

  35. blablatech.com
    We’re hiring
    Follow us

    View Slide

  36. THANK YOU.
    THANK YOU. YOU’RE AWESOME.
    YOU’RE AWESOME.

    View Slide

  37. MattKetmo
    joind.in/15716

    View Slide