Airflow dikembangkan oleh Airbnb pada tahun 2014 dan sekarang dikelola oleh komunitas Apache. Airflow sangat cocok digunakan dalam dunia Data Engineering, Data Pipeline, dan orkestrasi workflow modern.

Pengetahuan Dasar Airflow

Apache Airflow adalah sebuah platform open-source untuk membuat, menjadwalkan, dan memantau alur kerja (manajeman workflow) dalam bentuk kode (python).

Workflow yang dimaksud diatas adalah DAG (Directed Acyclic Graph).

DAG berisi alur kumpulan tugas-tugas (tasks) yang terputus (tidak siklus), seperti ilustrasi gambar dibawah (setiap node mewakili task):

image.png

Task adalah unit kerja terkecil dalam sebuah workflow (DAG). Di dalam task inilah kita menjalankan proses-proses kerja yang spesifik, contohnya:

Scheduler, Executor, Worker dan Web UI

Beberapa hal penting lainnya yang perlu di ketahui di dalam airflow, yaitu: Scheduler, Executor, Worker dan Web UI.

Scheduler adalah komponen utama dalam Airflow yang bertanggung jawab untuk membaca metadata DAG dari database dan menentukan kapan task harus dijalankan berdasarkan jadwal (schedule interval) yang telah ditentukan.

Scheduler akan secara berkala memeriksa DAG yang ada, mengevaluasi dependensi antar task, dan memutuskan task mana yang siap untuk dijalankan. Setelah task dianggap siap, scheduler akan menyerahkannya ke executor untuk diproses lebih lanjut.

Executor berperan sebagai jembatan antara scheduler dan sistem eksekusi task. Executor menerima perintah dari scheduler untuk menjalankan task dan kemudian mendistribusikannya ke worker.

Airflow mendukung beberapa jenis executor, seperti SequentialExecutor untuk eksekusi lokal secara berurutan, LocalExecutor untuk eksekusi paralel di mesin lokal, hingga CeleryExecutor dan KubernetesExecutor untuk distribusi skala besar di banyak worker. Pemilihan executor sangat mempengaruhi skalabilitas dan performa dari sistem Airflow.

Worker adalah proses yang menjalankan task sebenarnya. Worker menerima instruksi dari executor untuk menjalankan task tertentu, lalu mengeksekusi kode Python sesuai dengan definisi task dalam DAG. Dalam arsitektur seperti CeleryExecutor, worker bisa tersebar di berbagai mesin sehingga memungkinkan skalabilitas horizontal dan efisiensi dalam menjalankan banyak task secara paralel. Setelah task selesai, hasil eksekusi akan dilaporkan kembali ke metadata database.