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

MongoDB in a scale-up: how to get away from a m...

MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris meetup (2024-06-04)

This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 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.

Horgix

June 06, 2024
Tweet

More Decks by Horgix

Other Decks in Technology

Transcript

  1. 1 04 juin 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 de PayFit, par: Laurentiu Capatina Alexis “Horgix” Chotard 04 juin 2024
  2. 2 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

    en scale-up Comment sortir d’un enfer monolithique ▼ Bref historique ▼ Incidents 2023 ▼ Stabilisation ▼ Résolution long terme ▼ Bénéfices & limitations ▼ Take away Plan / Pitch
  4. 4 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique MongoDB chez PayFit Un bref historique
  5. 5 04 juin 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 04 juin 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 04 juin 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 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

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

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

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

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

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

    en scale-up Comment sortir d’un enfer monolithique L’architecture (début 2023)
  15. 15 04 juin 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 04 juin 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 ▼ “Unbounded arrays” ▼ Données dupliquées d’un mois sur l’autre ▼ 16MiB documents Le modèle de données (début 2023)
  17. 17 04 juin 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 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Partagé par tout le monde ▼ Partage de Collections entre applications ▼ Requêtes de 3MiB ▼ Gestion des indexes dangereuse ▼ One-shot scripts ▼ Gestion des accès (MongoX) ▼ Versioner & snapshots L’utilisation du cluster MongoDB de PayFit (début 2023)
  19. 19 04 juin 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 04 juin 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 04 juin 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 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

    en scale-up Comment sortir d’un enfer monolithique ▼ Impact sur le produit: ▽ 4h et 48min de downtime de l’application réparti sur plusieurs jours ▽ 8 jours avec une application visiblement lente ▽ 1500+ tickets clients Incidents de mars 2023…
  24. 24 04 juin 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…
  25. 25 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

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

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

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

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

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

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

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

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

    en scale-up Comment sortir d’un enfer monolithique ▼ Analyze des queries lentes: ▽ création d’indexes ▽ réduction/améliorations des queries ▼ Uniformiser l’accès humain via Teleport ▼ Consulting avec MongoDB Inc. étalé sur un an après mars 2023 ▼ Amélioration au niveau de la logique applicative (ex: lazy compute) ▼ Poursuite de la migration vers l’utilisation du Datalayer pour les data “core” Stabiliser moyen terme
  35. 35 04 juin 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
  36. 36 04 juin 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 ▽ DDD (& Events) ▽ Attention aux coûts / gâchis ▼ Choix / Décisions : ▽ 1. Lift & shift ? → Non; breakdown & DDD ▽ 2. Upgrade ? → Non; risque & point fixe ▽ 3. AWS DocumentDB vs MongoDB Atlas → Atlas ▽ 4. MongoDB Atlas setup: network, projects, clusters access, etc. Résolution long terme
  37. 37 04 juin 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 │ └── [...] │ └── [...]
  38. 38 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

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

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

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

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

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

    en scale-up Comment sortir d’un enfer monolithique ▼ Identification des choses faciles à bouger ▼ Backoffice ▽ Approche ▽ Feedback ▽ Apprentissages & améliorations ▪ Documentation ▪ SDK JS et authentification AWS IAM / STS ▪ Provider Terraform (autoscaling) ▪ … avec MongoDB Inc 🙂 ▼ et quelques autres Première phase : les early adopters
  45. 45 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ Objectifs: ▽ Des équipes produit autonomes ▽ Domaine par domaine ▽ Accompagnement complet et poussé ▽ A l’initiative des équipes produit ▼ Un travail de fond et de longue haleine Deuxième phase : tout le monde à bord (ou presque)
  46. 46 04 juin 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)
  47. 47 04 juin 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)
  48. 48 04 juin 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)
  49. 49 04 juin 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
  50. 50 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Bénéfices – Stabilité
  51. 51 04 juin 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)
  52. 52 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

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

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

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

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

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

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

    en scale-up Comment sortir d’un enfer monolithique ▼ MongoDB Atlas ▽ MongoDB Atlas Serverless : on a hâte de l’essayer ! ▽ La fonctionnalité online archive dans la région Paris ▽ Notifications configurable ▼ Temps de prise en main par les équipes ▼ Des leçons sur des migrations similaires Axes d’amélioration
  59. 59 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Take away les points essentiels
  60. 60 04 juin 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 !
  61. 61 04 juin 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) (becoming an Anti-corruption Layer) ▼ Une attention particulière à la qualité des helpers et de la documentation ▼ Une vrai démarche d’accompagnement et de partage Les points notables
  62. 62 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Avant de vous laisser… Les futures interventions de PayFit
  63. 63 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique ▼ 26-27-28 juin 2024 – Breizhcamp @ Rennes ▽ Présentez avec style grâce à OBS ! ▪ Martin Bahier ▽ MongoDB en scale-up : comment sortir d’un enfer monolithique ▪ Caroline Becker & Alexis “Horgix” Chotard ▽ Alerte, tout brûle ! Comment gérer des incidents techniques ▪ Alexis “Horgix” Chotard ▼ 28-29-30 octobre 2024 – KanDDDinsky @ Berlin ▽ Impact Mapping Workshop – Krisztina Hirth Les futures interventions de PayFit
  64. 64 04 juin 2024 Laurentiu Capatina Alexis “Horgix” Chotard MongoDB

    en scale-up Comment sortir d’un enfer monolithique Merci !
  65. 65 04 juin 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 de PayFit, par: Laurentiu Capatina Alexis “Horgix” Chotard Q&A 04 juin 2024