Note de lecture : Microservices Patterns, par Chris Richardson

Note : 8 ; La bible du Microservice !

A beaucoup de points de vue, c’est un livre imposant ! D’abord par sa taille : 470 pages, découpées en seulement 13 chapitres, mais aussi par son contenu qui va assez loin dans les aspects techniques abordés. Le propos n’en reste pas moins clair, je regrette juste que les fameux patterns soient juste évoqués mais pas vraiment documentés en tant que tel.

Le premier chapitre couvre une trentaine de pages et aborde deux sujets : le monolithe et les patterns. Le monolithe est traité avec intelligence, loin du bashing habituel. Ici on part du postulat d’une architecture hexagonale pour explorer les conséquences en maintenance et en organisation d’équipe ! La big picture des patterns vaut aussi le détour, pas seulement pour la classification de ces derniers, mais aussi par la qualité de l’explication sur l’approche patterns.

Ce sont aussi une trentaine de pages consacrées au chapitre 2 sur les stratégies de décomposition. On y parle, et c’est un peu inattendu, UML, Use Cases et DDD. C’est aussi le moment pour l’auteur d’exposer sa vision du découpage en « capabilities » et « services ». C’est intéressant, de bon niveau même, mais pas flamboyant.

Les choses sérieuses commencent au chapitre 3 et ses 45 pages sur l’IPC qui en est le sujet ! Il couvre les aspects conceptuels tels que la définition des interfaces, le versionning et les transactions. Puis on rentre dans le dur avec la communication synchrone (ReST, gRPC), puis asynchrone (JMS, Kafka), en publication ou en requête / réponse. Le chapitre s’étend jusqu’aux patterns essentiels que sont le circuit breaker et le gateway. C’est du solide.

Lire la suite

Publicités

Note de lecture : Microservices in Action, par Morgan Bruce & Paulo A. Pereira

Note : 4 ; Plus sur l’infrastructure microservices que sur le microservice lui-même… avec beaucoup d’inaction dans ce « in action » !

Petite déception pour ce nouvel opus de la série « in action » de chez Manning. Celui-ci manque un peu de concret et de profondeur, malgré ses 350 pages. J’étais prévenu, le code serait en Python, mais au final il y en a assez peu, ce qui est à la fois un bien et un mal pour moi. La plus grande surprise est sans doute que l’on ne rentre pas dans la conception des microservices, mais plutôt dans l’architecture de systèmes à base de microservices qui est, il est vrai, une partie importante du concept. Ces architectures sont illustrées à base de diagrammes où chaque microservice est représenté sous forme d’hexagone : est-ce une évocation de l’architecture hexagonale d’Alistair Cockburn ? Nous n’aurons pas la réponse dans ces pages.

L’ouvrage lui-même est structuré en 4 parties pour un total de 13 chapitres. La première, “the lay of the land” couvre moins de 50 pages sur 2 chapitres. On débute par une introduction générale, ou plutôt un teasing des thèmes qui seront développés au fil des pages sur les principes et les challenges que représentent la conception de microservices. Le second chapitre rentre dans l’étude de cas qui servira de fil rouge : SimpleBank. Personnellement, je trouve celle-ci un peu complexe. L’illustration du découpage de feature en service s’en ressent.

La seconde partie s’intitule « design » et compte 5 chapitres sur 135 pages. C’est donc la partie la plus conséquente du livre. Elle débute par un chapitre 3 dédié à l’architecture des applications. Hélas elle reste très haut niveau, brossant à peine les styles d’architectures et les patterns de communication. Petite mention toutefois pour le « micro front-end » que je croise ici pour la première fois. Le chapitre 4 aborde sur 30 pages la question de la conception de nouvelles fonctionnalités. Les auteurs s’appuient sur les notions de « business capabilities » et de « technical capabilities » et sur un découpage en cas d’utilisation ! C’est finalement dans ce chapitre que je trouve trace de la Clean Architecture de Robert Martin, alors que je pensais la croiser au chapitre précédant.

Lire la suite

Note de lecture : Enterprise Java Microservices, par Ken Finnigan

Note : 3 ; Un « placement de produit » JBoss peu attractif.

