Le DÉFI DES BOG’OPS : Les coulisses

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

Comme narré l’autre jour, la tribu OPS a organisé, pour elle et quelques affidés venus d’autres tribus, une journée de folie, épuisante mais très enrichissante. Suite à de nombreuses demandes, nous partageons ici les coulisses du défi et nos conseils pour en organiser avec vos équipes.

Avec près de vingt consultants, la tribu OPS se retrouve très souvent éparpillée sur différents sites, ce qui ne facilite pas la tâche pour trouver des créneaux communs à tous propices à ces échanges.

Armés d’un Doodle, nous avons profité du creux de l’été et navigué entre les congés de chacun, pour trouver LA date. L’invitation est aussitôt lancée pour toute la journée.

Les préparatifs

Les ingrédients nécessaires

  • du temps libre pour tout organiser
  • un compte open-bar sur AWS pour la préparation
  • 3 cuistots déjantés et prêts à tout
  • une belle tribu qu’il faudra découper en 2 équipes équilibrées

La recette

Une fois la date fixée pour cette journée, il restait à la préparer et ce ne fut pas une mince affaire tant pour scénariser l’évènement que pour faire patienter les compétiteurs en leur laissant l’effet de surprise.

Les préparatifs côté cuisine

Une des principales difficultés pour ce type de challenge est de dimensionner la complexité du problème à résoudre pour les équipes :

  • Trop simple et les participants restent sur leur faim
  • Trop long et compliqué et c’est la frustration garantie de ne pas avoir abouti.

Aussi, plusieurs ateliers de brainstorming ont été nécessaires afin de définir une architecture suffisamment riche pour tenir tout le monde en haleine sur une journée mais restant réalisable dans le temps imparti.

Résultat des courses, 5 briques techniques à maîtriser et assembler. Certaines imposées. D’autres libres.

Architecture générale

Une fois le périmètre défini, les cuistots enfilent leur tablier et se mettent rapidement au travail :

  • Achat et mise en place du nom de domaine bogops.io dans route53
    • un mini-site Web avec un compte-à-rebours a été mis en place
  • Développement de nos outils pour la compétition :
    • monitoring unitaire des briques en Python
    • injection de charges avec Gatling packagé dans une image Docker
    • client pour l’API de Concourse afin de piloter les jobs de déploiement des équipes
    • script permettant de tuer des instances pendant les tirs de performance
    • déploiement d'un cluster Ceph complet (3 MON, 5 OSD et 2 RADOS Gateway en High Availability)
  • Pour tester notre outillage, développement d’une puis de deux implémentations de référence (1 en Python, 1 en Go) afin d'évaluer leurs performances respectives

Pour assembler le tout et automatiser la création de l'environnement du défi, nos cuistots ont écrit un playbook Ansible pour :

  • provisionner l’infrastructure sur AWS
  • builder les images Docker
  • déployer tout l’outillage nécessaire à la journée
  • alimenter un dashboard basé sur Dashing affichant le (bon?) fonctionnement des briques et les résultats des tirs de performances
  • alimenter un site web publiant les rapports Gatling mis à disposition des équipes pour analyse et amélioration

Et pour faciliter le travail des équipes, leur ont été fournis :

  • un fichier swagger.yml décrivant l’API
  • un injecteur simple pour valider leur API, packagé dans une image Docker
  • une seconde image Docker pour simuler le scénario d’injection d’une durée de 5 minutes

Les préparatifs côté salle

En parallèle des travaux menés en cuisine, il est nécessaire de motiver les participants et tisser un lien avec eux durant toute la phase de préparation sans leur dévoiler ce qui les attend.

Très curieux de nature, nous avons dû les envoyer sur quelques fausses pistes.

J-30 : Découpage en 2 beaux morceaux

Pour la constitution des équipes, nous avons envoyé le premier teaser suivant :

Teaser

Comme prévu, le résultat de cette auto-organisation a abouti à des équipes déséquilibrées.

