#JDB Aujourd’hui, c’était Point Tech. Il s’agit d’une après-midi toutes les 2 semaines,au cours de laquelle tous les développeurs qui le souhaitent peuvent travailler sur des tâches hors sprint, pr améliorer nos outils,creuser des sujets,se former,tester ou nettoyer des trucs,…
📝Par exemple, nous avons publié un nouvel article sur notre blog technique, qui explique les différents types d'environnements que nous gérons ~ engineering.pix.fr/infrastructure…
🕵️‍♂️Autre sujet. Nous avons constitué un petit groupe cross-team de 4-6 personnes pour explorer une micro-instabilité rencontrée hier soir qui a provoquée le crash de 4 conteneurs (sur les 8 en trafic minimal), l'un après l'autre, à 10mn d'intervalle.
Préambule : grâce au scaling horizontal et à l'auto-restart des conteneurs applicatifs (entre autres) – 🙏merci @ScalingoHQ – la plateforme a continué de tourner comme si de rien n'était et aucune donnée utilisateur n'a été maltraitée ou perdue durant l'incident.
👩‍✈️/👨‍✈️ Nous avons pu nous en rendre compte très rapidement grâce à notre alerting entre Scalingo (notre hébergeur de type PaaS) et Slack. Au passage, merci les Captains du passé pour avoir mis tout ça en place ~ engineering.pix.fr/organisation/2….
Les conteneurs ont planté à cause d'un problème mémoire. Nous avons commencé par regarder les métriques & courbes techniques. Nous nous appuyons sur un de nos mécanismes qui balance, toutes les 15mn et pour chaque conteneur, des mesures (heap, rss, CPU, RAM) à Datadog.
Puis nous avons exploré les logs. C'est un art qui demande une minutie, une logique et une sérénité à toute épreuve.

Nous avons constaté, pour les 4 crash de conteneurs, 1 même requête, à chaque fois avec un temps d'exécution long.
Nous avons alors plongé dans le code. C'était pratique et efficace d'avoir des personnes des différentes équipes, pour bien appréhender les choix d'implem, modélisation métier et autres éléments contextuels. Nous avons fini par identifier un bout de code bien suspect.
Notre attention s'est portée sur une fonctionnalité ajoutée récemment pour laquelle on en vient à faire un gros `Promise.all` sur une collec. d'objets pouvant être gros, auxquels on applique un traitement avec une dose non négligeable d'intelligence ou de sous-traitements lourds.
Dans une archi de style classique "plutôt synchrone", il vaut mieux éviter de faire des `Promise.all` sur des collections d'objets de même nature, surtout quand ceux-ci sont gros ou subissent des traitements lourds. À la rigueur, on peut utiliser `Bluebirds.Promise.mapSeries`.
Contre-exemple : il peut être pertinent tout de même d'utiliser `Promise.all` pour effectuer des traitements bien distincts.

Ex: (a) qui appelle une API ; (b) qui fetch des données de la DB ; et (c) qui fetch d'autres données de la DB qui n'ont rien à voir.
La suite : l'équipe produit concernée par le bout de code va s'occuper du sujet dans les jours qui viennent. Ce n'était pas prévu, mais la prod avant tout 🤷‍♂️

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Jérémy Buget 🇫🇷 🇪🇺 🇺🇳

Jérémy Buget 🇫🇷 🇪🇺 🇺🇳 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @jbuget

8 Jul
À la grande question : "comment bien évaluer techniquement un professionnel du code (dev, ops, autre)?" ma conclusion définitive du moment, après des années d'expérience et d'expérimentations en tout genre est…

(roulements de 🥁)

à la fin de ce 🧵
Ça fait près de 10 ans que je participe à du recrutement tech, en tant qu'équipier, puis tech lead, manager et aujourd'hui CTO.

Dans le même temps, j'ai aussi été amené à être moi-même évalué techniquement lors de changements de boîtes, comme dev ou lead.
J'en ai vu des façons de faire : tests techniques façon QCM, strict ou pas, sur papier ou sur le Web,des cas d'études plus ou moins larges et précis, des exos d'algo,sur whiteboard, en pseudo-langage ou dans une techno imposée, des échanges ouvertes,des grilles de questions, etc.
Read 46 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(