Il commence à y avoir pas mal d’ouvrages sur les Microservices et tous ne se valent pas. Hélas, comme nous allons le voir, celui-ci ne rentre pas dans la bonne catégorie. Au départ il se voulait plus ou moins l’équivalent du « Spring Microservices in Action » pour JEE.

Avec 227 pages, l’ouvrage n’est guère volumineux. Le tout est structuré en 11 chapitres regroupés en deux parties. La première partie « microservices basics » compte les 5 premiers d’entre-eux et totalise une centaine de pages. Le premier chapitre est sobrement intitulé « Enterprise Java Microservices » ! Il s’agit surtout d’un survol pour nous rappeler ce qu’est une architecture JEE, puis sa conséquence le monolithe. C’est de manière simplifiée que l’auteur nous présente l’architecture microservices dans ses grandes lignes pour terminer sur les patterns permettant de transiter de l’un à l’autre. Un chapitre simple mais hélas simpliste.

On rentre dans le dur avec le chapitre 2 qui nous propose le cas d’utilisation du livre, le site Cayambe, et le développement d’une application minimaliste en REST. C’est l’occasion de faire notre « hello world » en architecture JEE new style. Pas transcendant, mais correct. La chapitre 3 prends un peu de hauteur pour nous présenter les différentes options pour développer des microservices dans le monde Java. J’ai beaucoup aimé l’approche « cartographique » et la largeur de l’écosystème abordé. Bien sûr (hélas) ceci est là pour nous montrer que Thorntail (aujourd’hui déjà à l’abandon) est le meilleur ! Un biais qui nuit à la qualité du chapitre.

Lire la suite

Note de lecture : Accelerate, par Nicole Forsgren, Jez Humble & Gene Kim

Note : 6 ; Une étude approfondie sur ce qui marche ou ne marche pas mais délivrée de façon un peu austère

Ce livre a été très chaudement recommandé par Martin Fowler comme étant le « livre de l’année ». J’ai du mal à être d’accord avec lui pour des raisons sur lesquelles je reviendrais. Accelerate reprend et développe les conclusions de 4 années de sondage du « state of the DevOps ». La première partie du texte reprend les observations faites et cherche à les expliquer, mais uniquement en s’appuyant sur les informations collectées, sans formuler d’extrapolations. 2 deux autres parties sont consacrée aux éléments de recherche d’une part et au « comment » de la transformation.

La première partie est celle qui est la plus riche d’enseignements sur ce qui marche et ce qui ne marche pas, elle s’empare logiquement de 115 des 200 pages du texte (hors annexes). Ce sont 11 chapitres qui forment cette première partie. Je passe sur le premier chapitre essentiellement introductif pour aborder le second, « performance », où les auteurs introduisent leurs critères d’une organisation performante. Ils se focalisent essentiellement sur une définition « Lean » du terme et en se référant à la Wardley Mapping Method.

Le 3ème chapitre, « measuring and changing culture » nous introduit au Westrum Organisational Culture. Selon ce modèle, les organisations les plus performantes ont les flux les plus efficaces. On en revient au Lean.

Lire la suite

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.

Lire la suite

Note de lecture : Les Innovateurs, par Walter Isaacson

Note : 8 ; La grande saga de l’informatique … avec un point de vue subjectif.

Walter Isaacson est le biographe de Steve Jobs, entre autres chose. Il fut aussi journaliste au Times. Bref, il sait écrire et raconter, on s’en rend très vite compte. Le format poche du livre fait 860 pages, mais c’est au format Kindle que je l’ai lu. Il est structuré en 12 chapitres qui chacun couvre une période de l’histoire de l’informatique.

L’auteur a décidé de remonter aux prémices avec un chapitre consacré à Ada Lovelace ou plus exactement à Ada et Babbage, mais centré toutefois sur la fille de Lord Byron. Un chapitre sans concessions sur celle que l’on considère comme la pionnière de la programmation, mais qui vantait sans retenue ses capacités intellectuelles. C’est sur la publication « Sketch of the Analytique Machine » par LF Menebrea, mais traduit en Anglais par Ada et augmenté de ses notes que s’attarde Walter Isaacson. Ce sont ces notes (qui occupent d’ailleurs plus de place que le texte original) que se trouvent toutes les trouvailles et les projections concernant la machine analytique et cela est fort bien analysé par l’auteur.

