• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 19/05/2023

Partagez vos données avec la Serving Layer

Le deuxième composant de notre architecture Big Data est nommé serving layer : c'est le composant qui va être en charge de stocker et d'exposer aux utilisateurs les résultats des analyses par lot réalisées dans la batch layer. En fait, il s'agit d'un composant assez simple : la serving layer agit comme une base de données dans laquelle on va stocker des informations, et ces informations vont pouvoir être lues par les utilisateurs lorsqu'ils vont réaliser des requêtes.

Les contraintes de la serving layer

Reprenons notre exemple habituel qui consiste à compter le nombre de visites de notre site, et complexifions-le un peu : nous désirons maintenant obtenir le nombre de visite par page et par heure. (Cette difficulté supplémentaire est faite pour bien comprendre les enjeux de passage à l'échelle, mais ne change pas fondamentalement notre problème)

La batch layer va calculer des statistiques horaires pour chaque page et les insérer dans notre serving layer. Les données de notre serving layer auront donc la forme :

20171201-00:00:00   http://www.plonk.com/index.html       323
20171201-00:01:00   http://www.plonk.com/index.html       244
20171201-00:02:00   http://www.plonk.com/index.html       458
20171201-00:03:00   http://www.plonk.com/index.html       242
20171201-00:00:00   http://www.plonk.com/about.html       12
20171201-00:01:00   http://www.plonk.com/about.html       63
20171201-00:02:00   http://www.plonk.com/about.html       52
20171201-00:03:00   http://www.plonk.com/about.html       98
20171201-00:00:00   http://blog.plonk.com/article.html    546
20171201-00:01:00   http://blog.plonk.com/article.html    846
20171201-00:02:00   http://blog.plonk.com/article.html    961
20171201-00:03:00   http://blog.plonk.com/article.html    1024

On peut logiquement s'attendre à ce que les utilisateurs cherchent alors à récupérer le nombre de visites pour chaque url sur une plage de temps donnée. Par ailleurs, les utilisateurs voudront également récupérer les 100 pages les plus fréquentes à n'importe quelle heure.

À partir de cet exemple, énumérons les contraintes que devra respecter la serving layer :

  • Écriture par lot : la serving layer va recevoir des nouvelles données à chaque fois qu'une analyse par lot aura été faite dans la batch layer. Ces écritures vont donc se faire également par lot.

  • Lecture aléatoire : les clients qui vont réaliser des requêtes vont récupérer des données concernant n'importe quelle url, dans n'importe quelle période de temps. Il faut donc que la serving layer supporte des lectures en accès aléatoire. Ceci implique de créer des index sur les données pour avoir des temps de réponse faibles.

On note que la serving layer n'aura pas à supporter les écritures aléatoires : c'est une excellente nouvelle, parce qu'une grande partie de la complexité des bases de données que nous connaissons, relationnelles ou non, provient de la nécessité de réaliser des écritures aléatoires. Dans son livre qui introduit la notion d'architecture Lambda, Nathan Marz propose d'utiliser ElephantDB, une base de données très simple (et donc, on l'espère, performante) qu'il a créée lui-même. Cependant, ElephantDB n'a jamais vraiment été une solution très populaire, et sa documentation est franchement lacunaire. Alors quelle solution technique choisir pour implémenter la serving layer ?

Solution technique

Je vous recommande d'utiliser n'importe quelle solution NoSQL à laquelle vous êtes habitués et qui répond aux contraintes énoncées ci-dessus. Il y a fort à parier que vous n'aurez pas besoin de la plupart des fonctionnalités offertes par cette solution, mais au moins vous utiliserez un outil pour lequel vous n'aurez pas à vous former. Et si vous ne connaissez pas déjà une solution NoSQL qui pourrait faire l'affaire, vous pouvez vous former à une solution suffisamment générique que vous pourrez réutiliser par la suite. Par exemple, Cassandra, MongoDb et ElasticSearch sont de bons candidats. En plus, ces deux derniers sont couverts en détails dans le cours Maîtrisez les bases de données NoSQL ;-)

Conclusion

Avec la combinaison de la batch layer et de la serving layer, on est tentés de penser qu'on dispose déjà d'une architecture big data complète. Effectivement, dans les situations où on n'a pas besoin d'analyser les données les plus récentes, ces deux composants se suffisent à eux-même. Mais dans le cas général, cette architecture à deux composants a une faille : elle ne permet pas d'analyser les données récoltées pendant l'analyse par lot dans la batch layer. Pour répondre à cette contrainte, il faut s'intéresser à la speed layer...

Vous souhaitez professionnaliser vos compétences ? Jetez un oeil sur les formations big datas proposées par OpenClassrooms : architecture big data

Exemple de certificat de réussite
Exemple de certificat de réussite