Note de lecture : Continuous delivery, par Jez Humble & David Farley

Note : 4 ; De l’intégration continue à devops ! Des points de vue de grande valeur, mais bien trop verbeux. Jolt Award 2011 !

Ce livre fait en quelque sorte suite au « continuous intégration » publié dans la même série. Ici, l’orientation est résolument « devops », ou comment aller du développement à la mise en production. Aussi le livre ne s’articule pas seulement autour des problématiques techniques, mais aussi de processus et des activités garantissant la mise en production : tests unitaires, tests d’acceptance, gestion des releases, gestion des environnements, etc…

La première partie appelée « fondations » évoque tous les prérequis à la déliverie continue. On y parle de tests, de gestion de versions, etc… Bref de toutes sortes de choses que l’on connaît déjà et déjà détaillées par ailleurs. C’est un peu long et verbeux. On en prend pour 100 pages. Au premier chapitre on s’évertue de mettre en lumière la vue « ancienne » du release management. Pas si ancienne d’ailleurs, avec ses « RC1 », « RC2 », etc. On le fait à l’aide d’antipatterns un peu tarte à la crème, pour au final introduire les qualités attendues d’un bon pipeline d’intégration. Le chapitre 2, « configuration management » traite de deux sujets : la gestion de version, où les auteurs sont opiniated sur le développement en banche principale, et les informations de configuration qui doivent être externalisées. Les deux sujets seront repris plus tard. Ces prises de position, même si elles piquent un peu sont plus que sensées.

Une grosse trentaine de pages est consacrée à l’intégration continue. Pas de révolution ici, on reprend des principes désormais bien connus : un build court, ne jamais laisser un build cassé, raccourcir la boucle de feedback en lançant le build d’intégration au plus tôt. C’est un peu long pour dire des choses que l’on connait déjà et qui ne sont pas le cœur du livre. Je ne m’attendais pas nécessairement à voir évoquer la stratégie de test, mais c’est bien le sujet du chapitre 4 qui clôt la première partie sur une quinzaine de pages. Ce sont des pages bien dépensées cette fois, car les auteurs font le tour du sujet assez efficacement en suivant le framework de Brian Marrick. Cela dit, on est cette fois encore, un poil en marge du sujet.

La seconde partie est plus clairement dédiée au cœur du sujet. Le concept maître développé par les auteurs est le « deployment pipeline ». C’est le cœur du sujet, 175 pages sur 6 chapitre lui sont consacrés. Ne ratez pas le chapitre 5 qui fait le tour du propriétaire en une quarantaine de pages. S’il n’y a qu’un chapitre à lire dans le livre, c’est celui-ci. Le chapitre 6 débute le tour du pipeline avec le build. Ce sont 25 pages décevantes. D’une part on n’y apprends pas grand-chose, on y évoque l’organisation des sources, le scripting et bien trop les outils (ce qui expose le livre à l’obsolescence). Enfin les aspects réellement intéressants tels que les stratégies d’organisation pour optimiser les temps de build ne sont pas abordés du tout.

Place au « commit stage » au chapitre 7. Le chapitre est cependant court, avec sa quinzaine de pages, mais en fait on a encore moins à en dire sinon que ça doit aller vite. On enchaine avec un chapitre 8 consacré aux tests d’acceptance. Les messages vont dans le bon sens : une spécification exécutable et « ne passez pas par l’IHM » mais pas de quoi justifier 40 pages !

On trouve quelques bonnes idées dans la vingtaine de pages du chapitre 9 consacré aux exigences non-fonctionnelles, surtout sur les tests de capacité. Mais dans l’ensemble, cela paraphrase beaucoup Michael Nygard. Vous préfèrerez l’original ! Déployer et releaser sont au programme des 25 pages du dernier chapitre de cette partie. C’est beaucoup de processus et pas grand-chose à en retenir sauf peut-être le déploiement « vert – bleu ».

La dernière partie est forte de 165 pages sur 5 chapitres et est intitulée « delivery ecosystem ». Elle s’ouvre sur un gros chapitre 11 sur la gestion des infrastructures et des environnements. Bien décevant je dois dire, malgré (ou « à cause de » ?) ses 40 pages. On y parle un peu cloud (mais de manière dépassée), pas du tout infrastructure immutable, et on parle un peu de puppet et chef. Docker est apparu depuis, est-il nécessaire de le dire… Grosse déception au chapitre 12 « managing data » qui aborde le sujet épineux de la gestion des données … en moins de 20 pages ! Un traitement très superficiel du sujet, pour couvrir (ou tenter de couvrir) l’évolution d’un schéma de base, les migrations de données, la stratégie de déploiement et de rollback et la constitution de données de test !

Avec près de 35 pages, « managing components and dependencies » prends plus de place pour dire moins de choses. En gros, les auteurs exposent le concept du « component pipeline » qui a la bonne idée de retarder l’intégration et la gestion de dépendance avec Maven ! En plus d’être assez creux, l’ensemble est exposé à l’obsolescence. 35 pages également sur « advanced version control » qui expose quelques patterns d’utilisation des branches, mais dont le message peut se résumer à « dont branch ! Don’t branch ! Don’t branch ! Le propos a par ailleurs du sens sous un couvert un peu dogmatique. Au moins le chapitre fait réfléchir.

Le livre se referme sur un modèle de maturité du déploiement continu. Il pourra me servir à l’occasion, mais le reste du chapitre est ennuyeux.

Pour un « Jolt Award » j’ai trouvé cette lecture bien pénible, essentiellement parce qu’elle est bien trop verbeuse. Les idées développées sont bonnes, assez souvent en-dehors du thème principal du livre, mais elles occupent trop de place. Le choix des auteurs de faire le lien avec la technologie rend le livre sensible à l’obsolescence, c’est d’ailleurs maintenant un fait : Git et Docker entre autres ont mis du plomb dans l’aile au propos, entre autres. Il mériterait une seconde édition, plus à jour, plus focalisée et allégée et évoquant mieux le cloud et des sujets comme l’infrastructure immutable.

Continuous delivery, par Jez Humble & David Farley

Référence complète : Continuous delivery, Reliable software releases through build, test and deployment automation – Jez Humble & David Farley – Addison Wesley / Signature series 2011 – ISBN : 9780321601919

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.