n°32
Novembre
2015
Dans les coulisses de l’école informatique

Chaque année, l’IN2P3 organise une école informatique (voir l’interview de Thierry Ollivier dans ce numéro). La préparation de la dernière en date [1] s’est révélée une expérience très enrichissante pour tous ses acteurs. Le thème était très ambitieux, mais l’équipe rassemblée à cette occasion, emmenée par le tandem Thomas Lallart de l’INRA et Foudil Brétel du CC-IN2P3, a relevé le défi, avec un certain panache, je tiens à le souligner.

Bien sûr, l’engagement, les compétences et le talent des intervenants ont été les principaux ingrédients de la réussite de cette petite aventure humaine. Mais je voudrais citer trois outils qui ont rendu possible celle-ci, vécue par une équipe dispersée géographiquement.

GitLab, le gestionnaire de dépôt de code partagé par un groupe de développeurs, a permis à chaque membre de l’équipe de connaître dès la conception, commenter, modifier ou compléter la production de ses collègues. Pas seulement du code, mais aussi et en l’occurrence surtout, des énoncés des exercices et des présentations.

Rappelons que le CC-IN2P3 offre un service GitLab national, et que plusieurs labos de l’IN2P3 ont mis en place une instance locale.

Rendez-vous, le système de vidéoconférence « personnelle et instantanée » (ma définition du service, pour faire court), offert par Renater, a remplacé une multitude de mails et de coups de téléphone, de façon beaucoup plus efficace. La légèreté de mise en œuvre de l’outil a permis de l’utiliser plusieurs fois par semaine, souvent de façon improvisée, et sa capacité de partage d’écran très efficace s’est révélée précieuse.

Un système de « salon de discussion textuelle » (chat en français…), dans lequel chacun entrait automatiquement dès la mise en route de son poste de travail, a permis encore un autre mode d’échanges, comme si toute l’équipe était réunie dans la même pièce, même pendant les périodes de travail en dehors de la préparation de l’école. Une fois le mode d’emploi d’un tel outil bien compris, celui-ci permet d’accéder aux avantages d’une interaction permanente sans être trop intrusif.

Chaque organisateur potentiel d’une école, dont les intervenants doivent interagir fortement lors de la préparation, pourrait probablement tirer profit de ces outils désormais largement accessibles (ou de leurs équivalents). Associés à une mailing-list des intervenants et à un site Indico pour publier le programme et les présentations y compris avec les modifications de dernière minutes, ils constituent un socle solide de construction d’une école ou de tout événement similaire.

Un autre aspect digne d’être mentionné est l’impact réciproque de cette école et des infrastructures informatiques de l’IN2P3/IRFU. Si à l’avenir vous voyez apparaître dans votre paysage informatique des services Sonar ou autres repositories Docker, je me plais à penser que l’école n’y aura pas été pour rien.

Je voudrais conclure en revenant au point de départ : sans l’implication profonde, je préférerais même dire sincère, des intervenants, point d’école de qualité. Et, au-delà de mon coup de chapeau pour toute l’équipe, s’il faut n’en citer qu’un, je remercie particulièrement Thomas pour avoir mis au service de cette édition toutes ses compétences, son expérience assez unique de mise en place d’un véritable suivi de qualité en informatique, son engagement personnel et son remarquable et remarqué relationnel.

Pour l’autre côté du rideau, je laisse la parole à Cécile, à qui nous avons demandé un petit compte rendu de l’école, puis Nathalie et Raphaël pour leur vécu, comme participants en dehors de la communauté IN2P3-IRFU.

Cécile Cavet (APC)  :

L’école informatique de l’IN2P3 a eu pour thème cette année « Les outils de mise en production du logiciel  » et elle s’est déroulée à Lyon du 28 septembre au 2 octobre 2015. Elle s’adressait à tout développeur ayant déjà parcouru le cycle du développement logiciel et qui voudrait faire évoluer celui-ci en se basant sur de meilleures pratiques. Pendant 5 jours, les participants hébergés au Centre Jean Bosco sur la colline de Fourvière ont suivi des présentations et des travaux pratiques de grande qualité au CC-IN2P3.

Les sujets abordés étaient le cycle de vie du logiciel et ses outils : le système de gestion de version Git avec l’interface GitLab, la qualité du code et la dette technique avec Sonar, l’intégration continue avec Jenkins, l’analyse de logs et le packaging de code et le déploiement avec Docker. Pendant toute la durée de l’école, un code en Java permettant de lancer une application web d’analyse de données a été utilisé afin d’illustrer l’intérêt des différents outils présentés.

Le lundi, Thomas Lallart (DSI de l’INRA) et coordinateur de la partie technique de l’école, nous a présenté le cycle de vie du logiciel et les outils qui y sont associés. Nous avons vu aussi des notions importantes comme la qualité logicielle et la dette technique. Quelques cas concrets de ces bonnes pratiques ont conclu la journée.

