Note: 7 ; Un excellent “pattern language” d’approche très Alexandrienne. Dommage que l’aspect solution me laisse un peu sur ma faim.
Le titre de l’ouvrage est assez évocateur à cet égard: Il s’agit là de décrire le style architectural des systèmes d’information Internet à l’aide d’un pattern language, à la Christopher Alexander. Digne représentant de la « software design patterns series », cet ouvrage expose sur 290 pages découpées en 12 chapitres formant 3 parties des architectures de déploiement dédiées aux applications Internet. Bien sûr, vous allez me dire que le texte va accuser son âge, surtout dans le domaine où les plus grands progrès ont été faits au cours des 10 dernières années ! Si ce point est indéniable, il n’est pas aussi marqué que l’on pourrait le craindre car il se focalise bien plus sur les principes d’architecture que sur les solutions techniques !
Je passe sur le premier chapitre qui ne nous apprend rien pour aborder la première partie « Architecture, Patterns and Internet Technology » qui comprend 4 chapitres sur 60 pages. Le premier d’entre-eux (donc le second chapitre) « system architecture » mérite que l’on ne passe pas trop vite dessus. Ses 15 pages sont consacrées aux propriétés non-fonctionnelles des architectures. Intéressant. Le point sur les technologies de l’Internet que nous propose le chapitre 3 sur 17 pages est un peu superficiel, mais pas aussi démodé que l’on pourrait le croire. Mais il apporte peu. Le chapitre 4 est en quelque sorte la table des matières patterns du livre. C’est un incontournable pour ce genre d’ouvrage. Pour clore cette première partie, les auteurs présentent l’étude de cas fictive sur laquelle ils ont choisi de s’appuyer. On y fait le tour des propriétés non-fonctionnelles que l’on avait énumérées au chapitre 2. C’est bien fait.
Avec 167 pages, la seconde partie est le gros de la troupe du bouquin, et de loin ! Il faut dire que cette partie qui ne compte pourtant que 4 chapitres s’intitule « The Patterns ». Et l’on commence fort logiquement au chapitre 6 par un chapitre « fundamental patterns » de 18 pages. Il présente deux patterns, le très classique « application server architecture » encore largement majoritaire aujourd’hui et un moins convainquant « péripheral specialist elements » dont la symétrie est questionnable du fait de la BDD unique… Le chapitre 7 nous offre un gros morceau avec les « system performance patterns » qui couvrent 45 pages. Les patterns architecturaux de ce chapitre sont particulièrement intéressants et bien décrits dans leur essence (load balancing, redondance, failover, appliance, replication, resource pooling, cache, offlining), il ne manque guère que le sharding des bases NoSQL ! Les diverses variantes de ces stratégies sont abordées ainsi que des considérations d’équilibrage de charge CPU, etc… Bref un chapitre riche qui justifierai le livre à lui tout seul !
Place aux « system control patterns » au chapitre 8, qui nous occupe sur 60 pages. Ce chapitre nous expose nombre de patterns de monitoring et de contrôle d’application en production. Ces patterns ne sont pas, disons « mortels », mais ils ont le mérite d’être là ainsi que les discussions qui vont avec. Plus intéressant, ce chapitre couvre aussi un volet sécurité avec les DMZ, l’encryptions et le secure channel (SSH). Le chapitre 9 qui clos cette seconde partie est probablement le plus décevant. Couvrant le « system evolution patterns », les patterns présentés restent de haut niveau. Petite exception pour le « swappable stagging environment » qui reste la perle de ce chapitre.
La dernière partie de l’ouvrage est consacré aux applications de ce que nous avons vu. 60 pages sont dédiées à cette partie qui regroupe 3 chapitre. Le chapitre 10 revisite ainsi notre étude de cas. C’est l’occasion de mixer plusieurs patterns pour endosser la performance, le monitoring et le déploiement. C’est un peu rapide mais donne une image à grande échelle de l’usage combiné des patterns. Le chapitre 11, « applying the patterns » couvre une vingtaine de pages. Son objectif est de donner une logique à l’application des patterns de la seconde partie, ce que je ne trouve pas convainquant. L’ouvrage se conclut par un mini chapitre « moving on » dont le but est de donner une perspective d’avenir. Bien sûr, c’est aussi celui qui accuse le plus son âge !
N’en doutez pas, l’objectif du livre est parfaitement réussi. Car nous avons vraiment là un bel exemple de pattern langage, dont chaque pattern est l’essence d’un point particulier de l’architecture, l’ensemble formant un tout cohérent. Cet ouvrage est convainquant sur la description efficace et agréable d’une architecture avec un pattern language. Une parfaite réussite à cet égard.
Ce qui modère un peu ma note, c’est que le volet technique, plus « design » soit un peu frustrant, car le propos reste assez haut niveau, même si le style est agréable et efficace. Quoi qu’il en soit, si vous décidez d’acquérir la connaissance de ce qu’est une architecture Internet, voilà le livre que vous cherchez. Toutefois, si vous êtes un pur techos, vous risquez d’être déçus. Moi je ne l’ai pas été !

Référence complète : Architecting Enterprise Solutions: Patterns for high-capability Internet-based systems – Paul Dyson & Andy Longshaw – John Wiley & sons / Software Design Patterns series 2004 – ISBN: 0-470-85612-2