Le DÉFI DES BOG’OPS : notre recette du Team Spirit

le 14/10/2016 par Eric Fredj, Mihail Burov
Tags: Cloud & Platform

Arrivé chez OCTO Technology en 2014, j’ai aimé, adhéré et adopté cette culture prônant le partage des pratiques, l’amélioration de celles-ci et l’esprit d’équipe qui font partie intégrante de son ADN. Aussi le “Je” est rapidement devenu “Nous”.

Cette culture se vit aussi au niveau des communautés de pratiques a.k.a. les tribus. Ainsi chaque équipe s’organise, selon sa taille et son envie, pour se retrouver régulièrement et échanger.

Dans cet article, la tribu OPS vous partage la façon dont 3 d’entre nous ont organisé, pour une vingtaine de personnes, passionnées de Cloud, d’Infrastructure as Code, d’automatisation et surtout de challenges, une journée épique appelée “Le défi des Bog’Ops”.

Parmi les objectifs de cet évènement, passer un bon moment ensemble tout en mobilisant dans un même espace, au même moment, tous ces esprits brillants sur un même sujet dans une cohésion maximale.

Et pour pimenter le tout : une compétition entre 2 équipes.

Les ingrédients

  • une grande salle avec les ustensiles usuels (un rétroprojecteur, des enceintes et un accès réseau digne de ce nom)
  • un plan de travail confortable pour chacun (tables, chaises et ordinateurs)
  • un compte open-bar sur AWS comme terrain de jeu
  • une belle tribu motivée
  • 3 cuistots déjantés et prêts à tout

La recette

L’enjeu étant de faire en sorte qu’aucun ne puisse résoudre seul le défi en une journée, nous avons travaillé sur un scénario d’architecture nécessitant la mise en oeuvre de plusieurs briques techniques imposées :

  1. un stockage de données nécessitant la mise en place d’un cluster Ceph
  2. une API RESTful
  3. un certificat valide reconnu par une CA officielle pour exposer l'API en HTTPS
  4. un déploiement en continu avec Concourse, que nous voulions tester depuis quelques temps, et des noms de job normés exposés via son API propre
  5. le tout posé sur le cloud AWS en utilisant au mieux ses possibilités pour rendre l'application résiliente et auto-scalable

Architecture Générale

Nous avons passé en revue les connaissances et motivations de chacun pour être certain de constituer 2 équipes pouvant relever ce défi et que nous nommerons par la suite :

  1. Les Loutres (The Cuddling Sea Otter Pups)
  2. Les Pandas (The Laughing Red Panda Cubs)

La dégustation

Présentation du menu

Le contenu du défi était finalement dévoilé la veille après-midi à toute la tribu au travers d’un document PDF de 8 pages contenant les consignes et la description de l’architecture à mettre en place.

Entrée

9h00 : tout le monde est déjà là

Avec un début des festivités prévu à 9h30, la tribu n’a jamais été aussi ponctuelle que lors de cette journée du défi. A 9h tout le monde était réuni dans la salle en attendant le “Top départ”. La journée s'annonçait très riche au regard de toutes les tâches à réaliser. Le magnifique tableau de bord avec des indicateurs en rouge complétait parfaitement l’environnement du défi.

DéfiOPS  ops t-shirts  l'enthousiaste

Pour renforcer l’esprit d’équipe, chaque personne a reçu un t-shirt personnalisé avec le nom et le logo de l’équipe, son trigramme et un surnom humoristique personnalisé.

Plat de résistance

Pour relever le défi, les “Pandas” et les “Loutres” se sont auto-organisées pour créer les groupes de travail et traiter les tâches en parallèle : développement de l’API, installation de la CI, mise en place des certificats, infrastructure de stockage, configuration de l’infrastructure AWS, ...

Inspirée par la culture DevOps, chaque équipe a opté pour un kanban sur le mur, puis l’a alimenté avec un backlog des tâches à réaliser et des itérations d’une heure.

À 10 par équipe, et 5 briques à mettre en oeuvre, ce sont naturellement des binômes qui ont émergé pour se répartir les tâches et définir l’architecture cible.

Choix des équipesThe Cuddling Sea Otter PupsThe Laughing Red Panda Cubs
Langage pour l’applicationNode.jsRuby
CertificatLet’s EncryptAWS Certificate Manager
Stockage des objetsUtilisation de S3 en attendant d’avoir le cluster CephUtilisation de S3 en attendant d’avoir le cluster Ceph
Packaging de l’applicationDockerDocker

