51 votes

Moyen efficace de déployer des fichiers DAG sur un flux d'air

Existe-il des pratiques exemplaires qui sont suivies pour le déploiement de nouvelles dags à la circulation de l'air?

J'ai vu quelques commentaires sur le google forum indiquant que le gcd sont enregistrés à l'intérieur d'un dépôt GIT et la même chose est synchronisé périodiquement à l'emplacement local dans le flux d'air de cluster.
Au sujet de cette approche, j'ai eu un couple de questions

Pouvons-nous maintenir séparés dag fichiers pour les environnements distincts? (les essais. de production) Comment traiter la restauration d'un ETL pour une version plus ancienne, dans le cas où la nouvelle version a un bug?

Toute l'aide ici est très apprécié. Laissez-moi savoir si vous avez besoin de plus de détails?

68voto

Alexis.Rolland Points 1578

Voici comment nous gérons pour notre équipe.

D'abord en termes de la convention d'affectation de noms, chacun de nos DAG nom de fichier correspond à la DAG Id à partir du contenu du groupe lui-même (y compris le groupe de disponibilité de la version). Ceci est utile car c'est finalement le groupe Id que vous voyez dans le flux d'Air de l'INTERFACE utilisateur afin que vous sachiez exactement lequel le fichier a été utilisé derrière chaque DAG.

Exemple pour un DAG comme ceci:

from airflow import DAG
from datetime import datetime, timedelta

default_args = {
  'owner': 'airflow',
  'depends_on_past': False,
  'start_date': datetime(2017,12,05,23,59),
  'email': ['me@mail.com'],
  'email_on_failure': True
}

dag = DAG(
  'my_nice_dag-v1.0.9', #update version whenever you change something
  default_args=default_args,
  schedule_interval="0,15,30,45 * * * *",
  dagrun_timeout=timedelta(hours=24),
  max_active_runs=1)
  [...]

Le nom du fichier DAG serait: my_nice_dag-v1.0.9.py

  • Tous nos DAG fichiers sont stockés dans un dépôt Git (entre autres choses)
  • Chaque fois qu'une demande de fusion est réalisée dans notre branche master, notre Intégration Continue pipeline commence une nouvelle construction et paquets de nos DAG fichiers dans un zip (nous utilisons Atlassian Bambou, mais il y a d'autres solutions comme Jenkins, Cercle CI, Travis...)
  • En Bambou, nous avons configuré un script de déploiement (shell) qui s'ouvre le paquet et place le groupe de fichiers sur le serveur de flux d'Air dans le /dags dossier.
  • Nous avons l'habitude de déployer les DAGs en DEV pour les tests, puis à l'UAT et enfin PROD. Le déploiement se fait avec le clic d'un bouton en Bambou de l'INTERFACE utilisateur grâce au script shell mentionnés ci-dessus.

Avantages

  1. Parce que vous avez compris le groupe de disponibilité de la version dans le nom de votre fichier, la version précédente de votre DAG fichier n'est pas écrasé dans le groupe dossier de sorte que vous pouvez facilement revenir à elle
  2. Lorsque votre nouveau DAG fichier est chargé dans l'Air, vous pouvez le reconnaître à l'INTERFACE utilisateur grâce au numéro de version.
  3. Parce que votre DAG nom de fichier = DAG Id vous pouvez même améliorer le script de déploiement par l'ajout de certains flux d'Air de la ligne de commande pour basculer automatiquement SUR votre nouveau DAGs une fois qu'ils sont déployés.
  4. Parce que chaque version de la DAGs est historicisée dans Git, on peut toujours retour aux versions précédentes si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X