Airflow 2.0 มีอะไรใหม่บ้าง มาดูกัน 🤩
Airflow เวอร์ชั่น 2.0 เป็นเวอร์ชั่นที่มีการอัพเดทกันแบบยิ่งใหญ่เลยทีเดียว มีการพัฒนาในหลายๆ ส่วนเลย ผมขอหยิบเอา 3 ฟีเจอร์ใหม่ที่ผมชอบมาก มาสรุปให้อ่านกัน
1. High Availability for Schedulers
เวอร์ชั่นก่อนหน้า 2.0 หลายๆ คนน่าอาจจะมีความเจ็บปวดที่ตัว Scheduler เป็น Single Point of Failure มาบ้าง ตาม Architecture ตามรูปด้านล่าง
ในเวอร์ชั่น 2.0 เราสามารถมี Scheduler ได้หลายตัวล่ะ 😎
2. Stable REST API
ฟีเจอร์นี้เรียกได้ว่าน่าจะเป็นจุดเด่นของเวอร์ชั่นนี้เลยก็ว่าได้ มีส่วน CRUD กันทั้ง Airflow เลย จากเดิมที่เป็น Experimental REST API ที่เหมือนทำขึ้นมาเล่นๆ ในเวอร์ชั่นนี้เราจะได้ใช้กันจริงจังล่ะ เนื่องจากมันมีส่วน CRUD ทำให้จริงๆ แล้วเราสามารถเอา Airflow ไปสร้างเป็น Application ได้เลยนะ ซึ่งผมคิดว่าน่าจะมีเครื่องมืออีกหลายตัวเกิดขึ้นเลยแหละ
อีกอย่างคือตัว Documentation ที่เรียกได้ว่าเปลี่ยนไปแบบราวฟ้ากับเหวเลยก็ว่าได้ ลองดูรูปด้านล่างเปรียบเทียบ
ส่วนของใหม่หน้าตาจะประมาณนี้ (ใช้ ReDoc) 🤩
3. Functional DAGS หรือ TaskFlow API
เป็นฟีเจอร์ที่ทำให้เราสร้าง DAG ขึ้นมาง่ายกว่าเดิม โดยการเขียน Task ให้เป็นฟังก์ชั่น พอได้ Output ออกมาก็เอาไปเป็น Input ของอีกฟังก์ชั่นหนึ่ง อารมณ์จะประมาณโค้ดบางส่วนด้านล่างนี้
@dag(...)
def etl():
@task(...)
def extract():
...
@task(...)
def transform():
... @task(...)
def load():
... extracted = extract()
transformed = transform(extracted)
load(transformed)
dag = etl()
ดู Simple & Clean กว่าของเดิมเยอะมากกกกก 😍 เปลี่ยนไปเขียนเป็นฟังก์ชั่นแบบนี้ ผมคิดว่าจะทำให้เราทดสอบง่าย แล้วก็เขียนเทสขึ้นด้วยนะ แจ่มจริงๆ
โค้ดเต็มๆ ดูได้ที่ลิ้งค์ด้านล่างนี้นะ 👇
ฟีเจอร์นี้ผมว่ามันเหมือนการสร้าง DAG ใน Dagster มากเลย ฮ่าๆ ดีแล้วล่ะ อะไรดีเราก็ควรเอาเยี่ยงอย่าง 🤪
ส่วนฟีเจอร์อื่นๆ ก็มีประมาณนี้
- Official production-ready Docker image — ควรมีมานานแล้วววว
- มีคอนเซปของ Task Groups มาเพื่อแก้ปัญหา SubDAGs (ที่อาจจะเกิด Deadlock ได้) คือเป็นการกรุ๊ป Task หลายๆ Task เข้าไว้ด้วยกันแบบ Visually ทีนี้เราก็ไม่ต้องกังวลเรื่อง Deadlock ล่ะ ตัว DAG เราก็จะมีหน้าตาที่ดูเป็นระเบียบมากขึ้น
- มี Smart Sensor มาช่วยในกรณีที่เรามี Sensor เยอะๆ แล้วมันอาจจะไปบล็อกการทำงานของ Task ตัวอื่นได้ ซึ่งตัว Smart Sensor นี้มันจะให้เรา Register ตัว Sensor ต่างๆ เสร็จแล้วมันจะไปทำ Batch ให้เรา
- มีการพัฒนาเรื่อง Performance อีกเพียบใน Airflow Core
สุดท้ายมีฟีเจอร์เล็กๆ ที่ผมคิดว่ามัน Impact มากกกกกกก ยิ่งกว่าสิ่งอื่นใด คือ..
Auto-refresh! ไม่ต้องเมื่อยมือแล้ววว (โว้ย) 😂
ถ้าใครอยากอ่านรายละเอียดเกี่ยวกับเวอร์ชั่น 2.0 เต็มๆ ไปตามอ่านได้ที่ Airflow 2.0 — Planning จ้า
เตรียมอัพเกรดกันไว้เลย 😉