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

An Event-oriented News feed

Viadeo
November 05, 2014

An Event-oriented News feed

From a synchronised, single piece architecture to an event-driven one by @frobini @Kuhess and @Myxz

Viadeo

November 05, 2014
Tweet

More Decks by Viadeo

Other Decks in Programming

Transcript

  1. An Event-oriented News feed
    by Grégory Truchetet, Quentin Suire & Fabrice Robini

    View full-size slide

  2. Member Factory

    View full-size slide

  3. “ Les activités de mon réseau ”

    View full-size slide

  4. MySql
    Temps de réponse pourris
    Modifier... et prier !
    Pas de standards
    LEGACY
    2004 - 2014

    View full-size slide

  5. “OK Dude, wait for two weeks !”

    View full-size slide

  6. Prenons un exemple concret
    l’ajout d’une expérience professionnelle

    View full-size slide

  7. Notification News
    feed
    ...
    ?
    W
    E
    B
    A
    P
    P
    Couplage fort
    Transactions ?
    Synchrone
    PDG de L’Oréal
    DB

    View full-size slide

  8. Nous allons vous raconter l’histoire de la
    renaissance du News feed

    View full-size slide

  9. La vision
    “ A scalable event-driven architecture to
    empower our innovative capabilities by
    following concerns separation &
    asynchronous processing patterns ”

    View full-size slide

  10. Webapp
    Bus
    C1
    C2
    C3
    News
    feed
    ES
    DB
    L’architecture événementielle
    Plateforme

    View full-size slide

  11. La reprise de données
    Webapp
    Bus
    C1
    C2
    C3
    News
    feed
    ES
    DB
    Plateforme
    Archéologie 2.0
    Migration au fil de l’eau

    View full-size slide

  12. Peu (pas?) d’historique
    La reprise de données

    View full-size slide

  13. Webapp
    Bus
    C1
    C2
    C3
    News
    feed
    ES
    DB
    Avoir un langage commun
    Plateforme

    View full-size slide

  14. PositionAddedEvent
    {
    “memberId”: “urn:viadeo:member:name:jennyfer”,
    “positionId”: “urn:viadeo:skill:name:pdgDeLOreal”,
    ...
    }
    Input
    {
    "actor": {
    "id": "urn:viadeo:member:name:jennyfer",
    "objectType": "member",
    "displayName": "Jennyfer"
    "extensions": { ... }
    },
    "verb": "add",
    "object": {
    "id": "urn:viadeo:skill:name:pdgDeLOreal",
    "objectType": "position",
    "displayName": "PDG de L’Oréal"
    "extensions": { ... }
    },
    "target": {
    "id": "urn:viadeo:profile:name:jennyfer",
    "objectType": "profile",
    "displayName": "Jennyfer's profile"
    "extensions": { ... }
    }
    }
    Output
    Avoir un langage commun
    Ex: “Add position news” consumer
    Activity Stream

    View full-size slide

  15. Le processus itératif #FailFast
    L’itératif en fail fast
    Sprints courts
    Tests de performances
    Tests fonctionnels

    View full-size slide

  16. En production depuis juin
    3 mois
    12 itérations
    50 déploiements
    3 noeuds Elasticsearch
    40 Millions de documents
    5 personnes
    migration d’une news en 2 jours

    View full-size slide

  17. #1 - Attention au sur-design

    View full-size slide

  18. #2 - Soyez exhib

    View full-size slide

  19. Montrez vos métriques

    View full-size slide

  20. Montrez vos métriques
    Oooooooopsssss !

    View full-size slide

  21. Montrez vos métriques

    View full-size slide

  22. #4 - Écrivez à 4 mains,
    exposez vos mocks

    View full-size slide

  23. #5 - DevOpsArch DreamTeam

    View full-size slide

  24. Prochainement...

    View full-size slide

  25. This, Jen, is the News feed.
    Questions ?

    View full-size slide

  26. Les chiffres de Viadeo
    Viadeo.com (24M dont 9M Fr)
    Nb de Newsfeed vus / jour : 500k
    PENSE-BÊTE

    View full-size slide

  27. Le processus de migration
    Monitoring et devops
    ● déploiements déclenchés par les
    développeurs
    ● outils de monitoring

    View full-size slide

  28. Les problèmes rencontrés
    ● Problèmes techniques
    ○ archéologie pour émettre les événements
    ○ sérialisation des événements dans le bus
    ○ documents mutables dans Elasticsearch
    ● Problèmes humains
    ○ utilisation d’un nouveau paradigme
    ○ synchronisation des équipes pour les
    décommisions

    View full-size slide

  29. Le processus de migration
    Les besoins définis par le produit !
    ● sprint court (1 semaine)
    ● développements conduits par les tests
    ● spécifications des données des news
    très tôt

    View full-size slide

  30. The Take Away
    ↦ Be Mocked Driven Development
    ↦ Avoid overdesign -> Be iteratif -> Go,
    mesure, refactor
    ↦ ArchDevOps -> Push button
    ↦ Make things visible -> Show your
    metrics

    View full-size slide

  31. Draft : Brins de trucs à penser
    S’inscrit dans un chantier de migration IT
    Porté par un projet Funk : le nouveau Dashboard
    Enjeu : poser les bases d’une premières archi
    La Vision du Newsfeed
    Eat Your Own Dog Food : -au service de- → D’abord pour les autres (le mobile)
    La perf : être en dessous des 100ms
    Stratégie de tests de perf : Graceful Degradation
    Choix fonctionnel : limité le newsfeed à 1000 producers
    Séparations des responsabilités : Network, News (--> Activities & Reco)
    Le suivi du monitoring
    L’augmentation du temps de réponse puis le refactoring
    Le DevOps, la responsabilités des devs
    L’architecture infra
    Le Newsfeed en chiffre
    Stratégie d’initialisation du réseau : Lazy & Eager (sur quelle base ?)
    Limitations: synchrone, imaintenable

    View full-size slide

  32. L’histoire
    -> Méthodo : itératif, démo toutes les semaines, Mocked drived developement
    -> Design : expliquer pourquoi “Orienté Document” , Zoom sur Activity Stream (faire
    emerger un modèle standard & auto-portant)
    -> Parallele Run (pas de migration, pas de reprise des données, mais consomation
    depuis la legacy)
    -> Tests de perf (valider le Graceful Degradation, valider la Stack)
    -> Intialisation (lazy & eager)
    -> L’infra
    -> Le suivi (les outils de monitoring, les indicateurs, le deploy continu) -> Les devs
    super responsabilisés et on a la main sur le déploiement
    -> Nb de déploiements

    View full-size slide

  33. 500 ms #TrueStory #FAIL
    I am the *Manager, *Service,
    *Controller, JSON *Converter ...

    View full-size slide

  34. Plan
    ● Le contexte du dashboard Viadeo
    ● Les limites de l’ancien système
    ● L’architecture événementielle
    ● Zoom sur la migration de données
    ● Zoom sur le modèle Activity Stream
    ● Le processus itératif #FailFast
    ● Le News feed en chiffres
    ● Doggy bag

    View full-size slide

  35. Temps de réponse pourris
    Modifier .... et prier !
    Pas de standards
    MySql
    LEGACY
    2004 - 2014
    R.I.P

    View full-size slide