10h00 : au boulot !

Kanban DevOpsPoint d'avancementA la fin de chaque itération d’une heure, l’équipe présentait le rapport d’avancement :

  • Etat de l’architecture
  • Organisation de l’équipe (qui fait quoi)
  • Rétrospective sur l’itération passée sous format Stand-up
  • Prochaines actions
  • Difficultés et points d’attention

Avec les premiers tirs de performance planifiés à 13h, il restait moins de 3 heures pour développer l’application, la publier et la déployer par la CI sur AWS.

La haute disponibilité, la scalabilité et les clusters Ceph ? On verra après !

Les premiers résultats ne se font pas attendre : les “Loutres” prennent de l’avance

Tableau de bord

Aide

Durant chaque itération, les groupes rencontraient des difficultés diverses et variées. Quand un binôme bloquait, il demandait de l’aide au reste de l’équipe, et c’est ensemble que les idées germaient pour résoudre la problématique.

L’objectif de la matinée est de monter toute l’infrastructure pour passer au vert toutes les tuiles du dashboard validant le bon fonctionnement des implémentations. A table!

12h23 pile : une pause bien méritée

Un déjeuner qui se déroule rapidement : entre les derniers qu’il faudra déloger de la salle et les premiers qui reviennent de leur repas, il ne s’écoule guère plus de 30 minutes.

12h49 : reprise des hostilités

La première campagne de tirs initialement prévue à 13h est finalement reportée à 14h pour laisser le temps aux équipes de finaliser l’assemblage des briques où l’on peut voir que les “Loutres” conservent une légère avance sur les “Pandas”.

Et la campagne de tirs stressante (mais pas pour tout le monde) peut enfin commencer.

Stress test  API

Le scénario de stress est le suivant :

  • Injection de trafic en rampe sur la plate­forme sur une durée de 30 à 40 minutes
    • PUT (pour déposer les fichiers),
    • GET (pour les récupérer avec un traitement non prévisible) vont solliciter chaque plate­forme pour la mettre sous pression

Durant les tirs, les organisateurs lancent :

  • Des crashs “malencontreux” de VM pour perturber le fonctionnement nominal de la plate­forme et évaluer son comportement (cf. design for failure) en charge
  • Des redéploiements applicatifs pilotés au travers de l’API de Concourse pour simuler une montée de version applicative

Performances

Alors que les “Loutres” menaient la course avec une petite avance depuis un moment, la campagne de tirs suivante renverse la tendance et dans un esprit de “bienveillance” (sic), les “Pandas” fêtent cet événement avec modestie. Les pandas

18h 19h : fin des épreuves et résultats Fin de l'épreuveBogops

Toute la tribu a brillamment relevé le défi : à la fin de la journée, chaque équipe disposait d’une solution complètement fonctionnelle avec des écarts qui se tenaient dans un mouchoir de poche.

Dessert

Avec un ROTI de 5 sur cette journée, l’objectif est atteint.

  • Les liens de la tribu sont encore plus forts en créant une cohésion maximale
  • Chacun a pu travailler et se renforcer en équipe sur les thèmes qui nous passionnent
  • La culture DevOps qui nous anime a encore fait ses preuves même sur une échéance aussi courte :
    • communication, partage des tâches et des informations, entraide et solidarité,
    • tests et mesures,
    • rituels d’équipe (kanban, développement itératif, stand-up),
    • infrastructure as code et outillages : Git, Concourse, Docker, Ceph, AWS avec EC2, S3, Route 53, ELB, ECS, …

Cerise sur le gâteau

En prime, voici quelques verbatims de la tribu qui a kiffé toute la journée :

Merci, c'était topissime. Bravo à tous les OPS et aux orga (Eric, Yann et Arnau dmz) qui ont vraiment cartonné !Merci les gars c'était vraiment top ! Chaud pour remettre ça demain ;) Big up a tout les bogops !!!” “Exceptionnel, tout simplement. Merci pour tout, et bravo team pandas on a poutré de la loutre.” “Merci à l'équipe des loutres qui a poutré du panda toute la journée, comme il se doit :)” “Un grand moment de franche camaraderie et de saine compétition !” “Super journée :) Merci à l'organisation (qui a été magique et éclairante) et à l'équipe.”

Avec un message plusieurs fois partagé qui résonne encore : “c'est génial d'apprendre en s'amusant !

La prochaine fois, venez jouer avec nous.

Et si vous êtes sages, nous vous dévoilerons prochainement les coulisses de la préparation d’une telle journée de folie.