đ Plateforme de donnĂ©es¶
Ce projet contient lâenvironnement dâexecution dâAirflow
Les fichiers qui concerne la plateforme data :
pyproject.tomldéfinition des dépendances dans la section [dependency-groups]./dagsrépertoire dans lequels sont stockés tous les dags executés sur le cluster Airflowdata-platform/dags/airflow-scheduler.Dockerfileetdata-platform/dags/airflow-webserver.Dockerfile, fichiers de configuration Docker exécutés dans tous les environnementsdocker-compose.ymlorchestre les conteneurs en environnement de développementdata-platform/dags/testsrépertoire qui contient les tests des dags
Environnements¶
On distingue 3 environements:
development: airflow tourne localement en utilisant lâorchestrateurdocker compose(cf. docker-compose.yml)preprodetprod: Airflow tourne sur Scaleway
Mise à jour du scheduler et du webserver sur Scaleway¶
Airflow utilise lâoffre CaaS (Container as a Service) de Scaleway, chaque environnement est dĂ©ployĂ© dans un namespace:
lvao-preprod
lvao-prod
Dans chaque environnement, 2 conteneurs sont déployés:
lvao-airflow-scheduler : scheduler dâairflow, orchestre et execute les dags car lâoption
LocalExecutorest activelvao-airflow-webserver : interface dâairflow
Chaque environnement utilise sa propre base de données :
lvao-preprod-airflow
lvao-prod-airflow
et chaque environnement utilise son espace de stockage s3 :
lvao-preprod-airflow
lvao-prod-airflow
Déploiement et configuration¶
CI/CD¶
la platefome Data est déployée en preprod à chaque mise à jour de la branche main sur Github (cf. cd.yml)
Et en production Ă chaque depot de tag de version (cf. cd_prod.yml)
De la mĂȘme maniĂšre que lâinterface, cela permet de garder la cohĂ©rance entre lâapplication web et la plateforme data
Configuration du cluster Airflow¶
Variable dâenvironnement du cluster Airflow¶
Les variables dâenvironnement sont dĂ©ployĂ©es lors de lâexĂ©cution des recettes Terraform.
Un exemple Ă adapter selon lâenvironnement est disponible dans le fichier data-platform/dags/.env.template
Gestion des logs¶
Pour que les logs du scheduler soient stockĂ©s sur S3, les instances Scaleway sont lancĂ©s avec les variables dâenvironnement:
AIRFLOW__LOGGING__REMOTE_LOGGING=true
AIRFLOW__LOGGING__REMOTE_BASE_LOG_FOLDER=s3://qfdmo-airflow-logs
AIRFLOW__LOGGING__REMOTE_LOG_CONN_ID=s3logs
AIRFLOW__LOGGING__ENCRYPT_S3_LOGS=false
s3logs est une connection configurĂ© dans lâinterface dâAirflow
Attention Ă ajouter le paramĂštre endpoint_url pour le stockage S3 de Scaleway