Dans cet article sous forme d’interview, Alexandre et Gilles se proposent de réaliser une introduction à Apache « Nifi« .
Alexandre : Peux-tu nous présenter NiFi en quelques mots ?
Gilles : NiFi est un outil de gestion de flux de données, que l’on peut classer dans la catégorie des ETL (Extract Transform Load). Les fonctions d’extraction / ingestion et de publication / chargement sont particulièrement riches. Sur l’aspect « transformation », NiFi est plus en retrait. Et bien qu’il fournisse de nombreuses fonctionnalités sur cet aspect, il est souvent utilisé en conjonction avec Spark ou Flink.
Alexandre : Dans quel contexte l’as-tu utilisé ?
Gilles : Je l’ai d’abord utilisé pour un projet destiné à centraliser le management d’équipements de réseaux. Nous avions besoin de collecter des informations de configuration et des statistiques sur des équipements divers (routeurs, firewalls, proxy, …). Ces équipements produisent des informations dans des formats de données hétérogènes. Nous voulions collecter au fil de l’eau des données sur les modifications des configurations afin d’assurer l’historisation et la traçabilité de ces changements.
Ensuite nous avons fait le lien entre la gestion des demandes et des incidents opérés dans ServiceNow et les changements dans les configurations des équipements. NiFi permet donc de collecter des données de configuration d’équipement et d’alimenter une base mySQL.
Dans un autre contexte, nous avions besoin de calculer des statistiques détaillées sur le contenu des requêtes traitées par un ESB. Ce qui représentait un volume de 16 à 20 millions de requêtes par jour. Nous souhaitions le décommissionner pour le remplacer par une plate-forme API. Les traces XML collectées avaient des formats différents en fonction de la typologie des requêtes observées. Il fallait donc parser de gros blocs XML pour en extraire les informations intéressantes. Ensuite on les stockait dans un moteur d’indexation ElasticSearch.
Sur ce projet, NiFi permettait de collecter les logs XML, de les parser puis de publier les données pertinentes dans Elastic.
Alexandre : D’après ton expérience du produit Nifi, comment le positionnerais-tu en tant qu’architecte ?
Gilles : Je pense que c’est un bon outil de collecte (aller chercher des données dans des fichiers, interroger des bases relationnelles ou NoSQL, interroger des API, lire des messages dans des files, …) et d’ingestion vers des formats, standards ou protocoles divers.
Alexandre : Quel intérêt par rapport à d’autres outils ?
Gilles : La simplicité du No Code ! Bien qu’il soit possible de programmer des traitements dans une multitude langages (groovy, python, jython, jruby, ruby, javascript, lua et luaj), NiFi propose une large palette de composants (appelés processors) qui sont simplement à paramétrer.
Par exemple, des problématiques avancées, comme la gestion de la charge avec du multi-threading et du load-balancing sur plusieurs nœuds, peuvent se traiter très facilement ! En effet, on peut faire cela sans code, par un simple paramétrage.
Cela rend la prise en main de NiFi vraiment très rapide. Et le passage d’un jeu de test, de petite taille, à de gros volumes en production se fait en seulement quelques clics.
Alexandre : Pour finir, pourrais-tu nous dire quelles seraient éventuellement ses faiblesses ?
Gilles : Bien que le déploiement en conteneurs fonctionne, cela reste complexe. C’est peu optimisé pour gérer le déploiement d’une grosse infrastructure NiFi. Ce produit est encore loin du serverless. L’architecture de déploiement, à base de JVM, date clairement des années 2000. (Le projet a démarré au sein de la NSA en 2006).
Un autre défaut de Nifi concerne son interface utilisateur. Elle est toute monochrome et à base de boîtes rectangulaires imbriquées les unes dans les autres. Ce qui n’est pas particulièrement « user friendly ».
Cela déclenche souvent une première impression négative. Et même pour ce genre de produit dont la robustesse à l’exécution devrait être critère de choix essentiel, cela peut jouer des tours. Ce n’est en effet pas la chose la plus simple à évaluer au premier abord. Il est par contre facile de se laisser impressionner par une interface sympathique avec de jolies icônes colorées, des widgets animés etc …
Alors êtes-vous convaincus par Nifi ?
N’hésitez pas à nous le faire savoir dans les commentaires !
Enfin voici quelques liens utiles pour aller plus loin :
- Apache NiFi sur le site du groupe Apache
- 1 milliard d’événements par seconde avec NiFi sur le site de Cloudera
- Retour d’expérience d’utilisation de NiFi chez Renault sur SlideShare