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

MongoDB en scale-up : comment sortir d’un enfer...

Horgix
October 18, 2024

MongoDB en scale-up : comment sortir d’un enfer monolithique — DevFest Nantes 2024 (2024-10-18)

🇫🇷-version below / version 🇫🇷 plus loin

This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the DevFest Nantes conference in October 2024 in Nantes about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.

March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.

Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!

On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.

---
🇫🇷
Ceci est le deck de slides du talk présenté par Alexis "Horgix" Chotard et Laurentiu Capatina à la conférence DevFest Nantes en octobre 2024 à Nantes, et partageant le retour d'expérience sur la manière dont PayFit s'y est pris pour sortir de l'enfer monolithique qu'était devenu un cluster MongoDB self-hosted, au profit d'alternatives managées. Pitch ci-dessous.

15 mars 2023, 6h59 : un cluster MongoDB s'écroule. Pas de bol, celui-ci contient 95% des données utilisateur, et est absolument vital à un fonctionnement même minimal de notre application. Facteur aggravant : celui-ci a 7 ans de retard de versions, n'est pas scalable, et à peine observable. Enfin, même le modèle de données ferait rapidement lever les sourcils : des applications qui communiquent entre elles via lecture/écriture dans les mêmes documents MongoDB, des documents qui atteignent la limitation maximum de 16MiB avec des centaines de niveaux d'imbrication, etc. L'incident durera plusieurs jours et résultera en la perte de nombreux utilisateurs. On a vu meilleur portrait.

Voyons comment PayFit s'est retrouvé dans cette situation infernale, et surtout comment nous nous y sommes pris pour en sortir !

Au programme : stabilisation technique, détricotage de modèle de données, éclatement d'un SPOF en plusieurs éléments au blast radius plus restreint, transition vers des services managés, amélioration des accès internes, reprise de maîtrise sur les opérations risquées, et finalement, approche d'une migration technique quand celle-ci impacte l'intégralité des équipes de développement.

Horgix

October 18, 2024
Tweet

More Decks by Horgix

Other Decks in Technology

