Menguji DAG Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Sebelum men-deploy DAG ke produksi, Anda dapat mengeksekusi sub-perintah CLI Airflow untuk mengurai kode DAG dalam konteks yang sama dengan saat DAG dieksekusi.

Menguji DAG secara lokal dengan alat CLI Pengembangan Lokal Composer

Alat CLI Pengembangan Lokal Composer menyederhanakan pengembangan DAG Apache Airflow untuk Cloud Composer 2 dengan menjalankan lingkungan Airflow secara lokal. Lingkungan Airflow lokal ini menggunakan image versi Cloud Composer 2 tertentu.

Anda dapat mengembangkan dan menguji DAG menggunakan lingkungan Airflow lokal ini, lalu mentransfer DAG ke lingkungan Cloud Composer pengujian. Bagian selanjutnya dari panduan ini menjelaskan cara menguji DAG di lingkungan Cloud Composer pengujian.

Pengujian selama pembuatan DAG

Anda dapat menjalankan satu instance tugas secara lokal dan melihat output log. Dengan melihat output, Anda dapat memeriksa error sintaksis dan tugas. Pengujian secara lokal tidak memeriksa dependensi atau mengomunikasikan status ke database.

Sebaiknya Anda menempatkan DAG di folder data/test di lingkungan pengujian.

Membuat direktori pengujian

Di bucket lingkungan Anda, buat direktori pengujian dan salin DAG Anda ke direktori tersebut.

gcloud storage cp BUCKET_NAME/dags \
  BUCKET_NAME/data/test --recursive

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang terkait dengan lingkungan Cloud Composer Anda.

Contoh:

gcloud storage cp gs://us-central1-example-environment-a12bc345-bucket/dags \
  gs://us-central1-example-environment-a12bc345-bucket/data/test --recursive

Untuk mengetahui informasi selengkapnya tentang cara mengupload DAG, lihat Menambahkan dan memperbarui DAG.

Memeriksa error sintaksis

Untuk memeriksa kesalahan sintaksis dalam DAG yang Anda upload ke folder /data/test, masukkan perintah gcloud berikut:

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  dags list -- --subdir /home/airflow/gcs/data/test

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan.
  • ENVIRONMENT_LOCATION: region tempat lingkungan berada.

Memeriksa error tugas

Untuk memeriksa error khusus tugas di DAG yang Anda upload ke folder /data/test, jalankan perintah gcloud berikut:

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  DAG_ID TASK_ID \
  DAG_EXECUTION_DATE

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan.
  • ENVIRONMENT_LOCATION: region tempat lingkungan berada.
  • DAG_ID: ID DAG.
  • TASK_ID: ID tugas.
  • DAG_EXECUTION_DATE: tanggal eksekusi DAG. Tanggal ini digunakan untuk tujuan pembuatan template. Terlepas dari tanggal yang Anda tentukan di sini, DAG akan segera berjalan.

Contoh:

gcloud composer environments run \
  example-environment \
  --location us-central1 \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  hello_world print_date 2021-04-22

Memperbarui dan menguji DAG yang di-deploy

Untuk menguji update pada DAG di lingkungan pengujian:

  1. Salin DAG yang di-deploy yang ingin Anda perbarui ke data/test.
  2. Perbarui DAG.
  3. Uji DAG.
    1. Periksa error sintaksis.
    2. Periksa error khusus tugas.
  4. Pastikan DAG berhasil dijalankan.
  5. Nonaktifkan DAG di lingkungan pengujian Anda.
    1. Buka halaman Airflow UI > DAGs.
    2. Jika DAG yang Anda ubah berjalan terus-menerus, nonaktifkan DAG.
    3. Untuk mempercepat penyelesaian tugas yang belum selesai, klik tugas dan Tandai Berhasil.
  6. Deploy DAG ke lingkungan produksi Anda.
    1. Nonaktifkan DAG di lingkungan produksi Anda.
    2. Upload DAG yang telah diperbarui ke folder dags/ di lingkungan produksi Anda.

FAQ untuk menguji DAG

Bagaimana cara mengisolasi eksekusi DAG di lingkungan produksi dan pengujian saya?

Misalnya, Airflow memiliki repositori kode sumber global di folder dags/ yang digunakan bersama oleh semua proses DAG. Anda ingin memperbarui kode sumber dalam produksi atau melakukan pengujian tanpa mengganggu DAG yang sedang berjalan.

Airflow tidak menyediakan isolasi DAG yang kuat. Sebaiknya Anda mempertahankan lingkungan Cloud Composer produksi dan pengujian terpisah untuk mencegah DAG pengujian mengganggu DAG produksi.

Bagaimana cara menghindari gangguan DAG saat saya menjalankan uji integrasi dari berbagai cabang GitHub

Gunakan nama tugas yang unik untuk mencegah gangguan. Misalnya, Anda dapat menambahkan awalan ID tugas dengan nama cabang.

Apa praktik terbaik untuk pengujian integrasi dengan Airflow?

Sebaiknya gunakan lingkungan khusus untuk pengujian integrasi dengan Airflow. Salah satu cara untuk menandakan keberhasilan DAG berjalan adalah dengan menulis ke file dalam folder Cloud Storage, lalu memeriksa konten dalam kasus uji integrasi Anda sendiri.

Bagaimana cara berkolaborasi secara efisien dengan kontributor DAG lainnya?

Setiap kontributor dapat memiliki subdirektori di folder data/ untuk pengembangan.

DAG yang ditambahkan ke folder data/ tidak diambil secara otomatis oleh penjadwal Airflow atau server web

Kontributor DAG dapat membuat run DAG manual menggunakan perintah gcloud composer environments run dan sub-perintah test dengan flag --subdir untuk menentukan direktori pengembangan kontributor.

Contoh:

gcloud composer environments run test-environment-name \
  tasks test -- dag-id task-id execution-date \
  --subdir /home/airflow/gcs/data/alice_dev

Bagaimana cara menjaga agar lingkungan deployment dan produksi saya tetap disinkronkan?

Untuk mengelola akses:

  • Untuk autentikasi, gunakan akun layanan.

  • Untuk kontrol akses, gunakan peran dan izin Identity and Access Management serta Cloud Composer.

Untuk men-deploy dari pengembangan ke produksi:

  • Pastikan konfigurasi yang konsisten, seperti variabel lingkungan dan paket PyPI.

  • Pastikan argumen DAG konsisten. Untuk menghindari hard-coding, sebaiknya Anda menggunakan makro dan variabel Airflow.

    Contoh:

    gcloud composer environments run test-environment-name \
      variables set -- DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
    

Langkah berikutnya