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.
Le chapitre 4 est consacré aux tests et c’est le bon moment. Sans être encyclopédique, le traitement en est décent. Il commence par les tests unitaires, évoqués mais pas traités en profondeur (il y a d’autres ouvrages pour ça) pour se poursuivre par les tests d’intégration avec Arquilian qui nous emmènent un peu loin. Enfin le sujet se conclut avec les tests de contrats avec Pact. Cette première partie se conclut par un chapitre 5 dédié au développement sur le cloud. Ça tombe bien, JBoss propose aussi Opeshift (en plus d’être à l’origine de Thorntail et d’Arquilian). Le message est clair : les auteurs sont là pour nous caser le combo Thorntail + Openshift…
La seconde partie nous gratifie de 6 chapitres sur 130 pages. Elle est intitulée « implementing Enterprise Java Microservices » faute d’avoir trouvé un meilleur titre. Le chapitre 6 qui ouvre le bal est consacré à la consommation de microservices, par le truchement d’interfaces REST pour être plus précis et via JAX-RS pour l’être plus encore. J’y trouve le bénéfice d’un tutorial clair sur JAX-RS mais sinon c’est un peu limité. Le chapitre 7 nous ouvre les portes du « service discovery », là encore, ce sont les options proposées par Thorntail qui sont explorées, dont JGroup, mais surtout Openshift ! Nous sommes en plein placement de produit !
La tolérance aux pannes est u cœur du chapitre 8. C’est presque un rituel de voir évoqué ici le pattern Circuit Breaker et son incarnation, Hystrix ! En complément, nous avons aussi droit au Bulkhead pattern pour isoler les pools de connexion. Le sujet est traité hélas de manière un peu confuse. Les auteurs ne sauraient échapper au thème de la sécurisation. Ici c’est keycloak qui est mis en avant et bien sûr l’adaptation de Thorntail à ce produit. Les sujets connexes à la sécurisation sont souvent peu passionnants et malheureusement c’est le cas ici.
Nous nous approchons de la fin de l’ouvrage avec le chapitre 10 dédié aux approches hybrides, c’est-à-dire microservices et monolithe ensemble. Le propos est un peu confus, noyé dans pas mal de code (avec des JSPs), avec certes un gros diagramme d’architecture, mais peu d’explications conceptuelles. L’ensemble du texte aura attendu jusqu’à la fin pour aborder un plan important de l’architecture microservices : l’envoi de message ! Le dernier chapitre introduit Kafka pour cette fonctionnalité. Si quelques explications de base sur ce middleware sont données, l’ensemble est un peu confus (y compris, et c’est dommage, l’utilisation de Debezium pour le change data capture).
Le titre de l’ouvrage est franchement piégeux, car il devrait être plutôt « Java Microservices with Thorntail » ou « Thorntail in Action ». Cela coûte pas mal de points dans la note final. D’autre part, les auteurs font le minimum syndical pour nous appréhender l’architecture microservice. Le texte ressemble à un tutorial Thorntail. Quand on sait que Thorntail vient d’être rendu obsolète par Quarkus… Si ce que vous cherchez est un texte pour appréhender les microservices, l’architecture et les concepts liés, alors vous faites fausse route.
Référence complète : Enterprise Java Microservices – Ken Finnigan – Manning 2018 – ISBN: 978 1 61729 4242 2