Le second chapitre s’intitule « l’ordinateur », il s’agit bel et bien de l’invention de l’ordinateur. L’auteur nous dresse le paysage des prémices de l’ère numérique avec les Shannon, Lorenz, Aiken, Atanasoff et surtout Mauchly, car l’auteur ne peut se vanter d’être objectif en dédaignant l’aspect programmable du Mark I et II au profit du fonctionnement à lampe du non-programmable Eniac. Le rôle Von Neumann dans ce projet y est clarifié, entre autre qu’il permit à l’industrie informatique d’éclore à cette époque en coupant l’herbe sous le pied de la brevetabilité de l’architecture des machines. Ce second chapitre est assurément l’un des plus passionnants.

Lire la suite

Note de lecture : Seven Databases in Seven Weeks, par Eric Redmond & Jim R. Wilson

Note : 4 ; 7 livres compressés en un seul.

Je sais que j’aurais dû, mais non je n’ai pas pris plaisir avec ce livre. Mais reprenons depuis le début. Cet ouvrage est calqué sur l’approche de « Seven Languages… ». Le principe est simple : les auteurs abordent 7 bases de données en nous proposant une initiation à chacune d’entre-elle sur 3 jours.

Chaque chapitre est consacré à une base de données, et chacun d’entre-eux est effectivement structuré en 3 parties, soit 9 chapitres en comptant introduction et conclusion pour un total de 310 pages environ. Le tout est très dense et la pente est rude pour chaque chapitre. Elle est d’autant plus rude pour moi que les langages de prédilection choisis sont Ruby et JavaScript (même quand ce n’est pas le langage naturel de la base), que je ne connais pas plus que je ne les apprécie car il s’agit de langages dynamiques.

Je passe l’introduction qui dresse un panel des différentes bases et des paradigmes sur lesquels elles s’appuient. Le second chapitre est consacré à PostgreSQL. C’est du relationnel, je suis en terrain connu. Les premier et second jour vont assez bien, même si on monte assez vite dans les tours avec les fondements mathématiques, les Windows functions et autres triggers. On ne perd pas de temps ! Le 3ème jour nous conduit directement dans les spécificités de PostgreSQL avec les cubes multidimensionnels et l’indexation full text. Je me retrouve aux limites de mes connaissance bien plus vite que prévu.

Lire la suite

Note de lecture : The Unified Process Transition and Production Phases: Best practices in implementing the UP, par Scott W. Ambler & Larry L. Constantine

Note : 3 ; Un quatrième opus de la suite dédie à UP, d’avantage cohérent avec le sujet

Dernier opus de la série consacrée à Unified Process, celui-ci reprend la formule qui nous a tellement enchantée dans les volumes précédents. Celui-ci est fort de 280 pages et compte 8 chapitres, introduction et conclusion incluses. L’introduction, justement, est le seul chapitre réellement écrit pour correspondre au titre de l’ouvrage. Il compte une douzaine de pages et cherche à replacer chaque workflow dans le contexte de la phase de transition.

Le second chapitre va couvrir 35 pages et se focalise sur le workflow de déploiement. Il compte 6 articles dont 3 sont signés Scott Ambler (l’éditeur de l’ouvrage si vous avez suivi). Contrairement aux ouvrages précédents, la plupart de ces articles ont effectivement trait au déploiement et au rollout en phase de transition. Leur lecture nous laisse apparaitre le chemin parcouru depuis lors grâce au mouvement devops !

