Note de lecture : Streaming Data, par Andrew G. Psaltis

Note : 7 ; Data Streaming Distiled !

Le livre est réellement une bonne surprise. Il attaque la question du streaming par l’architecture. L’auteur a son opinion sur la question et nous propose sa vision de celle-ci dès son chapitre d’introduction. Les composants de cette architecture formeront la trame de la première partie du texte.

Passé le chapitre d’introduction sur l’architecture générale, le second chapitre adresse le volet « ingestion ». La bonne surprise est de voir l’auteur l’aborder sous l’angle des patterns avec leurs avantages te leurs faiblesses plutôt que de plonger dans des considérations techniques. Au-dessus de cela le texte s’arrête également sur la tolérance aux pannes avec d’autres patterns de gestion de logging précieux et clairement expliqués.

C’est au data pipeline, donc au Queuing que s’intéresse le chapitre 3, en commençant par exposer son utilité face aux variation de production et au besoin d’élasticité du scaling. Les 3 sémantiques de gestion de message sont bien adressées. J’ai cependant trouvé que le propos reprenait des éléments vraiment très élémentaires mais ne rentrait pas des problématiques telles que la sécurité (l’auteur nous renvoie vers un ouvrage de référence). Là encore les problématiques de tolérance aux pannes spécifiques à cette couche sont bien détaillées.

L’analyse des données fait l’objet de deux chapitres. Le premier est dédié à l’architecture, avec ses frameworks sous-jacents : Spark, Storm, Samza et Flint. Je sais déjà de petites choses là-dessus, sinon le chapitre m’aurait certainement paru ardu. Le chapitre consacré aux algorithmes évoque le windowing, un sujet que j’avais moi-même abordé il y a quelques années, ainsi que les principales méthodes de summarisation statistiques, parmi lesquelles Hyperloglog. On passe assez vite là-dessus, mais l’auteur ne manque pas de nous donner des liens vers les articles de référence.

On approche du but avec le chapitre 6 qui évoque le stockage des données analysées. L’idées est ici d’utiliser une base en tant que cache et l’auteur explore les différentes options : read-through, write through, write back, etc. C’est plutôt clair et complet, d’autant que l’auteur énonce aussi le produits capable de supporter les différentes approches : pas seulement des bases de données donc, mais des framework de cache distribuées ou de data grid.

Dans « making the data available », nous visitons les patterns et protocoles permettant d’accéder aux données mises à disposition. Bref, nous construisons une API ! Le pattern préféré de l’auteur est clairement le publish / subscribe (l’Observer, donc). Du côté des protocoles, c’est plutôt WebSocket. Cela n’empêche pas le texte d’aborder honnêtement les avantages et inconvénients des autres approches. J’y ai particulièrement apprécié les nombreux diagrammes de séquence.

La première partie se referme sur le chapitre 8 qui évoque la partie cliente. Avec les considérations architecturales telles que le « reading fast enough » on rejoint des problématiques abordées au chapitre 2. En réalité on parle exactement de la même chose. Idem pour les questions de patterns de lecture (exactement 1, au moins 1, pas plus d’1), ainsi que sur les questions de logging.

La seconde partie de l’ouvrage n’est constituée que d’un seul chapitre, mais il fait 28 pages, donc le plus long du livre. A mon avis l’auteur aurait pu opérer un découpage, il aurait ainsi pu plus « poser » son propos. Cela dit l’étude de cas implémentée est exposée de manière extrêmement claire. Pour des raisons de rationalisation de l’espace, il a utilisé une même technologie à plusieurs endroits : c’est la cas de Netty et Kafka. Si cela se justifie bien pour Netty, c’est plus discutable pour l’usage de Kafka en tant que cache… La partie la plus ardue est sans aucun doute celle concernant la mise en œuvre de Netty : ce framework de bas niveau impose beaucoup de code boilerplate, et l’auteur aurait pu découper le code du « main » en sous-méthodes. Le code est introduit progressivement, par contre l’intégralité n’est pas présente dans les pages (ce qui se comprends). Le tout est complété de diagrammes de séquence, bref c’est très pédagogique.

J’avais crains un ouvrage « hard code ». Il s’adresse plutôt au manager opérationnel avec une solide compréhension technique. Je suis une très bonne cible pour cela, c’est sans doute une des raisons pour lesquelles je l’ai apprécié ! Le texte est bien écrit, très bien illustré. Un point assez rare chez cet éditeur : beaucoup de notions introduites sont étayées de références, souvent des articles de recherches qui peuvent compléter la lecture : les bases de l’auteur sont donc solides et on va au-delà de la promenade touristique. Un point à noter : la tendance de l’auteur à se répéter (métaphores, anecdotes), c’est suffisemment rare pour ne pas être gênant, mais toutefois assez flagrant ! Pour ma part, je trouve qu’il ne manque pas grand chose pour classer ce texte au même niveau que les « distilled » de Martin Fowler et mériter fièrement un « 8 ». Bref, je recommande.

Streaming Data, par Andrew G. Psaltis

Référence complète : Streaming Data – Andrew G. Psaltis – Manning 2017 – ISBN : 978 1 61729 228 6

Publicité

Votre commentaire

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 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.