Airflow คืออะไรเอ่ย

Tools ยอดนิยมของชาว Data Engineers
ที่เหล่า Data Scientists ก็สามารถนำมาใช้ในงานได้
…. “มันคือ Airflow ยังไงล่ะ !!” ☁

🚀 เจ้า Airflow คืออะไรเอ่ย

จินตนาการว่าเราต้องตั้งเวลาให้การทำงานของเราหลายไฟล์
คอยทำ Tasks หลายๆอย่างให้มันอัตโนมัติ
โดยที่แต่ละ Task มีความเกี่ยวเนื่องกัน
และต้องการเช็คด้วยเพื่อให้แน่ใจว่าทำงานสัมพันธ์กัน
หรือหากเกิดจุดบกพร่อง ก็สามารถเตือนเราได้ทันที
แถมยังสามารถติดตามย้อนดูได้ว่าทำไม Task ไม่ยอมทำงาน
แค่คิดก็ปวดหัวแล้วล่ะคร้าบ
นี่ขนาดยังไม่เริ่มนะ

ใช่แล้ว Airflow มาช่วยเราจัดการเรื่องวุ่นวายงี้ไงล่ะ
ไม่ต้องคอยตั้งเวลา Cron job เอง
แล้วมานั่งกะเวลาว่าต้องรอ Task 1 เสร็จก่อนนะ
แล้วรอเวลา ซักหน่อยละกัน ไปอ่าน Task 1 ว่าเสร็จแล้วจริงๆ
ค่อยไปตั้งให้ Task 2 ทำงานต่อ !
ไม่ต้องปวดหัวมานั่งเขียน Log เองทั้งหมด
เพราะ Airflow ช่วย Track ให้หมดเลย !!
แทนที่จะปวดหัวกับการวาง Manage Flow
เราก็มาปวดหัวกับการใช้งาน Airflow แทน
เดี๋ยวววว ! 🤭

✈ Airflow บินไปทุกที่เลย
  • การทำการทดลอง เช่นในการทำ Machine Learning Pipeline
  • ทำเรื่องการวิเคราะห์ข้อมูล
  • ทำเรื่องของ ETL Data Warehouse
  • Pipeline ของการทำ ML Training
  • Pipeline ของการรทำ ML Prediction
  • การ Automate งานในที่ทำงาน
  • และอื่นๆอีกมากมายที่เป็นเรื่องที่ทำซ้ำๆ

👩‍🏫 Concept พื้นฐานของ Airflow
  • Task: เหมือนหน่วยของการทำงาน
    ซึ่งหน่วยย่อยๆนี้แหละที่เราจะ Automate พวกเค้า
  • Task instance: ไว้อธิบายสถานะของ Task
    ว่า Task แต่ละตัวกำลังทำอะไรอยู่
    เช่น “running”, “success”,
    “failed”, หรือ “skipped”
  • DAG: ย่อมาจาก Direct Acyclic Graph
    เป็น Set ของแต่ Tasks ต่างๆ
    โดยมีลำดับในการทำงานชัดเจน
    ตั้งแต่เริ่มต้น ไปจนถึงจุดสิ้นสุด
  • DAG run: ก็คือการสั่ง DAG นั้นๆให้ทำงานนั่นแหละ !

🍣 Airflow กับ Idempotency

เมื่อเราพูดถึงคำนี้ Idempotency
นั่นหมายถึงคุณสมบัติหนึ่งที่ดีของ ETL
คือให้ผลลัพธ์ที่เหมือนเดิม ไม่ว่าจะ Run ใหม่กี่รอบ
หรือเรียกง่ายๆว่า Reproducible คือการทำซ้ำได้
ซึ่งหากเรานำไปใช้ในการทำ ML
เราก็คงอยากให้ Input Feature เดิม
ได้ผลลัพธ์ Result แบบเดิมเนาะ
ไม่ใช่ Run กี่รอบ Model ทำนายเพี้ยนตลอดเลย
เพราะ Feature Input เพี้ยนตั้งแต่ต้น

👩‍🔬 Airflow กับ Commponents

Airflow มี 4 Commponents หลักๆเลยที่ต้องทราบกัน

  1. Web server:
    ส่วนของหน้าตา UI ให้เราใช้งานง่ายๆ
    สร้างโดย Flask apps
    ก็เพราะ Airflow Based on Python อาเนาะ
    ไว้สามารถ Track การทำงาน Tasks ได้
    รวมถึงอ่าน Log หรือสั่ง Run Taks ใหม่ก็ยังได้
    (เรียกว่า แก้ On-Production กันไปเลย)
  1. Scheduler
    หน้าที่หลักๆเลยคือเรื่อง กำหนดการทำงานของแต่ละ Task
    ซึ่งสามารถทำงานผ่าน Multithreaded Python
    อยากให้ Run เมื่อไหร เวลาไหน อย่างไร ได้หมดสดชื่นน
  1. Executor
    เหมือน Trigger ที่สั่งการให้ Task ทำงาน
    แล้วงานต้องเสร็จด้วยนะ เออ

และ
..

  1. Metadata database
    ตามชื่อเลย เป็นที่เก็บข้อมูลการทำงาน Airflow
    เพื่อให้แต่ละ Component สามารถคุยงานกันได้
    ซึ่ง Component ต่างๆสามารถ Read/Write ได้

Airflow นั้นเริ่มต้นจากบริษัท Airbnb
แล้วเริ่มปล่อย Open-sourced ตอนปี 2016
งานหลักๆเลยคือนำมาใช้ทำ ETL
งานของ DS เองก็มีการทำ ETL ในส่วนของ Features
เพื่อใช้ในการ Traning Model
และส่วนของเตรียมเพื่อใช้ Prediction ด้วยทั้งคู่
รวมถึงการทำ Job อื่นๆอีกมากมาย

จะเห็นว่า Airflow จริงๆแล้วก็เป็น
Data orchestration tools
Tools ที่ช่วยจัดการเรื่องของ Automation
ทั้งเรื่องการทำ Data Pipeline
ตลอดจนช่วยเราติดตามผลการทำงานของ Pipeline
รวมถึงหากการทำงานล้มเหลวก็ยังทำให้ใหม่ด้วย
ดังนั้นแล้ว Airflow เป็น Tools ที่ดีมากๆเลยตัวนึง
ที่เหมาะแก่การเรียนรู้ และประยุกต์ใช้กับงานให้เหมาะสม

ทั้งนี้ในปัจจุบันยังมีอีกหลาย Tools ที่คล้ายๆกัน
มาช่วยในการทำงานในปัจจุบันของ สาย Data ให้ง่ายขึ้น
เช่น Luigi หรือ Dagster
เพื่อนๆเลือกใช้ Tools ให้เหมาะกับงานที่ตัวเองทำกันนะคร้าบ
No one fit all
เพราะไม่มี Tool ตัวไหนที่เหมาะกับทุกสถานการณ์
ดังนั้น Tool ใหม่ๆ จึงเกิดขึ้นมาเป็นดอกเห็ดเลย 😇 lol

Published by BigData RPG

I'm just Ordinary Data Scientist who love in A.I., Machine learning, Deep Learning, and Business.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: