Note de lecture : Release It ! 2nd edition, par Michael T. Nygard

Note : 9 ; Actualisé et repensé, mais toujours aussi riche et pertinent !

11 ans se sont écoulés depuis la parution de la première édition. De mon point de vue, c’était le premier vrai texte évoquant la culture devops. A vrai dire, j’ai continué à le considérer ainsi jusqu’à la parution de cette nouvelle édition. De prime abord, celle-ci semble avoir subi une cure d’amaigrissement… en fait, c’est le papier qui est plus fin, car celle-ci compte le même nombre de pages, mais réparties en 17 chapitres (au lieu de 18) sur 3 parties. Il s’est passé des choses en 11 ans, et nous allons voir que le texte le reflète bien.

Le chapitre d’introduction n’a guère bougé dans son essence avec son fameux « un million par ci, un million par là… », mais sa forme a été remaniée. La première partie « create stability » compte aussi toujours 4 chapitres. Je retrouve au chapitre 2 la même histoire horrible de l’exception qui a mis un aéroport en rideau. L’erreur dans le code est visible sans être grossière, mais les conséquences sont catastrophiques. L’ambiance est campée pour ce livre emblématique. Le chapitre 3 développe sur cette base la notion de « cracks propagation » en faisant référence au livre de James Chiles « Inviting Disaster ». Je ne retrouve pas dans ce chapitre le diagramme de patterns de l’édition précédente : dommage.

Au chapitre 4, on retrouve les antipatterns de stabilité. C’est un chapitre particulièrement conséquent avec 60 pages. Sa structure épouse celle de l’édition précédente, mais le propos est sensiblement modernisé dans cette seconde édition. Cela dit, j’avais trouvé l’édition précédente plus pédagogique à cet égard. L’auteur semble avoir voulu gagner en efficacité dans son propos. Cela a un prix. Après les antipatterns, les patterns. Ils sont présentés au chapitre 5. Les patterns sont les mêmes d’une édition à l’autre, mais l’auteur a fait le choix de les modifier dans le détail. L’ensemble est un peu modernisé sans que la différence soit notable.

La seconde partie s’intitule « design for production », c’était « capacity » dans l’édition précédente. Il s’agit de 6 chapitres couvrant un peu plus de 100 pages. En fait, ce n’est plus du tout la même partie. Dans le chapitre 6 qui ouvre cette partie, l’auteur nous raconte comment la mauvaise gestion d’un pool de connexion peut mettre en péril une compagnie toute entière. Cela illustre aussi le principe du ROC (recovery-oriented design).

Dans les 5 chapitres suivants, l’auteur va passer en revue les « 5 layers of concern ». Cela débute au chapitre 7 par les fondations. Ici on parle hardware, ports réseaux (et redondance), mais aussi conteneurs et VLAN. L’auteur insiste sur la nécessité d’utiliser la même image applicative d’environnement en environnement. Une idée également promue par Heroku avec son « 12 factors app ». Le chapitre 8 se focalise sur les process et la gestion de configuration, promulguant si besoin en était l’infrastructure immutable. Mais le point saillant est la notion de « transparence » sur l’état du système, clé pour comprendre ce qui se passe en production et faire progresser le système. API, logs et métriques en sont les éléments clé.

Le chapitre 9 aborde l’interconnexion. Logiquement, le chapitre évoque le DNS, mais le gros sujet est en fait le load balancing et comment cela fonctionne avec des proxys et des reverses proxy tels qu’Akamai. Un chapitre pointu qui peut mériter d’être lu plusieurs fois. Le chapitre 10 s’intitule « control plane ». Il s’agit du principe de transparence étendu au système. L’auteur propose 8 indicateurs de production pour jauger de la bonne santé du système, ainsi qu’une liste de course des actions que doit permettre ce control plane.

Pour refermer cette seconde partie, Michael Nygard traite de la sécurité, sujet non seulement austère mais difficile à aborder avec un angle précis. Celui de l’auteur est le « top 10 de l’OWASP foundation ». Chaque item est instruit en expliquant clairement de quoi il s’agit et en proposant des principes préventifs « security by design ». Cela me surprend quand même d’apprendre qu’aujourd’hui encore, c’est l’injection qui est n°1… Un chapitre bien plus intéressant que ce que j’ai l’habitude de lire sur le sujet.

La troisième partie est courte, avec sa quarantaine de pages sur 3 chapitres, et s’intitule « Deliver your System ». Le chapitre 12 qui ouvre cette partie s’intitule mystérieusement « en attendant Godot… ». En 3 pages, l’auteur nous décrit un déploiement ubuesque … que les deux chapitres suivants vont adresser.

La chapitre 13 clame fièrement « concevoir pour le déploiement ». Pour l’auteur, il y a 3 éléments clé : automatisation, orchestration et zéro downtime. Un chapitre particulièrement solide qui a peu d’équivalent ailleurs dans la littérature. Enfin le chapitre 14 s’intéresse aux versions, mais entre composant (ou sous-système) utilisateur et fournisseur. Contrairement au chapitre précédant il s’arrête aux traits principaux d’une API consistante et incassable entre versions.

La dernière partie traite de résolution des problèmes systémiques. Le sujet occupe 60 pages sur 3 chapitres. Le chapitre 15 nous raconte une bien belle histoire d’un site qui s’effondre aussi mis en production, sous le poids de scrappers venant récupérer les prix du site marchand. L’histoire et son analyse sont comme toujours d’excellente qualité.

Le chapitre 17 « adaptation » est volumineux car il couvre plusieurs sujets : l’organisation d’abord où l’auteur défend le « vrai devops » mais aussi l’existence d’une plateforme team. L’architecture ensuite où il met en avant une architecture évolutionnaire et agile. A ne pas rater. Pour conclure le livre, un peu de chaos engineering ! Malheureusement le chapitre est frustrant car il n’aborde que superficiellement la « simian army » de Netflix !

Je m’attendais certainement à des évolutions plus frappantes du texte : il évoque peu ou pas le cloud, Docker ou Kubernetes. En fait il y a déjà tant à dire avec les fondamentaux que ces sujets sont « en plus » et que l’auteur souhaite surtout bien couvrir ces fondamentaux. Les changements sont à la fois importants et discrets, car la structure a été remaniée et le contenu évolue plus discrètement. Le texte reste une pierre angulaire de l’ingénierie des systèmes d’information. Cette nouvelle édition est une excellente opportunité de nous rafraichir la mémoire.

Release It ! 2nd edition, par Michael T. Nygard

Référence complète : Release It ! 2nd edition – Michael T. Nygard – Pragmatic Bookshelf 2018 – ISBN : 978 1 68050 239 8

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.