Retour aux expériences

Prisma Media

Développeur Backend Node.js / AWS

janv. 2021 — mars 2023

Overview

Premier groupe de presse magazine en France (Femme Actuelle, Géo, Capital, Voici, Télé-Loisirs…), filiale Louis Hachette Group, siège à Gennevilliers. Team User (~5–6 backend) : services transverses d'identité et de diffusion de données consommés par les équipes des magazines. Stack Node.js/TypeScript, AWS (Lambda, SQS, DynamoDB), Stripe, Elasticsearch.

Features, challenges & résultats

Userhub — bus d'événements interservices pour la donnée utilisateur. Participation à la création, la maintenance et l'évolution de l'outil qui diffuse les changements vers Elasticsearch, Bigtable et les services des magazines (Géo, etc.). Événements créés via endpoint → Lambda, propagés dans des queues SQS ; périmètre configurable par consumer. Création de Lambdas consommant ces queues pour indexer les changements utilisateur dans Elasticsearch et Bigtable. Tâches planifiées pour rejouer les messages en DLQ.

  • Orchestrer la diffusion vers des dizaines de consommateurs hétérogènes (search, magazines, data) avec configuration par service et reprise sur DLQ. Sur Elasticsearch, instance sous-dimensionnée : trop d'événements indexés en parallèle → erreurs HTTP 429 (too many requests).
  • Bus opérationnel en prod — socle transverse utilisé par les équipes magazines. Stabilisation de l'indexation Elasticsearch en limitant le nombre d'invocations Lambda concurrentes sur la queue dédiée (ScalingConfig.MaximumConcurrency sur le mapping SQS → Lambda).

Script automatique de suppression des utilisateurs inactifs (conformité RGPD). Parcours des comptes inactifs et suppression selon la date de dernière activité sur les services Prisma. Volume de données important — script monitoré de près et testé intensivement avant mise en prod.

  • Suppression à grande échelle sans faux positifs : scripts testés intensivement et monitorés, compte tenu du volume de données et du risque de suppression irréversible.
  • Pipeline d'effacement automatisé en prod pour les comptes inactifs éligibles.

Accélération des scripts de migration DynamoDB. Les scripts parcourant des millions d'entrées pouvaient prendre plusieurs jours. Mise en place du parallel scan DynamoDB pour lire plusieurs segments de table en parallèle.

  • Scripts de migration séquentiels trop lents sur des tables de millions d'entrées — repenser le parcours sans saturer DynamoDB.
  • Temps d'exécution divisé par 10 ou plus dans certains cas grâce au parallel scan.

Webhooks Stripe : corrections critiques et évolution de l'intégration paiement web. Développement de webhooks pour les achats hors mobile. Rattrapage d'un bug critique ayant supprimé de nombreux abonnements (scripts de récupération via l'API Stripe). Présentation d'optimisations : webhooks ciblés plutôt que handlers surchargés.

  • Incident critique : enquête pour identifier les profils impactés en parsant les logs récupérés via l'API Stripe sur la période de l'incident, puis automatisation de la recréation des abonnements. Le PM gérait les gestes commerciaux (extension de période, etc.) pour les utilisateurs concernés.
  • Profils impactés identifiés, abonnements recréés automatiquement ; gestes commerciaux coordonnés côté produit pour les utilisateurs touchés.

Backend du paiement mobile pour les apps magazines. Conception du flow permettant aux apps iOS/Android d'acheter magazines ou abonnements ; présentation aux équipes mobile et implémentation de la partie Team User.

  • Coordination avec les équipes mobile sur un flow de paiement sécurisé partagé entre plusieurs apps magazines.
  • Flow backend livré et consommé par les apps magazines.