Outils & astuces du continuous delivery

Après 2 jours passés à arpenter les couloirs de Devoxx France 2014, je décide de clôturer par la conférence animée par Pierre Chaussalet et Eric le Merdy concernant le continuous delivery.

La mise en production continue obtient en général l'adhésion de tous car cela paraît une évidence d'offrir aux utilisateurs le plus tôt possible les dernières fonctionnalités développées.
Le continuous delivery est d'ailleurs un des points mentionnés depuis bien longtemps dans le manifeste agile. Seulement en pratique, peu de projets sont en continuous delivery notamment à cause du temps nécessaire aux différentes étapes de mise en production (build, tests, packaging, installation sur la plateforme de production).
La mise en place du continuous delivery est facilitée par l'utilisation de la plateforme PaaS Docker (Plateform As A Service).
Il s'agit d'un container léger et auto-suffisant qui, une fois construit, peut être déployé dans n'importe quel environnement : développement, intégration, production.
Tous les outils, dépendances, services et composants nécessaires au fonctionnement du projet sont embarqués dans le container.
Le principe est le suivant : chaque construction donne lieu à une image docker taguée qui est ensuite déployée dans le container.
Docker s'interface très bien avec l'outil d'intégration continue Jenkins. Ainsi, lors d'un build, Jenkins commence par lancer le container docker. Le build s'exécute sur ce container et une fois terminé, Jenkins récupère le résultat du build. A la fin, le container docker est détruit.
Pour aider à limiter les risques et faciliter le retour en arrière en cas d'échec d'une mise en production de version, Pierre et Eric conseillent l'application du pattern Blue-Green.
Si l'application de version N est hébergée dans le répertoire Blue, alors l'application de version N-1 est hébergée dans le répertoire Green. Un lien symbolique ou reverse proxy
permet de pointer vers l'une ou l'autre des versions sans que les utilisateurs ne s'aperçoivent d'une interruption de service.
Docker s'utilise pour le moment exclusivement sous Linux même s'il est possible d'utiliser une machine Vagrant en cas d'absence d'OS Linux.
Docker est en tout cas un des sujets qui a fait le plus de bruit cette année à Devoxx dans bon nombre de conférences : il y a donc fort à parier qu'il devienne tout comme Jenkins un maillon
indispensable dans la production de logiciel.