TL; DR :
- Du cloud si on en a la possibilité ! ça coûte moins cher, c’est plus puissant, et ça va plus vite (oui, le cloud c’est l’ordinateur de quelqu’un d’autre. Et alors ?)
- De l’open-source (formats, langages et standards) autant que possible, et des ressources formées en interne pour un maximum de flexibilité
La BI est un sujet d’ingénierie complexe, autant au moment de concevoir une infra que pour la faire évoluer ensuite.
Il semblerait que, comme ce fût le cas côté Data Science (l’irrésistible transition depuis SAS, SPSS, Statistica vers Python, R, Spark) et côté storage (qui utilise encore du Oracle, Informix ou du DB2 par choix quand il pourrait être sur Postgres), on glisse rapidement vers de l’open source côté Business Intelligence aussi. Mais aussi côté cloud !
Cet article résume rapidement les tendances qu’on observe dans les entreprises tech centrées données. Ces tendances modèlent ce que sera l’état de l’art demain. Je précise quand même que, côté cloud, j’ai un léger biais GCP simplement car c’est le fournisseur que je connais le mieux et que j’ai le plus utilisé. Il est cependant très facile de trouver des composants équivalents chez les autres fournisseurs via une rapide recherche (“équivalent BigQuery aws”).
1. Stockage 💾
Cloud, évidemment. On migre progressivement ses bases de données on-premise, et tant pis pour la dépendance à tel ou tel fournisseur (ceci est un faux argument qui permet de ne pas s’attaquer à un problème complexe !).
Pour le stockage classique en base relationnelle, le choix est abondant :
Côté datawarehouse
- Redshift, Snowflake, BigQuery sont les solutions les plus fréquemment utilisées pour héberger du datawarehouse.
Elles sont super puissantes, très peu chères, scalables à l’infini et très pratiques à l’usage. - Côté analytics haute disponibilité, on trouve Apache Druid ou encore Apache Pinot. Les deux sont très pratiques pour servir des données à une vitesse record.
- Pour les séries temporelles, InfluxDB est très reconnu. Le connecteur Python permet de le coupler facilement avec des solutions de forecasting scalables comme Prophet
2. ETL/ELT & data integration 🛠️
Sûrement la partie du workflow où le choix est le plus compliqué
- D’un côté, on trouve des solutions commerciales cloud qui marchent bien mais basées sur des formats/langages propriétaires,
- De l’autre, beaucoup d’équipes qui réinventent encore entièrement la roue from scratch (mais en moins bien !).
Quelques solutions commerciales de qualité
Côté open-source, on peut s’en sortir avec un mélange de :
- dbt (Data Build Tool) : les transformations se font dans le datawarehouse, grâce à du SQL
- Airbyte : intégration de données de sources multiples, simple
- Des jobs Python classiques (pandas !) ou alors Apache Spark pour les très grosses volumétries (DataProc en version managée chez Google, ou alors Data Mechanics ou DataBricks)
- Apache Airflow (❤), l’orchestrateur indispensable pour organiser, monitorer et articuler le tout, un must !
Côté “temps réel” 🚀
- Pour de l’event streaming (recevoir, centraliser, servir), Apache Kafka est excellent. Il permet de réceptionner de la donnée depuis des apps (producteurs), et de la servir à d’autres (consommateurs). RabbitMQ ou Redis font la même chose, avec moins de focus sur la scalabilité (Kafka peut fonctionner sur un mode cluster). Côté cloud, on retrouve PubSub
- Pour de l’event processing (traiter la donnée en temps réel), on trouve Kinesis, Beam ou encore Flink (Décidément Apache…)
Autrement, si l’on est prêt à échanger le côté temps réel parfait contre de la facilité d’usage, Spark (❤) permet de faire du microbatch avec son module Spark Streaming. Le code est simple grâce à l’API Python (pyspark), qui dispense d’écrire du Scala ou du Java.
3. Analytics & dashboarding 📈
Là aussi, beaucoup de choix, et d’excellentes solutions open-sources sur un marché longtemps dominé par les produits Enterprise type MicroStrategy, SAP Business Objects, Qlik, et plus récemment Tableau qui tient encore bien.
- Apache Superset (❤), par Maxime Beauchemin: très beau ! comprend un super IDE SQL et en forte croissance ! vaut carrément le détour.
- Redash par Databricks
- Looker de chez Google et qui s’intègre bien aux environnements avec du GCP
4. Pour parfaire le tableau 🖌️
Requêtes ⛏️
L’excellent Trino (AKA Presto) comme moteur de requêtes fédérées permet d’utiliser SQL pour requêter des sources diverses à une vitesse monstre. On peut par exemple extraire une table depuis Hive en faisant une jointure sur une source MongoDB ou PostgreSQL.
Facebook utilise Trino/Presto pour des requêtes interactives sur plusieurs sources de données internes, y compris leur entrepôt de données de 300Po. Plus de 1 000 employés de Facebook utilisent Presto quotidiennement pour exécuter plus de 30 000 requêtes qui, au total, analysent plus d’un pétaoctet chacune jour. (source)
Data Discovery 🔭
Avoir plein de données, c’est cool, mais il faut pouvoir se retrouver là-dedans. Amundsen (❤) est un très bon Data Catalog open source qui permet d’automatiser la majorité du travail de documentation en se connectant aux sources de données pour en récupérer les métadonnées régulièrement (grâce à Airflow). C’est une sorte de dictionnaire des données interne, qui permet de savoir ce que contient tel schéma ou telle table, ou encore ce que contient précisément le champ NUXTAP2
de la table BUSI_CNT
, ou encore d’ou provient ce dashboard Tableau qui date de 2017 et que plus personne ne regarde. Amundsen dispose de connecteurs pour une énorme variété de sources de données dont voici la liste.
Disposer d’un data catalog est absolument essentiel.
Autrement, voici un article super intéressant sur le sujet écrit par Maxime Beauchemin, le créateur d’Airflow & de Superset, et une animation que je trouve sympa (ignorer le sponsor).
Merci pour votre lecture ! 😊👋
~ Anas EL KHALOUI