ELASTIC RÉVÉLLE L'ESSENCE DE VOS DONNÉES
Alors que tout le monde parle de Big Data, du besoin de trouver « ce que les données ont à dire », les solutions de bases de données traditionnelles n’ont pas pu répondre à tous les scénarios. Avec flexibilité, évolutivité, rapidité et simplicité, Elastic
ElasticSearch a récemment dépassé les 40 millions de téléchargements, et continue sur un rythme très soutenu, compris généralement entre 700 000 et 800 000 nouveaux téléchargements chaque mois, voire plus. Forcément, de telles statistiques mettent la puce à l’oreille… Si certaines technologies n’ont pas rencontré le succès faute d’avoir su s’imposer au bon endroit au bon moment, ce n’est absolument pas le cas d’ElasticSearch. Et c’est aussi ce qui fait sa force. Petit précis qui a son importance : Elastic, c’est l’entreprise, ElasticSearch l’outil de recherche open source dans les données et Kibana – issu du rachat de l’entreprise du même nom –, l’outil de visualisation qui lui est associé. Pour l’anecdote, il faut aussi par exemple distinguer Docker, le projet, de Docker, l’entreprise ! Bref, il est important de comprendre cette distinction car cela peut être rapidement confus, d’autant que des offres tierces, comme Amazon Elasticsearch Service ou le Microsoft Azure cloud plugin for ElasticSearch, ont vu le jour ces derniers mois. Les bases sont jetées. Pourquoi penser qu’Elastic et ses outils seront les grands vainqueurs des solutions de recherche ? C’est parce qu’aucun autre projet n’est aussi avancé, pour commencer. De plus, dès la création de l’entreprise, en 2012, son créateur Shay Bannon a tout fait pour rendre la technologie la plus accessible possible. Basé sur le projet open source Lucene – comme d’autres –, ElasticSearch a pour vocation de rendre toutes les données libres. Pour cela, outre la simplification de l’utilisation, l’outil peut accéder à toutes les données, sous toutes les formes, mais il mise également et surtout sur la « scalabilité » – l’évolutivité en quelques sortes – en permettant l’ajout facile de noeuds supplémentaires avec une approche API REST.
dE la rEchErchE « full tExt » tEmps réEl
ElasticSearch vient donc en confrontation quasi directe avec les systèmes de recherche dans des bases de données traditionnelles. Dans ces dernières, la donnée est stockée en colonne sous forme d’index ; un système qui atteint vite ses limites et qui influe fortement sur les performances d’un système en luimême. Il est donc théoriquement impossible de faire de la recherche sur toutes les colonnes et même si c’était le cas, l’autre limite serait de pouvoir le faire sur un cluster. D’autant plus qu’avec l’évolution de la structure des données, il est de plus en plus complexe et coûteux de faire évoluer les systèmes traditionnels. C’est à ces problématiques que répond principalement ElasticSearch : en proposant une indexation des logs.
en fait un dictionnaire dans lequel on répertorie tous les termes dans ce champ. Par exemple lorsqu’il s’agit de messages Twitter : tous les termes sont répartis dans le dictionnaire et sont indexés sous forme d’ID dans un document, là où une base de données les indexe dans plusieurs colonnes. ElasticSearch consulte constamment le dictionnaire et gère la mémoire en deux parties : certaines en mémoire pour des raisons de cache, d’autres sur le disque » , explique Bahaaldine Azarmi, solution architect chez Elastic. L’avantage de la solution est aussi qu’elle se met rapidement en oeuvre. Il peut suffire d’une personne qui débute un projet, en collaboration avec d’autres qui travaillent sur les données des applications, qui savent où sont les logs, etc.
« Les gens qui utilisent ElasticSearch sont plutôt dans la recherche » , précise Bahaaldine Azarmi. Cela permet d’être assez souple dans l’utilisation. « Avec quelques noeuds, des clients gèrent déjà plusieurs Teraoctets de don
nées » , ajoute- t- il précisant que certains dans la finance utilisent ElasticSearch pour de la détection de fraude. Par nature l’outil est donc destiné aux environnements avec de gros volumes de données. Et de plus en plus, des offres clouds prêtes à l’emploi se dévoilent ; Elastic propose la sienne (« as a service ») depuis le rachat de Found. De plus, ElasticSearch est bien entendu déployable sur des serveurs physiques en cloud privé/public/hybride, sur des infrastructures virtualisées et/ou reposant sur Docker. « Nous travaillons actuellement sur une offre on- premise qui permettra de déployer un cluster ElasticSearch avec les mécanismes inhérents au Cloud. Elle devrait arriver courant 2016 » , ajoute
Bahaaldine Azarmi.
Stockage et viSualiSation deS donnéeS
Alors que les serveurs « all flash » vont se banaliser en 2016 (cf. article en p. XX), ElasticSearch peut bien entendu en tirer parti mais ce n’est pas toujours nécessaire. « Même dans le cas où une entreprise souhaite faire de l’analyse de données, nous conseillons souvent de diviser les données en deux topologies : une zone froide et une zone chaude, avec des serveurs à configurations différentes. Sur la zone chaude, nous
préconisons effectivement du SSD » , explique l’ingénieur. À noter que les données reçues sont compressées sur disque avec un ratio qui peut varier entre 0,8 et 1,2 en moyenne ; donc le poids peut être soit réduit, soit augmenté. Tout ceci ne serait pas grand- chose sans la possibilité de visualiser les données. Elastic a une corde de plus à son arc : Kibana. La solution de visualisation se bornait jusqu’à la v4.1 à afficher les données. Depuis la 4.2, elle a subi un lifting avec par
exemple la possibilité de créer des applications associées à tels ou tels jeux de données, l’ajout de Timelion – compositeur de données dans le temps – ou encore « une surcouche d’ElasticSearch qui permet d’agréger des données
dans une logique « graph » pour faire apparaître des super-connecteurs et les connecter entre eux ». Cette dernière solution devrait par exemple permettre d’alimenter des moteurs de recommandations pour les sites e-commerce. Kibana n’a toutefois pas vocation à remplacer un outil de Business Intelligence (Qlik, Tableau ou autre), même s’il existe des API pour s’y connecter.