Celles-ci commençant à s’organiser (création de channels Slack pour échanger, déploiement et partage de clés SSH, création de dépôt git communs, …), nous avons profité de l’arrivée de quelques participants retardataires pour mélanger ces équipes à nouveau quelques jours plus tard sans leur donner la composition finale déjà établie dès le début pour assurer une compétition équitable.

Et puis, si on ne peut plus s’amuser à créer de fausses pistes…

The Cuddling Sea Otter PupsThe Laughing Red Panda Cubs
The Laughing Red Panda Cubs
J-10 : Cuisson à la vapeur

Pour maintenir la pression dans la cocotte, rien de tel qu’un peu d’enfumage avec un sondage (parfaitement inutile, donc indispensable) envoyé aux participants pour élire les technologies à utiliser pour la journée.

sondage_technique

J-1 : Ouverture de la marmite

Tout est prêt. Le document décrivant toutes les modalités du défi est enfin envoyé aux participants. A cet instant, les cuistots sont eux aussi éparpillés sur différents sites au milieux des troupes. A réception du courriel, la lecture commence dans un silence assourdissant.

productivite

Une fois digéré, la reconfiguration est immédiate et les équipes définitives commencent à parler organisation pour le lendemain. Et nous devons freiner leurs ardeurs avant le jour J sans quoi certains auraient commencé par une nuit blanche pour arriver avec de la matière au petit matin : tout le monde devra être en forme.

Il faut gagner.

Take away

Nos conseils pour organiser un défi pour vos équipes :

  • Ne pas négliger le temps de préparation : une dizaine de jours de travail nous ont été nécessaires
  • Bien connaître les participants afin que chacun y trouve son compte et une fierté de contribuer
  • Gamifier le défi : choix du nom des équipes, création et affichage d’un dashboard en temps réel pour animer la compétition, un site web avec un décompte jusqu’au jour du défi
  • Prévoir des goodies, ici des T-Shirts personnalisés, qu’ils portent encore fièrement à diverses occasions
  • Prévoir du teasing tout au long des étapes de préparation
  • Utiliser les services Cloud, ici AWS, pour toute l’infrastructure, nous a grandement simplifié la tâche
  • Bien sûr, s’amuser aussi côté organisateurs, d’où les petites mises en bouche parsemant la préparation et l’animation pendant la journée
  • A l'issue du challenge, partager les dépôts de code (injecteurs, dashboard, implémentation des APIs) de tous les participants, y compris organisateurs, pour construire un patrimoine commun
  • Côté logistique, anticiper la dat****e pour avoir le plus de participants possibles, prévoir une salle assez grande et des plateaux repas (en respectant les différents choix alimentaires) pour maîtriser le temps de la pause déjeuner
  • Organiser la soirée pour échanger et fêter le succès (par exemple avec un BBQ bien mérité sur la terrasse)
The Tired Sea Otter PupsThe Tired Red Panda Cubs

De bonnes nouvelles en bonus :

  • Une facture AWS inférieure à 60 USD pour la préparation et la journée complète avec 20 personnes qui s'amusent sans compter mais qui font le ménage à la fin (raison pour laquelle vous ne trouverez quasiment rien sur les sites *.bogops.io jusqu'à la prochaine fois)
  • Du buzz : les autres équipes sont passées nous voir ou nous ont demandé un accès au dashboard pour suivre l'avancée en temps réel, y compris depuis les filiales à l’étranger, avec des verbatims motivants :

Je trouve cette initiative magique” “Super initiative en effet. Il faut le faire en cross tribu !” “Un grand bravo pour l'idée et pour toutes ces bonnes ondes que vous nous envoyez, ça fait du bien!!!” “Wahouh. Je suis passé dans la salle et c'est très impressionnant ! Bravo” “Vous êtes une sacrée bande de déjantés : j'adore ! ”

N'hésitez pas à nous contacter pour en savoir plus ou organiser un évènement personnalisé avec vos équipes.