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.

Transactions et requêtes sont au menu des 23 pages du chapitre 5. Les thèmes abordés ici sont désormais presque classiques : Sagas, communications basée évènements, chorégraphie ou orchestration de services et enfin CQRS (avec de l’event-sourcing à peine évoqué). Le traitement est plutôt léger et le texte apporte peu de réponses concrètes. Le propos est plus solide dans le chapitre 6 qui traite de fiabilité sur une trentaine de pages. J’ai particulièrement aimé le traitement des types et des sources d’échec et du SLA. Bien entendu c’est aussi l’occasion d’évoquer les circuits breakers et le chaos monkeys qui sont aujourd’hui autant de classique.
Cette seconde partie se referme sur un chapitre 7 consacré à la conception d’un « châssis » microservice. Une idée qui va plus loin que les socles de type Spring Boot. L’idée se défend mais va à l’encontre de la démarche émergente que promeut l’approche microservice, et fige même dans une certaine mesure les choix technologiques que les microservices rendaient plus liquide…

La 3ème partie s’intitule « déployment » et va nous occuper sur 80 pages et 3 chapitres. Le chapitre 8 est dédié sur le déploiement de microservices spécifiquement sur Google cloud et évoque juste un petit peu Docker. Ce dernier, ainsi que Kubernetes sont tous deux traités au chapitre 9. J’ai trouvé qu’il s’agissait d’une bonne introduction, bien illustrée. Cette fois, Google cloud disparait du propos ! Enfin cette partie se conclut par le « delivery pipeline » cher à Jez Humble. C’est Jenkins qui sert de fil rouge à ce chapitre qui aurait pu être meilleur.

La quatrième partie est aussi forte de 80 pages sur 3 chapitres, et elle s’intitule « observability and ownership ». Les 25 pages du chapitre 11 nous invitent à la mise en place d’un système de monitoring. J’ai bien aimé le paysage que dresse les auteurs des différents types de métriques. J’avais quelques espoirs de comprendre Prometheus et Graphana qui servent d’illustration au propos, mais c’est raté de ce côté, les pages sont par ailleurs bien trop encombrées de copies d’écrans de Graphana en fin de chapitre. Dommage ! Le livre sépare bien les finalités des métriques et des logs & traces et cette dualité est bien présentée. L’illustration avec OpenTracing API, Fluentd et Elasticsearch est hélas bien confuse. Je galère encore à comprendre l’architecture qui nous est proposée ici !

Le livre se referme sur un chapitre 13 consacré à l’organisation des équipes microservervices. Un chapitre plutôt bien fait, orientant l’organisation vers des features teams, que l’auteur peine à réconcilier avec sa vision « châssis technique » présentée au chapitre 7. Pour moi, ce chapitre ne présente guère de nouveauté, mais je n’en attendais pas.

Ce n’est pas à proprement parler un mauvais livre. Mais il commence à y avoir une littérature conséquente sur les microservices. Celui-ci manque à la fois de substance et d’aspects concrets (en tout cas pour ce que j’en attends d’un « in action »). Il n’élève pas la barre assez haut pour moi.

Microservices in Action, par Morgan Bruce & Paulo A. Pereira

Référence complète : Microservices in Action – Morgan Bruce & Paulo A. Pereira – Manning 2018 – ISBN: 978 1 61729 445 7

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.