Node et autres goodies @ eTF1

english version

Main stack (ordre alphabétique) : Bunyan, Cucumber, Docker, Drone, Knex, PostgresQL, Restify, Swagger, TypeScript

Récemment, pendant 4 mois, j’ai eu l’opportunité de refaire, quasiment from scratch, le Micro Service de Paiement de la plus grande chaîne d’Europe. Voici quelques retours sur mon aventure avec NodeJS (6.X)

“ TF1 n’est pas Netflix “
Je sais ! Et la dernière fois que j’ai regardé la chaîne, House en été à sa première diffusion #MissYouHouse mais niveau tech aucune honte à avoir
“ TF1 connais le terme Micro Service ??? “
Réaction d’une personne avec 10ans d’expérience dans le domaine des french startup #TrueStory

Après 10ans de legacy PHP et d’autres choses effrayantes, le temps été venu de basculer sur du Node, Go, Docker, Jenkins et autres goodies. Pendant ma présence le pipe end to end Jenkins été en (active) élaboration. Le Lead Dev, Mr R, certainement le meilleur ingénieur avec qui j’ai eu l’occasion de travailler (Oui, TF1 sais attirer les talents #ShowMeTheMoney), faisait le pont entre Dev, Ops et Exploit

Nous étions en mode BDD et, pour les raisons mentionnées plus haut, dans la zone VOD nous utilisions Drone en CI et un wrapper custom sur Cucumber pour les tests. Un work flow assez fluide. Dans 90% des cas, pour ma part, les tests étés une perte de temps “mais” juste pour les 10% restant où j’ai dû affronter des régressions inattendus sur des fonctions mineurs, l’extra work en valait le coup et mérite bien d’être un standard dans le design de software

“ Make it work, make it right, make it fas… secure, crazy secure “

Qui dit paiement, dit sécurité. Nous avions un focus …pardon… un focus “paranoïaque” sur chacune des couches dans ou externe au service. Egalement le genre de challenge que je cherché en plus de jouer avec Node crypto, SHA256 et du JWT. Une fois, Mr M, un chef de projet très respecté avec 10ans d’expérience qui dort 5h, joue de la guitar pendant qu’il optimise son modèle de Deep Learning de treading nous dit : “Ok mais si quelqu’un récupère le token. Créé une extension Chrome et offre des films gratuit au monde. Qu’est-ce que vous faites ?”

“ Tu connais Snyk ? “

Comme nous étions soucieux de nombreuses choses. Je vais juste en mentionner quelques une sur Node et Postgre. “Les Dev JavaScript, vous faites npm install pour n’importe quoi” Mr R. est un ancien Dev Java. L’empreinte des packages faisait partie de nos préoccupations. Sous un certain angle, toute l’app n’est autre qu’une chaine de Promesses. Quand bien même, je n’ai pas pu utiliser BlueBird (même si Knex l’utilise) #ComeOnLead

Travaillant sur ma paranoia, j’ai découvert Guy Podjarny un Web Security Sensei et co-fondateur de Snyk. Un style d’agent de sécu qu’on inclut niveau app ou CI et qui vous préviens via mail, Slack etc si une faille de packages ou sous-packages et connus. Adoré par le Lead, tout projets Node aura Snyk intégré niveau CI

“ C’est hypothétique, moins de 0.1% de cas d’erreurs mais nous devons savoir le gérer “

Supposons que vous avez exactement, à la même micro-seconde, deux threads essayant d’écrire en base, comment vous gérez ? “Lock on Concurrency”(Verrou sur simultanéité) est la réponse. J’admet que le faire bien, comprendre le bon niveau de granularité, correctement contrôler ce qui doit ou non être contraint au commit ou rollback de la transaction été un bon challenge. Merci au Lead et Mr F. Un dev qui connais si bien les outils que nous utilisons que je l’ai surnommé : “Stack OverFlo”(Flo, les trois premières lettres de son prénom)

“ Slash payment, slash ça marche ! “

Côté delivery, vous avez Mr H, le type d’homme qui se soucie vraiment de votre bien être et qui vous ferra un Jira pour vous rappeler de lire vos Jira. Et Mr K un ex ingénieur au iPhone fracassé et costume Antony Morato qui a arrêté de faire des phrases depuis qu’il est devenu super delivery #TooBusyMan ont des skills également. Vous savez le : “c’est compliqué” qu’on peut donner pour être tranquille ?! J’ai vu pas mal de dev échouer dessus ! Et même si vous y arrivez. Mr K ira voir Mr R pour un décryptage et reviendra vers vous avec un léger sourire de vainqueur

Bien sûr ce n’est pas une startup. Vous n’avez pas de gros oreillers colorés ou Yes We Can sur le mur mais ils essayent. Une pièce avec Switch et des contests MarioKart, des Free Fridays, des After work etc…

Je sais que ce n’est pas le cas pour tous mais je ressors avec un bon souvenir de cette expérience et suggère à qui veux essayer de ne pas hésiter. J’ai aidé le Lead sur son Q&A de recrutement … #Enjoy ;-)