Transcript

  1. 1 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB en scale-up Comment sortir d’un enfer monolithique Un retour d’expérience par: Laurentiu Capatina Alexis “Horgix” Chotard 18 octobre 2024
  2. 2 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Hello, world DevFest Nantes! Alexis « Horgix » Chotard @Horgix Horgix Horgix Laurentiu Capatina SRE chez lcapatina SRE chez
  3. 3 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Le plan Bref historique Incidents 2023 Stabilisation Résolution long terme Bénéfices & limitations Take away
  4. 4 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit Un bref historique
  5. 5 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit 0. Les prémices
  6. 6 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ 2016 : débuts de PayFit → MongoDB ▼ Depuis : Les prémices de MongoDB chez PayFit Devinez quoi ? Le “plus tard”, c’est maintenant !
  7. 7 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit tel que début 2023 1. L’architecture
  8. 8 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture (début 2023)
  9. 9 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture
  10. 10 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture
  11. 11 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture
  12. 12 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture
  13. 13 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture
  14. 14 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’architecture (début 2023)
  15. 15 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit tel que début 2023 2. Le modèle de données
  16. 16 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ JetLang ▽ Langage low-code fait maison ▽ Indirection pour le stockage de données métier ▽ Employees & Companies notamment Le modèle de données (début 2023) Documents de 16 MiB Données dupliquées d’un mois sur l’autre
  17. 17 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit tel que début 2023 3. L’utilisation
  18. 18 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique L’utilisation du cluster MongoDB de PayFit (début 2023) Partagé par tout le monde Partage de Collections entre applications Requêtes de 3 MiB Gestion des indexes hasardeuse & scripts one-shot Gestion des accès manuelle (+ Controller K8s) Backups… exotiques
  19. 19 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit tel que début 2023 Les problèmes
  20. 20 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Blast radius conséquent ▼ Applications fortement couplées ▼ Impossibilité de scale, que ce soit up/down ou verticalement/horizontalement ▼ Des limites techniques atteintes (max document size de 16MiB) ▼ Des incidents fréquents ▼ Beaucoup de maintenance (cluster lui-même, backups, MongoX, etc.) ▼ Impossibilité de répondre à des questions basiques sur l’utilisation (observabilité) ▼ Incapacité d’attribuer l’usage et les coûts à des domaines métier ▼ Une gestion des informations de connexion très manuelle ▼ Une équipe quasiment dédiée (Data Reliability Engineering) Les problèmes
  21. 21 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique “Datalayer” Teasing d’une des solutions mises en place
  22. 22 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique
  23. 23 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Incidents de mars 2023 le point de bascule
  24. 24 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique 4h 48min de downtime de l’application répartis sur plusieurs jours Incidents de mars 2023 : impact sur le produit 8 jours de l’application visiblement lente 1500+ tickets clients pour notre support
  25. 25 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Incident de mars 2023 Comprendre ce qu’il se passe…
  26. 26 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Comprendre ce qu’il se passe…
  27. 27 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Comprendre ce qu’il se passe…
  28. 28 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Comprendre ce qu’il se passe… Pendant un incident Retour à la normale
  29. 29 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Comprendre ce qu’il se passe…
  30. 30 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Un post-mortem de… 27 pages
  31. 31 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Incident de mars 2023 Stabiliser à court terme
  32. 32 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Stabiliser à court terme Consulting avec MongoDB Inc. pour la remise en état du cluster Changement de la stratégie de pagination dans le Datalayer Désactivation de fonctionnalités dans l’application Scaling vertical → r5.16xlarge (64 vCPU et 512GiB RAM)
  33. 33 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Pour le cluster self-hosted mais aussi d’autres composants tsh db connect --db-user=teleport-rw --db-name=client_dev mongo-dev
  34. 34 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Incident de mars 2023 Stabiliser moyen terme
  35. 35 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Stabiliser à court terme Poursuite de la migration vers l’utilisation du Datalayer pour les data “core” Améliorations au niveau de la logique applicative (ex: lazy compute) Uniformisation de l’accès humain via Teleport Analyze des queries lentes: → création d’indexes → réduction/améliorations
  36. 36 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Résolvons le problème pour de bon. Sortie de notre MongoDB self-hosted monolithique
  37. 37 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Contexte : ▽ Services managés (“Engineering Tenets”) ▽ Autonomie des équipes ▽ Domain Driven Design ▽ Attention aux coûts / gâchis ▼ Choix / Décisions : ▽ 1. Upgrade ? → Non – risque & point fixe ▽ 2. AWS DocumentDB ou MongoDB Atlas ? → Atlas ▽ 3. Lift & shift ? → Non – éclatement & DDD Résolution long terme
  38. 38 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Synchronisation Okta pour accéder à l’UI et API d’Atlas ▼ Network peering (Private Endpoint) ▼ Structure : “projects” ▼ Définition d’une politique de backups par défaut ▼ Modules Terraform pour la gestion de cluster … le tout via Infrastructure-as-Code évidemment ! Déroulement – Préparer le terrain sur MongoDB Atlas PayFit organization │ ├── Project: Production │ ├── Cluster: payments-a42b │ ├── Cluster: backoffice-f5fc │ ├── Cluster: time-fb49 │ └── [...] │ ├── Project: Staging │ ├── Cluster: payments-7t3b │ ├── Cluster: backoffice-492a │ ├── Cluster: time-bf70 │ └── [...] │ ├── Project: Development │ ├── Cluster: payments-2a81 │ ├── Cluster: backoffice-32fe │ ├── Cluster: time-8f05 │ └── [...] │ └── [...]
  39. 39 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Focus – Le module Terraform mongodbatlas-cluster
  40. 40 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Focus – Le module Terraform mongodbatlas-cluster
  41. 41 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Démarche ▽ Les choses faciles d’abord ▽ Accompagnement poussé & prise de feedback ▼ Exemple : Backoffice ▽ Apprentissages & améliorations ▪ Documentation ▪ SDK JS : authentification AWS IAM / STS ▪ Provider Terraform (autoscaling) ▪ … avec MongoDB Inc 🙂 Première phase : les early adopters
  42. 42 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Objectif : des équipes produit autonomes ▼ Approche : ▽ A l’initiative des équipes produit ▽ Domaine par domaine ▽ Accompagnement complet et poussé ▼ Un travail de fond et de longue haleine Deuxième phase : tout le monde à bord (ou presque)
  43. 43 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Deuxième phase : tout le monde à bord (ou presque)
  44. 44 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Deuxième phase : tout le monde à bord (ou presque)
  45. 45 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Deuxième phase : tout le monde à bord (ou presque)
  46. 46 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices de tout ce travail de stabilisation & migration
  47. 47 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Stabilité
  48. 48 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Sécurité (rôles IAM, Teleport)
  49. 49 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Isolation par domaine
  50. 50 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Observabilité (Performance advisor)
  51. 51 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Observabilité (Query insights)
  52. 52 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Résilience
  53. 53 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Backups
  54. 54 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Atlas Charts (surprise!) & Atlas Search
  55. 55 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ MongoDB Atlas Serverless : on a hâte de l’essayer ! ▼ Disponibilité de fonctionnalités sur la région Paris ▽ Online Archive ▽ Dedicated search nodes ▼ Notifications configurable ▼ Queryable backups (disponibles dans MongoDB Ops Manager) Notre liste au père Noël – MongoDB Atlas edition
  56. 56 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bon, en vrai…
  57. 57 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Symptômes et causes différents ▼ Liée à la fin de la migration de notre modèle de données ▼ Léger relâchement dans la vigilance après 1 an ▼ Points positifs: ▽ Beaucoup moins d’impact et d’équipes concernées ▽ Plus de facilités à investiguer La nouvelle vague d’incidents
  58. 58 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Take away les points essentiels
  59. 59 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Blast radius conséquent ▼ Applications fortement couplées ▼ Impossibilité de scale, que ce soit up/down ou verticalement/horizontalement ▼ Des limites techniques atteintes (max document size de 16MiB) ▼ Des incidents fréquents ▼ Beaucoup de maintenance (cluster lui-même, backups, MongoX, etc.) ▼ Impossibilité de répondre à des questions basiques sur l’utilisation (observabilité) ▼ Incapacité d’attribuer l’usage et les coûts à des domaines métier ▼ Une gestion des informations de connexion très manuelle ▼ Une équipe quasiment dédiée (Data Reliability Engineering) Les problèmes… avant !
  60. 60 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Stabiliser de manière limitée, et migrer en parallèle ▼ Avoir un vrai sponsoring ▼ Services Managés 💙 ▼ Teleport 💙 ▼ Proxy/Adapter pattern (Datalayer) ▼ Une attention particulière à la qualité des helpers et de la documentation ▼ Une vrai démarche d’accompagnement et de partage Les points notables
  61. 61 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Merci !
  62. 62 18 octobre 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB en scale-up Comment sortir d’un enfer monolithique 18 octobre 2024 Q&A Votre feedback compte ♥ Un retour d’expérience par: Laurentiu Capatina Alexis “Horgix” Chotard <REDACTED> Il fallait être là pendant la conférence :)