En attendant une éventuelle publication d’algorithme(s), le GitHub est déjà bien fourni. Le site vitrine qui l’accompagne affiche une centaine de projets au compteur.
Héron : le Spark de Twitter
Parmi eux, il y a Heron. Il s’agit d’un moteur générique de traitement de flux diffusé écrit en Java/C++/Python. Publié en 2016, il était passé deux ans plus tard sous l’aile de la Fondation Apache. Officiellement encore au stade d’incubation (dernière version : mai 2021), il s’architecture en conteneurs.
Chez Twitter, Heron a remplacé un autre moteur maison, lui aussi passé dans le domaine de l’open source : Apache Storm. Il est rétrocompatible avec lui (API et modèle de données). Mais y ajoute notamment l’isolation des tâches sous forme de processus, l’exploitation des ressources à la demande et une refonte architecturale qui améliore autant les débits que la latence.
Les entités de traitement (des graphes orientés acycliques, ici appelées topologies) sont écrites en Java ou en Python.
Rezolus : pour une télémétrie plus fine
Sous licence Apache 2.0 comme Heron, Rezolus avait basculé en Open source en 2019. Il s’agit d’un agent de télémétrie pour les systèmes Linux – avec une prise en charge limitée de macOS. Twitter l’a développé pour obtenir des mesures plus fines qu’avec son outillage précédent, qui échantillonnait à la minute.
Rezolus permet quant à lui de paramétrer la fréquence d’échantillonnage jusqu’à une précision de l’ordre de 200 ms. Ses sources : procfs, sysfs, le sous-système perf_events et l’interface BPF. Il peut aussi fonctionner comme proxy pour collecter des métriques (voir ici celles prises en charge) au niveau des applications.
Ébouillantage : Cascading en Scala
À l’image de Hive et de Pig, ce cadre Hadoop simplifie l’écriture de fonctions carte et réduire. Il exploite le langage Scala. Avec, sous le capot, la bibliothèque Cascading (implémentée dans d’autres langages : Lingual pour SQL, Cascalog pour Clojure…).
Scalding est ouvert depuis 2013, sous licence Apache 2.0. Twitter l’utilise entre autres pour le ciblage publicitaire et la prédiction de clics. LinkedIn s’en sert sur sa partie envoi par courrier électronique. Spotify, pour les recommandations musicales. Barclays, pour l’ETL.
TIP (Twitter Image Pipeline) : le pendentif iOS de Fresco
Le cadre TIP (licence Apache 2.0 ; dernière Libération : octobre 2020) s’intègre dans les applications iOS. Comme Fresco (de Facebook) que Twitter utilise sur Android, il gère le rendu des images, à l’appui de trois niveaux de cache. Il gère notamment l’intégration de codecs, le redimensionnement, la reprise des téléchargements et le jpeg progressif.
Twemoji : la collection Twitter
À travers ce projetqui compte près de 15 000 étoiles et 1600 fourches, Twitter met à disposition sa propre collection d’emojis Unicode, en PNG et SVG (licence CC-BY 4.0). On les retrouve notamment sur Discord, Roblox et des claviers tiers pour Android. Divers projets sont développés pour permettre d’implémenter Twemoji en Ruby, en .NET, au travers des classes CSS ou comme police par défaut sur Linux/OS X.
Illustration principale © GlebStock – Shutterstock