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. Notification News feed ... ? W E B A P

    P Couplage fort Transactions ? Synchrone PDG de L’Oréal DB
  2. La vision “ A scalable event-driven architecture to empower our

    innovative capabilities by following concerns separation & asynchronous processing patterns ”
  3. 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
  4. Webapp Bus C1 C2 C3 News feed ES DB Avoir

    un langage commun Plateforme
  5. 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
  6. 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
  7. Les chiffres de Viadeo Viadeo.com (24M dont 9M Fr) Nb

    de Newsfeed vus / jour : 500k PENSE-BÊTE
  8. 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
  9. 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
  10. The Take Away ↦ Be Mocked Driven Development ↦ Avoid

    overdesign -> Be iteratif -> Go, mesure, refactor ↦ ArchDevOps -> Push button ↦ Make things visible -> Show your metrics
  11. 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
  12. 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
  13. 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
  14. Temps de réponse pourris Modifier .... et prier ! Pas

    de standards MySql LEGACY 2004 - 2014 R.I.P