Airflow 2.0 มีอะไรใหม่บ้าง มาดูกัน 🤩

Apache Airflow 2.0

Airflow เวอร์ชั่น 2.0 เป็นเวอร์ชั่นที่มีการอัพเดทกันแบบยิ่งใหญ่เลยทีเดียว มีการพัฒนาในหลายๆ ส่วนเลย ผมขอหยิบเอา 3 ฟีเจอร์ใหม่ที่ผมชอบมาก มาสรุปให้อ่านกัน

1. High Availability for Schedulers

เวอร์ชั่นก่อนหน้า 2.0 หลายๆ คนน่าอาจจะมีความเจ็บปวดที่ตัว Scheduler เป็น Single Point of Failure มาบ้าง ตาม Architecture ตามรูปด้านล่าง

Current Airflow Architecture

ในเวอร์ชั่น 2.0 เราสามารถมี Scheduler ได้หลายตัวล่ะ 😎

2. Stable REST API

ฟีเจอร์นี้เรียกได้ว่าน่าจะเป็นจุดเด่นของเวอร์ชั่นนี้เลยก็ว่าได้ มีส่วน CRUD กันทั้ง Airflow เลย จากเดิมที่เป็น Experimental REST API ที่เหมือนทำขึ้นมาเล่นๆ ในเวอร์ชั่นนี้เราจะได้ใช้กันจริงจังล่ะ เนื่องจากมันมีส่วน CRUD ทำให้จริงๆ แล้วเราสามารถเอา Airflow ไปสร้างเป็น Application ได้เลยนะ ซึ่งผมคิดว่าน่าจะมีเครื่องมืออีกหลายตัวเกิดขึ้นเลยแหละ

อีกอย่างคือตัว Documentation ที่เรียกได้ว่าเปลี่ยนไปแบบราวฟ้ากับเหวเลยก็ว่าได้ ลองดูรูปด้านล่างเปรียบเทียบ

Airflow’s Experimental REST API Documentation

ส่วนของใหม่หน้าตาจะประมาณนี้ (ใช้ ReDoc) 🤩

Airflow’s Stable REST API Documentation

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 จ้า

เตรียมอัพเกรดกันไว้เลย 😉

--

--

Kan Ouivirach
PyCon Thailand — Host of PyConAPAC 2021

Data Craftsman. Passionate in software engineering, data engineering, and data science. ♥