telecharger - Elasticsearch

Transcription

telecharger - Elasticsearch
Étude De Cas
Le défi :
La solution :
Comment faire pour répondre aux besoins de recherche des
4 millions d’utilisateurs de GitHub tout en fournissant simultanément des indicateurs opérationnels et tactiques permettant d’améliorer de manière itérative le service client?
Utiliser Elasticsearch pour indexer plus de 8 millions de dépôts
de code ainsi que des données sur les événements critiques.
Fournir un moteur de recherche puissant pour les utilisateurs finaux et les développeurs
Exploiter les statistiques sur les données de recherche
• Se développer pour répondre aux besoins d’une base
d’utilisateurs en pleine expansion, en migrant d’Apache
Solr vers Elasticsearch
• Démasquer les utilisateurs malveillants en interrogeant
les données indexées de logging
• Indexer et interroger pratiquement tous types de données accessibles publiquement
• Permettre des recherches programmatiques plus poussées pour les applications de développeurs
• Déceler les bugs logiciels au sein de la plateforme
GitHub en indexant la totalité des alertes, événements,
logs et en surveillant la fréquence de certaines exceptions de code
• Effectuer des requêtes allant au-delà d’un SQL standard
• Fournir une indexation pratiquement en temps réel dès
qu’un utilisateur charge de nouvelles données
Une recherche sophistiquée pour des utilisateurs
sophistiqués
Elasticsearch permet d’exécuter des recherches sur GitHub, le
plus grand système hébergé de gestion de versions au monde,
fort d’une base clientèle de plus de 4 millions d’utilisateurs techniques. GitHub fait appel à Elasticsearch pour indexer en continu les données d’un catalogue en pleine expansion, constitué
de plus de 8 millions de dépôts de code et comportant plus de
2 milliards de documents. Grâce à Elasticsearch, GitHub est en
mesure de permettre à ses utilisateurs de réaliser facilement des
recherches au sein de ces données.
« La fonction de recherche est l’âme de GitHub, » explique Tim
Pease, ingénieur d’exploitation chez GitHub. « En vous rendant
sur GitHub.com/search, vous pouvez rechercher parmi des dépôts, des utilisateurs, des problèmes, des requêtes Pull et des
codes source. »
L’un des objectifs de l’implémentation Elasticsearch de GitHub
est d’indexer tout ce qui est disponible publiquement sur GitHub.
com et de rendre ce contenu plus facile à trouver. Bien entendu,
les recherches plein texte sont totalement prises en charge, mais
il est également possible d’effectuer des recherches à partir de
toutes sortes de critères, et ce en toute simplicité.
« Vous pouvez par exemple rechercher un projet qui utilise Clojure comme langage principal et qui a fait preuve d’activité au
cours du dernier mois, et toutes ces fonctionnalités seront exécutées par Elasticsearch, » déclare M. Pease.
www.elastic.co/fr/
Le stockage flexible et les différents formats d’extraction
d’Elasticsearch, qui permettent à la fois à des données extrêmement structurées ou très peu structurées de coexister au sein du
même stockage de recherche, ainsi que le grand choix de primitives de recherche offertes par Elasticsearch, ont grandement
facilité l’implémentation des recherches.
« Avec Elasticsearch, il est possible de lancer énormément de
requêtes sur ces données qui ne seraient pas prises en charge
par une base de données SQL standard, » souligne M. Pease.
Prendre en charge des indicateurs analytiques
au-delà du pare-feu
GitHub utilise les capacités combinées d’Elasticsearch à indexer les recherches et à analyser les données pour exécuter
de nombreux projets. Par exemple, GitHub s’est servi des capacités analytiques des requêtes d’Elasticsearch sur des données
stockées d’audit et de logging afin de surveiller les activités des
utilisateurs en termes de sécurité.
« Avec les requêtes d’Elasticsearch, il nous est possible d’obtenir
rapidement un aperçu de toutes les actions réalisées par un utilisateur, » explique M. Pease. « C’est un moyen très pratique de
vérifier si un compte a été usurpé ou piraté, ou bien si l’utilisateur
s’en est servi à des fins malveillantes. »
Alors que GitHub cherchait un moyen de suivre et d’analyser les
exceptions de code générées par les divers éléments logiciels
qui alimentent GitHub.com, une base de données NoSQL popu-
laire a été utilisée à l’origine. Les exceptions de code étaient
stockées dans des indexes secondaires, et ses fonctionnalités
analytiques étaient utilisées pour analyser les exceptions passées. Les résultats étaient ensuite également stockés dans la
base de données.
« Pour nos cas d’utilisation, cela n’a pas très bien fonctionné, » se remémore Grant Rodgers, membre de l’équipe
technique de GitHub. « Une fois que nous avons migré sous
Elasticsearch et commencé à utiliser les recherches à facette
d’histogramme, tout s’est arrangé. »
GitHub fait appel à la capacité de recherche à facette d’histogramme d’Elasticsearch, ainsi qu’aux autres facettes statistiques, pour surveiller les augmentations de fréquence de
certains types d’exceptions de code. Ce procédé permet de
révéler des bugs dans les systèmes logiciels.
« La capacité de recherche à facette d’histogramme
d’Elasticsearch est extrêmement performante. Nous cherchons à développer son utilisation pour cette application en
particulier, » explique M. Rodgers.
Adaptabilité pour des millions d’utilisateurs
GitHub a commencé par utiliser Solr pour ses recherches, mais
l’entreprise s’est aperçue que cette solution n’était pas aussi
évolutive et se gérait bien moins facilement.
« Au fur et à mesure de l’augmentation du nombre d’utilisateurs de GitHub, nous avons rapidement dépassé le volume
de stockage pouvant être géré par un cluster Solr et une instance Solr, » explique M. Pease.
Il est donc devenu nécessaire de choisir entre découper ses
propres données sous Solr, afin de permettre la gestion de
cette charge, ou migrer sous Elasticsearch. Le choix a été vite
fait. « Nous avons décidé de passer à Elasticsearch, car nous
avons pensé que cette solution permettrait un bien meilleur
découpage des données, » poursuit M. Pease.
Elasticsearch offre un rééquilibrage automatique des shards
afin d’améliorer ses performances et de gérer les conditions
de basculement automatique. Les répliques des shards sont
automatiquement distribuées sur de nouveaux nœuds au sein
d’un cluster, et en cas de dysfonctionnement au niveau d’un
nœud, les shards sont automatiquement déplacés depuis les
nœuds défectueux vers des nœuds fonctionnels.
Un sharding avancé pour des performances optimales
Pour l’équipe GitHub, avec plus de 2 milliards de documents
tous indexés par Elasticsearch, sans oublier des utilisateurs
qui chargent et modifient du code en permanence, les performances de recherche sont essentielles. GitHub dessert en
moyenne 300 requêtes de recherche chaque minute.
GitHub fait appel à Elasticsearch pour indexer le nouveau
code dès que les utilisateurs le placent dans un dépôt sur
GitHub. Il est possible d’effectuer une recherche parmi ces données peu de temps après, et les résultats de recherche sont
renvoyés à la fois vers des dépôts publics et vers des dépôts
privés auxquels peuvent accéder les utilisateurs connectés.
Afin d’optimiser l’accès aux données de recherche, GitHub
utilise fréquemment le sharding. Le cluster Elasticsearch principal de GitHub comporte environ 128 shards, chacun ayant
une capacité de stockage d’environ 120 gigaoctets.
Afin d’optimiser les recherches au sein d’un dépôt unique,
GitHub fait appel au paramètre de routage d’Elasticsearch
sur la base de l’identifiant du dépôt. « Cela nous permet de
mettre tout le code source pour un dépôt unique dans un seul
shard, » explique M. Pease. « Si vous êtes sur une seule page
de dépôt, et si vous y faites une recherche, elle ne concernera
en fait qu’un seul shard. Ces requêtes sont environ deux fois
plus rapides que les recherches effectuées à partir de la page
de recherche principale de GitHub. »
Les avantages apportés à GitHub par Elasticsearch
3
Une croissance efficace
3
GitHub utilise le paramètre de routage et le
sharding adaptable d’Elasticsearch pour effectuer
des recherches au sein d’un dépôt unique sur un
seul shard, ce qui permet de doubler la vitesse
d’obtention des résultats.
GitHub fait appel à la fonctionnalité de
sharding d’Elasticsearch ainsi qu’à ses requêtes
sophistiquées pour effectuer des recherches sur
les données de dépôts de code de 4 millions
d’utilisateurs.
3
Analyses par requêtes avancées
GitHub exploite les recherches à facette
d’histogramme d’Elasticsearch, ainsi que ses
autres fonctions de requêtes analytiques, pour
monitorer son infrastructure interne afin de
s’assurer de l’absence d’abus, de bugs, etc.
De hautes performances
3
Satisfaction des utilisateurs et des
Elasticsearch permet de répondre aux besoins
en recherche des utilisateurs habituels et,
grâce à l’API Elasticsearch, des développeurs
d’applications également.
Elastic croit en l’importance de pouvoir extraire, sans attendre, des indicateurs concrets à partir de données. À l’origine de trois projets open source, Elasticsearch, Logstash
et Kibana, conçus pour rechercher, analyser et visualiser, en temps réel, les données issues de n’importe quelle source, Elastic aide son public à donner un sens aux données.
Des options d’achat d’actions aux flux Twitter, des logs Apache aux messages de blogs WordPress, nos produits augmentent les possibilités pour vos données, montrant ainsi
que le simple fait de « relier les points » apporte des réponses.
www.elastic.co/fr/
Pour en savoir plus au sujet d’Elastic, veuillez contacter [email protected] | www.elastic.co/fr/

Documents pareils