La journée du mardi était consacrée aux tests logiciels avec en introduction une présentation théorique d’une chercheuse en informatique, Marie-Claude Gaudel (Université Paris Sud). L’outil utilisé ensuite en travaux pratique était Sonar, un logiciel de gestion de qualité de code très utile (utilisation « stand-alone » ou depuis un serveur). Sonar permet de vérifier si les conventions de codage sont bien respectées et il calcule la dette technique en se basant sur les exigences des développeurs ce qui en fait un outil indispensable au développement.

Nous avons utilisé Git le mercredi avec Benoît Bayol (ECP) afin de pouvoir prendre en main ce système de gestion de version très souple mais aussi assez complexe. À travers l’interface GitLab et l’API en ligne de commande, nous avons crée des projets, géré différentes branches et fusionné celles-ci afin de voir les possibilités multiples de Git. Antoine Pérus (LAL) nous a aussi présenté le concept de flux de travail (« Workflow ») pour le développement et particulièrement la gestion des branches à l’aide d’outils spécifiques. Avec Foudil Brétel (CC-IN2P3), nous avons pratiqué Jenkins, un outil d’intégration continue qui exécute automatiquement dans un projet la construction du code et effectue les tests unitaires, vérifie la qualité du code ou encore crée la documentation. Nous avons configuré Jenkins (sur un serveur) pour qu’il construise le code Java compilé avec Maven et nous avons pu ainsi découvrir la variété de « plug-ins » et donc de possibilités offertes par cet outil.

Le jeudi était consacré à l’analyse de logs et à Docker. Fabien Wernli (CC-IN2P3) nous a présenté la gestion des logs au CC-IN2P3. Nous avons utilisé ensuite une librairie Java de log générique qui pilote un logger. Le déploiement avec Docker a été présenté par Sébastien Binet (LPC Clermont). Docker permet d’instancier des conteneurs (machines virtuelles légères) à la demande en local (dans le TP) et sur les infrastructures de Cloud (OpenStack, AWS…). Sur Mac OS X et Windows, l’utilisation de Docker se fait à l’heure actuelle via une machine virtuelle dans laquelle les conteneurs vont être crées. Nous avons utilisé les fonctions de base de Docker comme la récupération d’une image Docker depuis le DockerHub (dépôt public), son utilisation à travers un conteneur et la création d’image via les Dockerfiles. Mais nous avons pratiqué des fonctions plus avancées en compilant le code Java dans des conteneurs et en manipulant le concept de « registry » qui permet de créer un dépôt privé en local ou distant.

Le vendredi concluait cette semaine très riche en technique avec une présentation de Fabien Wernli et Jean-René Rouet (CC-IN2P3) sur l’importance des messages d’erreurs dans les logs et l’utilisation d’ElasticSearch au CC-IN2P3.

Cette école était une grande réussite car, d’une part, les participants sont repartis avec des outils prêts à être utilisés pour l’amélioration de leurs codes et un grand nombre de bonnes pratiques à mettre en place dans leurs projets et, d’autre part, les intervenants très chaleureux et disponibles ont vraiment pu transmettre leurs connaissances dans une ambiance joyeuse et créative. Un grand merci à toute l’équipe.

Nathalie Poulet (LMD) :

Je suis Assistant Ingénieur à l’Institut Pierre Simon Laplace (INSU). Je devais débuter le développement d’un gestionnaire de flux de données lorsque j’ai vu l’annonce de l’école "les outils de mise en production du logiciel". Dans notre équipe, nous avions la volonté de mettre en oeuvre certaines bonnes pratiques de développement dès le début de ce projet ; le programme de l’école répondait à cet objectif. Durant cette formation, j’ai apprécié la diversité des intervenants (recherche, secteur privé, ingénieurs) ainsi que l’alternance cours et TP pour se confronter aux outils présentés. L’appartenance de la majorité des intervenants à des laboratoires du CNRS et de l’INRA est un vrai atout car la formation était orientée sur des problématiques communes à nos pratiques professionnelles. J’ai également beaucoup aimé la richesse des échanges avec les participants sur nos expériences réciproques.

Raphaël Tournoy (CCSD) :

Cette école m’a permis d’avoir un bon aperçu des pratiques et outils liés au cycle de vie du logiciel. Les travaux pratiques m’ont permis de prendre le temps d’expérimenter de nouveaux outils que je n’avais pas pris le temps de tester. J’espère que la plupart des méthodes abordées vont progressivement être mises en œuvre dans les développements de notre unité. Merci aux organisateurs, aux intervenants et aux participants pour cette formation dans une ambiance conviviale.

Christian HELFT (LAL)

[1] https://indico.in2p3.fr/event/11728/

Infrastructure

Docker & HENP
Rechercher
     

Directeur de la publication  : Alain FUCHS.
Responsables éditoriaux : Giovanni LAMANNA et Pierre-Etienne MACCHI.
Comité de rédaction : Frédérique CHOLLET LE FLOUR, Virginie DELEBARRE DUTRUEL, Christian HELFT, Dirk HOFFMANN et Gaëlle SHIFRIN.

logo CCIN2P3
© CCIN2P3