Données massives & ETL Pipeline d’apprentissage automatique Production 24/7

Pipeline de suivi des abonnements Instagram

Pipeline ETL automatisé pour la collecte et l’analyse de données massives : collecte web intelligente en plusieurs passes, prédiction du genre par apprentissage automatique, suivi qualité et tableaux de bord en temps réel avec Airflow, Spark et Elastic.

1. Contexte et Objectifs

Ce projet met en œuvre un pipeline ETL prêt pour la production pour suivre les abonnements Instagram, détecter automatiquement les changements, produire des prédictions par apprentissage automatique et contrôler la qualité des données. Le système fonctionne de manière autonome, 24 h/24 et 7 j/7, une fois Docker Desktop lancé.

Objectifs Clés

  • Suivi automatisé : Collecte des abonnements Instagram environ toutes les quatre heures (six fois par jour), avec des stratégies limitant la détection automatisée
  • Détection des changements : Identification des nouveaux abonnements et désabonnements par comparaison quotidienne
  • Prédictions : Prédiction automatique du genre par apprentissage automatique, accompagnée de scores de confiance
  • Suivi qualité : Scores mesurant la complétude et la précision des collectes
  • Tableaux de bord en temps réel : Interface web et visualisations Kibana avec filtres avancés
  • Lac de données structuré : Trois couches : données brutes (RAW), formatées (FORMATTED) et d’usage (USAGE)

Le principal défi était de concevoir un système robuste équilibrant fréquence de collecte, mécanismes anti-détection et assurance qualité tout en maintenant une opération 24/7 autonome.

Vue d’ensemble du système ETL

Figure 1 - Vue d'ensemble haut niveau du pipeline de surveillance Instagram

2. Architecture Système

Le pipeline ETL suit une architecture microservices modulaire orchestrée par Apache Airflow avec conteneurisation Docker complète.

Flux d'Exécution Automatisé

Le système s'exécute selon un planning précis (fuseau Europe/Paris) :

  • Six collectes quotidiennes : 02:00, 06:00, 10:00, 14:00, 18:00 et 23:00, avec un décalage aléatoire de 0 à 45 minutes
  • Trois passes par collecte : Passes successives séparées par des délais aléatoires de 60 à 120 secondes pour simuler un comportement humain
  • Agrégation Quotidienne : 23:00 - Fusion des 6 scrapings journaliers avec déduplication
  • Comparaison quotidienne : À 23:00, détection des nouveaux abonnements et désabonnements entre le jour courant et la veille

Ensemble des microservices

Orchestration

  • Apache Airflow 2.10.3
  • LocalExecutor
  • Planificateur de tâches actif en continu

Collecte Données

  • Selenium 4.36
  • Chrome sans interface graphique
  • Authentification par cookies

Traitement

  • PySpark 4.0.1
  • Pandas
  • Scikit-learn 1.6.0

Stockage & Visualisation

  • PostgreSQL 14
  • Elasticsearch 8.11
  • Kibana 8.11
  • Tableau de bord Flask

Architecture du lac de données

data/ ├── raw/ # Données JSON brutes issues de la collecte │ └── YYYY-MM-DD_HH-MM-SS/ ├── formatted/ # Données nettoyées et prédictions │ └── YYYY-MM-DD_aggregated/ └── usage/ # Agrégations et comparaisons quotidiennes └── YYYY-MM-DD_comparatif/
Schéma de l’architecture ETL

Figure 2 - Architecture système complète avec tous les microservices

3. Étapes Pipeline ETL

Pipeline en trois étapes combinant collecte web avec Selenium, traitement PySpark et stockage dans plusieurs systèmes.

  • Extraction : Collecte Selenium avec authentification par cookies, trois passes et limitation du rythme des requêtes (délais de 60 à 120 secondes)
  • Transformation : Traitement PySpark, prédiction du genre, évaluation de la qualité et agrégation quotidienne
  • Chargement : PostgreSQL, Elasticsearch et lac de données JSON (couches RAW, FORMATTED et USAGE)
Étapes du pipeline ETL

Figure 3 - Étapes du pipeline ETL : Extraction, Transformation et Chargement

4. Suivi de la qualité

Système de contrôle de la complétude et de la précision des collectes, conçu pour éviter les faux positifs.

  • Métriques : Score automatique de complétude (comptes collectés / total × 100), avec niveaux de confiance élevé (≥ 95 %), moyen (80 à 95 %) et faible (< 80 %)
  • Comparaison intelligente : Exclusion des collectes incomplètes pour éviter de signaler à tort de nouveaux abonnements
  • Historique : Conservation de l’historique complet dans la table scraping_metadata, avec filtrage par seuil
Tableau de bord de suivi de la qualité

Figure 4 - Métriques de suivi qualité montrant les scores de complétude au fil du temps

5. Stratégie Anti-Détection

Mécanismes visant à limiter les risques de restriction du rythme des requêtes et de suspension de compte par Instagram.

  • Temporisation : Six collectes par jour, avec des intervalles irréguliers de 3 h, 4 h, 4 h, 4 h, 4 h et 5 h, et des décalages aléatoires de 0 à 45 minutes
  • Comportement : Trois passes par collecte, délais de 60 à 120 secondes entre les passes, cookies persistants et automatisation d’un navigateur réel
  • Réduction des risques : Limites par compte, renouvellement des cookies tous les un à trois mois, gestion des erreurs et journalisation complète

6. Tableaux de bord et visualisation

Visualisation avec Flask et Kibana, et suivi de l’exécution dans Airflow.

Vue d’ensemble du tableau de bord ETL

Figure 5 — Tableau de bord Flask : vue d’ensemble et statistiques détaillées

Tableau de bord Kibana

Figure 6 — Tableau de bord Kibana : tendances et agrégations

Visualisation du DAG Airflow

Figure 7 — DAG Airflow montrant l’exécution du flux automatisé

7. Implémentation Technique

Architecture complète de microservices avec Docker Compose, automatisation par Makefile et possibilité de déploiement cloud.

  • Conteneurisation : Ensemble de services Docker (Airflow personnalisé, PostgreSQL, Elasticsearch, Kibana et Flask), avec volumes persistants et redémarrage automatique (restart: always)
  • Automatisation : Commandes Makefile simplifiées : install, start/stop, open, validate-cookies et trigger-dag
  • Déploiement cloud : Prise en charge d’Oracle Cloud Free Tier : ARM, 4 OCPU, 24 Go de RAM et 200 Go de stockage, pour un fonctionnement continu
Architecture des conteneurs Docker

Figure 8 - Architecture de conteneurisation Docker avec tous les services

8. Conclusion

Ce projet présente un pipeline ETL de suivi Instagram prêt pour la production et autonome, 24 h/24 et 7 j/7. L’architecture associe Selenium, Airflow, PySpark et les services Elastic, avec contrôles qualité automatisés, mécanismes limitant la détection automatisée et déploiement Docker simplifié.

Les évolutions prévues comprennent une analyse des profils par apprentissage automatique avancé, des alertes en temps réel, une API REST, la prise en charge d’autres plateformes et des analyses de réseau plus approfondies.

Technologies & Ressources

Technologies Clés

Informations Projet

Statut : Prêt pour la production et fonctionnement continu

Déploiement : Conteneurisation Docker avec prise en charge d’Oracle Cloud

Contact : Pour toute question technique, contacter Martin LE CORRE

Mention légale

Ce projet est fourni uniquement à des fins pédagogiques et de recherche. Son utilisation doit respecter les conditions d’utilisation d’Instagram et la réglementation sur la protection des données, notamment le RGPD.