Le chapitre 3 traite du workflow « tests », et ce ne sont pas moins de 8 articles que nous retrouvons là ! Cem Kaner nous parle du recrutement de testeurs. Cela a peu à voir avec la phase de transition, mais non seulement l’idée est intéressante, mais on y trouve beaucoup de matière pertinente. Dans la même veine, James Bach évoque la formation des testeurs. Le propos mériterait toutefois d’être actualisé. Dans le style nostalgie, McGregor & Major nous parlent de « maximiser le ROI en sélectionnant les cas de test » ! Voilà une pensée définitivement issue de l’ancien monde ! Plus original, « don’t waste your bugs ! » nous propose une analyse qualitative des bugs pour estimer la maturité du code ! Le worflow « Project Management » est au menu du chapitre 4 et nous propose 6 articles. Bien qu’ils aient peu à voir avec le sujet, « making lemonade with lemon » aborde les besoins psychologiques des équipes. Un des rares écrits de Norman Kerth, donc à ne pas rater. « Looking back » est co-signé par Karl Wiegers et Johanna Rothman ce qui est en soi une raison de s’y arrêter. L’autre est que l’on y décrit la démarche de rétrospective.

Lire la suite

Note de lecture : The Unified Process Elaboration Phase, par Scott W. Ambler

Note : 2 ; Une compilation bien hétéroclite !

Tout comme le volume dédié à la phase « d’inception », ce volume regroupe un ensemble d’articles en provenance de Software Développement Magazine. Ils sont globalement organisés en worflows, ce qui nous donne 8 chapitres (en comptant introduction et conclusion), pour un total de 260 pages hors annexes.

Le premier chapitre est purement introductif. Il met en contexte le processus itératif par rapport aux processus en cascade et donne un aperçu des différents workflows, puis plus précisément de la phase d’élaboration. Tout cela ressemble pas mal au premier chapitre du volume consacré à la phase d’inception. Cela reste aussi très général. Place au workflow « Project management » au chapitre 2, qui va regrouper 6 articles. J’en retiens essentiellement deux : « managing collaborations » par Mary Loomis évoque les propriétés essentielles du cadre pour rendre possible cette collaboration. « implementing feature teams » par Jim McCarthy préfigure les équipes pluridisciplinaires que l’on retrouvera dans le fonctionnement agile. Aucun des 6 articles n’est lié à la phase d’élaboration ni même à Unified Process.

Le chapitre 3 aborde le workflow « business modeling” et ce sont 4 articles qui sont mis en avant ici. Malgré la présence d’un article de Martin Fowler, aucun d’entre eux ne retient mon attention. Ce workflow semble décidément une source d’embarras à décrire… Nous arrivons maintenant au chapitre 4 qui va évoquer le workflow de gestion des exigences. Nous avons 5 articles ici. Karl Wiegers nous offre toujours une prose de qualité et « Writing Quality Requirements » s’inscrit dans cette mouvance. Je garde. Puis « Prototyping from the User’s Viewpoint » est un des rares articles qui cadre vraiment avec la phase d’élaboration d’UP. Je garde également !

Lire la suite

Note de lecture : Lex & Yacc, par John R. Levine, Tony Mason & Doug Brown

Note : 8 ; Une référence de grand choix pour Lex et Yacc. En tout cas, la mienne !

Comme son nom l’indique, ce volume traite les utilitaires de la famille Lex & Yacc, dont Flex et Bison, du GNU, qui ont la préférence des auteurs. Ce guide introduit progressivement l’outil d’analyse lexicale d’abord, puis l’outil grammatical ensuite, en introduisant progressivement les concepts particuliers de ces outils.

Le texte tient en 240 pages structurées en 9 chapitres. Il ne faudra pas oublier les 70 pages d’annexes dont l’utilité est assez variable, mais précieuses pour certaines. Le premier chapitre s’intitule sobrement « Lex & Yacc » et nous invite à produire un premier analyseur syntaxique avec son analyseur associé. Les 25 pages de cette mise en bouche sont pas mal denses, et sont d’ailleurs bien plus qu’une mise en bouche : on un produit un analyseur syntaxique simple avec toutes ses composantes !

Le second chapitre se focalise uniquement sur Lex et au travers de deux exemples en explore tout le potentiel. Un travail soigné même si là encore il n’est pas question de relâcher son attention ! Au chapitre 3, l’analyseur syntaxique Yacc a droit au même niveau d’attention. On y développe la notion d’arbre syntaxique et toutes les subtilités de la construction d’une grammaire. C’est du solide.

Lire la suite