21 septembre 2009
Imprimer ce billet

CITCON Paris 2009

Le CITCON (prononcé « KITCON ») a eu lieu vendredi et samedi dernier à Paris, pour la session européenne 2009. Vendredi soir, après les présentations d’usage, l’open space a commencé par le remplissage du tableau des sessions par les fameux post-it. Pour rappel, les participants écrivent un thème sur un post-it et le collent n’importe où sur le tableau. C’est autour d’un verre, et entre deux discussions, qu’on vote et place les post-it dans les cases proposées pour chaque session.

Samedi matin, j’ai assisté à la session sur la gestion de source dans un environnement distribué. Après une mise au point sur la différence entre gestion de configuration et gestion de source, nous avons entamé la discussion sur l’outil très utilisé dans le développement Open Source dénommé GIT. Cet outil fonctionne en mode décentralisé : il n’y a pas un unique serveur de sources, mais chaque développeur fonctionne à la fois en mode serveur et en mode client. Le développeur peut, par exemple, versionner très souvent ses sources sur son serveur local, mais décider de ne valider ses changements qu’en une seule fois sur le serveur de référence (il peut même signer sa validation !).
Le cas d’un projet partagé entre la France et l’Australie m’a particulièrement intéressé. Le responsable avait mis en place un serveur intermédiaire GIT sur chaque site pour éviter les échanges réseau trop nombreux avec un serveur central. Une synchronisation régulière permettait aux deux sites d’être à jour. Il s’était rendu compte au bout d’un certain temps que cela était en réalité inutile, car la qualité du réseau faisait qu’on pouvait se permettre de n’avoir qu’un seul serveur. En revanche, si cela est peut-être vrai pour l’Australie, ce ne l’est pas forcément pour tous les pays.
Avec GIT, chaque copie du repository est une nouvelle branche ; un développeur en local, c’est une branche. Le fonctionnement des branches est un vrai casse-tête pour des outils comme Subversion, et cette approche propose finalement un peu de simplicité. Mais pour le moment, les serveurs d’Intégration Continue ne font pas la différence entre modes centralisé et décentralisé. Rien n’est proposé aujourd’hui pour mieux profiter d’un monde distribué…

Après un ravitaillement en café et jus d’orange, j’ai suivi Vincent Massol, de XWiki pour savoir comment améliorer notre façon de faire une release avec Maven. Arnaud Heritier faisait parti de la session et après une présentation du processus pour XWiki, ils ont démarré le codage d’une extension au plugin dependency. L’objectif était d’ajouter un goal pour récupérer les différences entre les versions des dépendances entre deux releases. Il faudra être attentif aux prochaines sorties de ce plugin, il y aura peut-être une nouvelle fonction.
Le constat, finalement, était qu’il y avait encore beaucoup d’étapes manuelles lors de la release d’une version et qu’à part développer ses propres MOJOs, Maven était assez loin du compte. Mais ça avance comme le montre le plugin versions, dont Arnaud Heritier nous a vanté les mérites.

L’après-midi, trois sessions nous attendaient mais je souhaite ne parler que de la dernière sur la configuration et le déploiement, les autres étant déjà traitées sur différents blogs. Un problème récurrent se pose sur chaque projet, celui de la modification des valeurs selon l’environnement sur lequel on déploie. On utilise, par exemple, des fichiers de propriétés qui sont remplacés au moment du packaging. Si on s’est trompé dans les propriétés ou si la valeur n’est connue que de la personne qui déploie, il faut dézipper le fichier, changer la valeur et refaire le package. Bonjour la galère !
Deux ingénieurs de ThoughtWorks nous ont présenté leur petit dernier : Escape. Sous ce nom très commun se cache une application Java dans laquelle on peut sauvegarder les valeurs des propriétés de chaque application dans un environnement donné. Ces valeurs peuvent être cryptées. Pour y accéder, une simple interface REST permet d’interroger la base et de récupérer la valeur : l’url http://mymachine:8080/environnements/dev/citcon/city, par exemple, renvoie la valeur de city pour l’environnement de dev sur l’application citcon. Je trouve ce projet simple et efficace pour améliorer la gestion des propriétés de nos applications. La mise en œuvre demandera un peu d’effort pour disposer d’un serveur central mais cela en vaut certainement la peine pour s’affranchir de cette partie de la configuration.

La conférence s’est terminée par un tour des participants sur leur « AA moment » (ie. ce qu’ils ont préférés!) et une distribution de livres sur l’intégration continue.
J’en ai gagné un, écrit par Paul M. Duvall, qui était juste à côté de moi, et me l’a dédicacé. Et c’est aussi ce qui rendait cette journée franchement sympathique et réussie; mon « AA moment » a été de mettre enfin un visage sur des auteurs de blogs ou des contributeurs open source, et surtout pouvoir converser de visu.