Un Gameday dans ma team : Un besoin de transmettre du savoir-faire

Je suis actuellement lead devops chez Jin, une agence de communication digitale qui édite des logiciels, mon objectif étant de faire en sorte que l’infrastructure ne soit pas un frein, mais au contraire une porte ouverte à la création pour l’équipe de développement.

J’ai participé à la création des outils et à leurs évolutions, de fait j’ai une vision claire et transverse du fonctionnement du système, d’autre part je l’ai construit de manière à ce qu’il soit résilient, automatisé et avec un monitoring efficace. Seulement je vais bientôt partir de chez Jin, ayant la volonté d’évoluer vers un poste de consultant technique dans une autre structure, il est ainsi devenu nécessaire que je transmette ces connaissances avant mon départ. Notre équipe est constituée de 5 développeurs, avec des spécialités réparties selon les affinités de chacun : Frontend, Backend, NodeJS, Python, IA, Ops.

Mon expérience m’ayant convaincu que rien ne vaut la pratique pour assimiler des concepts, j’ai préparé une série de workshops à difficulté progressive, mêlant théorie et mise en pratique. Au début seulement 2 développeurs y participaient, puis aujourd’hui tout le monde est enthousiaste pour y assister et ainsi progresser sur l’ops.

Une expérience de Gameday

Le 20 mars dernier, j’ai assisté à un meetup sur le Chaos Engineering, organisé par Benjamin Gakic et Christophe Rochefolle.

Ce meetup contenait 2 parties : une présentation du métier de S.R.E, puis un Gameday réparti par équipes de 7 parmi tous les participants. L’idée étant de nous faire résoudre des pannes simulées sur une appli PHP tournant sur AWS. Ce que j’ai retenu du Gameday :

  • Personne ne se connaissait dans notre équipe, et pourtant cette expérience a permis de créer des liens très vite, en tirant partie des qualités de chacun.
  • Sans la pression d’une prod réelle, même si le challenge était de gagner, nous étions quand même sereins et les plus expérimentés prenaient le temps d’expliquer les concepts aux autres.
  • J’ai réalisé que le concept était à la portée de tout le monde et qu’on pouvait au final mettre en place des Gamedays assez simplement.
  • Cela permet une approche pratique, ce sont des simulations et pourtant ce sont des situations qui peuvent réellement arriver en prod, mieux vaut y être préparé et même entraîné.

Donc pour résumer, j’ai réalisé qu’un Gameday était convivial, accessible, formateur et axé sur des mises en situation réelles.

Intégration du Gameday dans les workshops

J’ai donc fait ma série de workshops, au début les élèves tâtonnaient, puis ils devenaient de plus en plus curieux et avides de connaissance.

J’ai remarqué que si je donnais la solution, les élèves ne faisaient pas forcément l’effort de lire le code ou de comprendre les fonctionnements : ils ont plutôt tendance à acquiescer, appliquer la méthode et posent assez difficilement des questions, alors qu’il y a matière.

Pour que les choses rentrent vraiment, il est préférable de faire de vrais workshops, donner des directives qui sont dans leurs cordes mais avec une difficulté progressive, puis les mettre au pied du mur face à un problème.

A partir de là les questions fusent, les “pourquoi” et les “comment”, les élèves s’impliquent réellement, se sentent concernés et s’imprègnent du sujet.
Ensuite au prochain workshop on pourra augmenter la difficulté.

Tout ça c’est très bien, mais tout ce que je leur ai appris c’est du build : comprendre les rouages, les avantages d’utiliser telle ou telle technique et comment les mettre en place.

Mais il me restait une connaissance que j’avais appris sur le terrain, à la dure, et qu’il fallait que je leur restitue : comment réagir si malgré toutes les précautions, il y a une panne en production ?

Personnellement j’ai développé une sorte de sixième sens qui me fait sentir les pannes en amont et par déduction trouver très vite, de tête, un moyen satisfaisant d’y répondre, mais comment transmettre cette faculté ?

Dans mon plan à difficulté progressive, il y avait dans l’ordre, la compréhension des concepts, la prise en main unitaire des outils de base, l’assemblage de ces outils, puis la reconstruction complète des clusters en infrastructure automatisée, puis enfin la description des metrics, ainsi que les procédures classiques à effectuer en fonction de différents symptômes.

C’est là qu’il m’a paru évident qu’il fallait mette en place un Gameday : simuler moi même des pannes sur le système, et demander aux élèves de détecter et réparer les pannes le plus vite possible.

