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

Nouveau socle pour une nouvelle vie

Nouveau socle pour une nouvelle vie

Support de la conférence "Nouveau socle pour une nouvelle vie" donnée le 10 mars 2017 lors de la ConFoo Montréal 2017.

https://confoo.ca/fr/yul2017/session/nouveau-socle-pour-une-nouvelle-vie

Mikael RANDY

March 10, 2017
Tweet

More Decks by Mikael RANDY

Other Decks in Programming

Transcript

  1. Nouveau socle pour une
    nouvelle vie
    Enquête exclusive au coeur de
    l'équipe technique de M6Web

    View Slide

  2. Mikael Randy
    Lead-developer M6Web
    Team 6play backend

    View Slide

  3. Le groupe M6

    View Slide

  4. Présentation de 6play

    View Slide

  5. 6play représente de 3 à 6 M de
    vidéos vues par jour et +12 M de
    comptes utilisateurs déclarés
    2012 => 1M
    2014 => 3M
    2016 => 6M

    View Slide

  6. Etat de l’art en arrivant
    Backstage
    Encodeurs
    Antenne
    Backoffice

    View Slide

  7. View Slide

  8. View Slide

  9. 2013 - Refonte des fronts

    View Slide

  10. Exposition de la donnée
    Backstage
    Encodeurs
    Antenne
    Backoffice

    View Slide

  11. Nouveau paradigme
    Backstage
    Encodeurs
    Antenne
    Backoffice

    View Slide

  12. mais ...
    Beaucoup d’appels HTTP nécessaires
    Difficultés de compréhension

    View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. Grands principes
    http://tech.m6web.fr/m6web-au-phptour-luxembourg/

    View Slide

  17. M6Web\DaemonBundle
    https://github.com/M6Web/DaemonBundle

    View Slide

  18. Tips #1
    “Le cloud, c’est l’ordinateur de
    quelqu’un d’autre”

    View Slide

  19. M6Web\AMQPBundle
    https://github.com/M6Web/AmqpBundle

    View Slide

  20. Et 6play ?

    View Slide

  21. Rendre asynchrone les traitements longs
    Middleware
    synchro
    https://github.com/M6Web/ElasticsearchBundle

    View Slide

  22. Middleware - dénormalisation de la donnée
    Watcher
    Refresh
    Builder

    View Slide

  23. mais … (bis)
    Beaucoup d’appels HTTP nécessaires
    Difficulté de compréhension

    View Slide

  24. View Slide

  25. Tips #2
    Versionnez toujours vos APIs

    View Slide

  26. Middleware
    API RESTFul : “Tu peux accéder à toutes les données que tu veux”
    Middleware v1 : “Voici tout ce que je sais sur ta donnée”
    Middleware v2 : “Voici la donnée que tu dois utiliser”

    View Slide

  27. Middleware - principes

    View Slide

  28. Tips #3
    Soyez défensifs sur vos
    paramètres

    View Slide

  29. Middleware - paramètres
    Pas de valeurs par défaut
    /v1/endpoint
    /v1/endpoint?limit=10&offset=0
    Liste d’option explicite
    /v1/endpoint?type=all
    /v1/endpoint?type=vi,vc

    View Slide

  30. “Si ce n’est pas monitoré,
    ce n’est pas en prod”
    https://github.com/M6Web/StatsdBundle
    Tips #4

    View Slide

  31. View Slide

  32. Mémoriser les choix de tout le monde
    https://github.com/M6Web/CassandraBundle
    Users
    Heartbeat

    View Slide

  33. Données générique … mais personnalisées
    Middleware
    Users

    View Slide

  34. Tips #5
    Imposer un ordre dans les
    paramètres multiples
    /v2/endpoint?id=1,2,3
    /v2/endpoint?id=1,3,2

    View Slide

  35. Tips #6
    Suivez vos requêtes entre vos
    services

    View Slide

  36. Suivre ses requêtes
    https://github.com/M6Web/XRequestUidBundle

    View Slide

  37. Etat des lieux aujourd’hui
    Backstage
    BO
    Middleware
    Users
    Heartbeat
    Synchro
    Encodeurs
    Antenne

    View Slide

  38. Tips #7
    Mieux vaut plein de petits caches
    qu’un gros

    View Slide

  39. Cachez tout !
    Backstage
    BO
    Middleware
    Users
    Heartbeat
    synchro
    Encodeurs
    Antenne

    View Slide

  40. Coup d’oeil dans le rétro ...

    View Slide

  41. @TechM6Web
    tech.m6web.fr
    @mikaelrandy

    View Slide

  42. Questions ?

    View Slide