Repo d'un cas d'usage du projet centré sur l'API
Times Wire
du NY Times
- Construire un pipeline ETL de traitement des données:
- capable de les traiter par batch,
- extraites de l'API Times Wire
- vers une solution de stockage des données bruts,
- transfomées pour être utilisable dans notre cas d'usage,
- renvoyées vers une base de données
- répondant aux besoins analytiques et/ou applicatifs du cas d'usage,
- Construire une application démontrant l'utilisabilité des données affinées:
- avec un back-end pour manipuler ces données (-> FastAPI),
- un front-end pour afficher le résultat et/ou interagir avec les données,
- Améliorer le fonctionnement du projet:
- développer une solution d'orchestration du pipeline ETL (-> Airflow),
- transférer le projet dans une solution cloud (-> GCP)
- ajouter une data warehouse pour piloter les interactions avec les données (-> BigQuery),
- Améliorer le développement du projet en mettant en place un workflow de CI/CD:
- mettre en place un process pour documenter le projet (-> Sphinx)
- construire un pipeline de CI,
- avec un workflow déclenché automatiquement (-> GitHub Workflows), #FIXME
- tester les fonctionnalités du code (-> pytest),
- valider la qualité du code (-> black, isort, flake8, bandit, safety)
- construire un pipeline de CD:
- automatisant le dépoiement des micro-services du projet:
- containeriser les composants du projet (-> Docker/Kubernetes),
- adapter le projet dans une architecture IaC (-> Terraform),
Exemples d'architecture visé (si on atteint l'étape d'implantation dans GCP):
Ce projet collecte des données à partir de l'API Times Wire du NY Times.
Vous pouvez récupérer la collection de tests des endpoints du portail développeur du NY Times:
Ces repos GitHub ont de bonnes idées dont on peut s'inspirer pour la structure et le code:
- pynytimes # extraction
- DQMonstersDB-API # backend
- DQMonstersDB-streamlit # frontend
- DataEngineeringProject # orchestration
Les éléments principaux de ce repo sont organisés par logique fonctionnelle:
- Data Pipeline:
etl
extract
transform
load
- Web App:
api
backend
frontend
- DataOps:
orchestration
- clonez le repo
- créez un environnement virtuel dédié au projet
- installez
poetry
pour administrer les packages Python- des outils modernes comme
poetry
oupipenv
sont préconisés pour la gestion des dépendances spécifiés dans un fichiertoml
, - mais plusieurs outils de DevOps préconisent de revenir à
pip
et des fichierstxt
pour lancer des job dans des environnements virtuels dédiés
- des outils modernes comme