Mise en pratique et déroulement du 1er Gameday

Je venais de faire une suite de workshops sur la mise en place d’un cluster ElasticSearch avec le C.T.O et le Lead Developer, qui sera plus tard responsable de la partie Ops.

Après avoir présenté les metrics et les procédures courantes à effectuer en cas de problèmes, c’est là que j’ai mis en place le 1er Gameday afin de valider ces connaissances et les mettre face à des cas concrets.

Il n’y avait que 2 personnes, qui n’étaient pas encore vraiment à l’aise sur le sujet, je leur ai proposé de faire équipe ensemble pour détecter les pannes, il n’y avait donc pas de rivalité mais uniquement de l’entraide.

J’ai donc procédé au déclenchement d’une suite de pannes :

  • Stop du process ElasticSearch sur les Data nodes
  • Stop d’une instance EC2 Data node
  • Mettre le CPU à 100% sur le master
  • Casser un Security Group
  • Mettre l‘espace disque à 100% sur le master

Lors de cette session, ils n’ont pas trouvé les réponses d’eux même, j’ai dû les guider et leur expliquer les commandes et la démarche à suivre au fur et à mesure.

Cela montre à quel point on était passé à côté de choses que je tenais pour acquises, ce qui était évident pour moi était loin de l’être pour eux.

C’est très positif au final, car ainsi on a pu compléter les cours précédents par des procédures et des commandes à la fois concrètes et indispensables.

Mise en pratique et déroulement du 2ème Gameday

Le 2ème Gameday était un peu plus élaboré, il faisait cette fois suite à une série de workshops concernant un cluster Hashicorp Nomad / Docker pour faire tourner des microservices.

Les 3 personnes qui ont assisté à ces workshops étaient le Lead Developer, ainsi que 2 autres développeurs nous ayant rejoint en cours de route.

Pour faire 2 équipes, les 2 développeurs se sont associés, face au Lead Developer qui avait été plus formé.

Vu qu’il y avait cette fois des équipes avec l’enjeu de gagner, il fallait :

  • des règles claires, celui qui gagnait le point était celui qui m’expliquait la panne de façon précise.
  • prévoir un nombre impair de pannes pour éviter l’égalité.
  • un enjeu : pour le coup, je ne me suis pas ruiné, la seule chose qui m’est venu à l’idée fut de donner un gif choisi avec soin aux heureux gagnants !
  • Idéalement il faudrait créer un environnement par équipe, pour cette fois tout le monde avait le même environnement et je ne leur demandais que de détecter les pannes et de ne pas les réparer pour laisser l’autre trouver.

Ainsi, avec les équipes, le challenge était présent, c’était à celui qui trouvait la panne le plus vite et au fur et à mesure, les équipes réussissaient à détecter les pannes de plus en plus vite !

J’ai repris exactement le même pattern de pannes que pour le précédent Gameday, en l’adaptant, afin de voir si les notions avaient été réellement assimilées.

Et bien finalement ce sont les 2 développeurs qui ont remporté la partie, face au Lead Developer, mais d’une courte avance et à un point près !

Cette fois les équipes ont réussi à détecter les pannes d’elles mêmes, il y a donc eu du progrès.

A la fin, assez naturellement, nous avons rédigé un plan précis en cas de pannes : des points clés à vérifier et la démarche pour aller du plus général au plus particulier pendant l’investigation.

Tout ceci afin que le plus grand nombre de personnes dans l’équipe soit le plus efficace possible pour réagir en cas de panne sur l’infrastructure, au moins pour identifier les problèmes en cas de pannes, au moins pour les dashboards et logstores qui sont accessibles à l’ensemble des développeurs.

C’est devenu une connaissance partagée dans l’équipe et facilement transférable sous forme documentée, sans pour autant avoir eu besoin de faire face à de réels déboires en production.

Bilan et perspectives

Au final, je vous ai raconté mon parcours d’apprenti-formateur et comment les Gamedays m’ont aidé dans ma démarche.

Faire des simulations permet de vivre ces expériences sans stress et sans risques pour l’entreprise.

Les retours sont positifs, les participants ont pris du plaisir, pour une discipline qui est pourtant assez austère par nature, à savoir faire de la maintenance d’infrastructures.

L’équipe en a retiré à la fois de l’expérience, mais aussi des marches à suivre concrètes et documentées qui leur permettront de faire face aux situations à venir, ainsi que de la transmettre à de nouveaux arrivants.