รีวิว Airflow 2.0.1 ฉบับจับมือเล่น + docker-compose เอาไปรันเล่นกัน

Pratya Thanwatthanakit
3 min readFeb 23, 2021

--

สวัสดีครับ จากที่ Airflow ได้มีการยกเครื่องใหม่แบบ Major Change พึ่งได้มีจังหวะ เข้ามาลองเล่นดู ว่าเราจะอยู่กับปัจจุบันหรือไปต่อดี บทความนี้ผมได้รวบรวมการเริ่มใช้งานเบื้องต้น เผื่อว่าใครสนใจอยากจะลองเล่นไปด้วยกัน ลุยยย

เริ่มต้นด้วยการจัดการกับ docker resources ก่อนเลยครับ ที่แนะนำ คือ
CPUs 4, Memory 4 GB
ต่ำกว่านี้ Start ในส่วน Web Server อาจจะไม่ขึ้นครับ บอกเลยว่า Version นี้เปิดตัวมาก็ซด resources แบบเอาเรื่อง
** รันแล้วระวังเครื่องบินนะเอออ

ถัดมาสร้าง workspace ที่เราจะใช้งาน
แล้วทำการสร้าง folder ตามด้านล่าง

mkdir ./dags ./logs ./plugins

Copy code ด้านล่าง ตั้งชื่อ ‘docker-compose.yaml’
ไปไว้ที่ root workspace เลยครับ

config ใส่ worker แค่ 1 ลดการใช้ resource

layout file ควรจะได้แบบนี้

** หรือถ้าขี้เกียจก็ clone git : https://github.com/l0ginp/airflow-2.0

จากนั้นก็เริ่ม run ได้เลย !!

docker-compose up -d

รอซัก 1 นาที จนกว่า start ครบทุก service นานสุดก็จะเป็น airflow-webserver (จะอยู่หรือไปก็ตัวนี้แหละ)

ลองเช็คโดย docker ps ถ้า Status เป็น Healthy ทั้งหมดก็แสดงว่าพร้อมใช้งาน !!

เข้าใช้งานผ่าน http://localhost:8080/ หรือ http://127.0.0.1:8080/
ก็เอาตามที่สบายใจ .. XD

เมื่อเข้ามาแล้วจะพบกับหน้า Sign In !!
Sign In โดยใช้ User : airflow , Password : airflow

** ใน version นี้ enable auth แบบ FAB-based web UI จะเป็น default แล้วจ้า ซึ่งเป็นข้อดีมากๆ เพราะใน version 1.x การเปิดใช้งานตัวนี้ จะค่อนข้างวุ่นวาย ทั้งในการ config และการที่เข้าไปใช้ airflow cli เพื่อ init admin user ขึ้นมา

UI มาแบบ minimal

2.0 จริง Icon ต้องหมุนได้ **ระวังของลอกเลียนแบบ

หมุนๆๆๆ

UI ข้างในจะคล้ายๆ กับ version 1.x แบบที่ config FAB-based web UI

ไฮไลท์ที่น่าสนใจ เท่าที่ไล่ๆดูใน web ก็มีดังนี้
- icon, theme ที่ถูกยกเครื่องไป จัดว่าสวยดูดี
- ระบบ tags , filter by tags (เดิมมีอยู่ใน 1.x อยู่แล้วแต่ต้อง config เพิ่ม)

tags ติดได้มากกว่า 1 tags
filter tags เมื่อ project เริ่มเยอะ ตัวนี้จะเป็นตัวช่วยได้อย่างดีเลยดีเดียว
เพิ่ม tags ง่ายๆ แค่ 1 line code
  • UI Timezone เอาไว้แก้ อาการปวดหัว เพราะ default เป็น UTC (เดิมมีอยู่ใน 1.x อยู่แล้วแต่ต้อง config เพิ่ม)
  • filter ต่าง เช่น DAGs Status (เดิมมีอยู่ใน 1.x อยู่แล้วแต่ต้อง config เพิ่ม)
  • Role, User Permission (เดิมมีอยู่ใน 1.x อยู่แล้วแต่ต้อง config เพิ่ม)
    สามารถคุมได้ในระดับ dags
  • Auto Refresh หรือ Refresh Element ยังทำได้แค่ในส่วน Graph View เท่านั้น หน้าอื่นก็ refresh page ไปเหมือนเดิม (หวังว่าจะทำอันอื่นต่อนะ)
  • Task Group ดูรายละเอียดง่ายกว่า Sub Dag (ไม่ต้องซูม แค่คลิกก็ดูไส้ในได้เลย / ใส่ action แบบยกกลุ่มเช่น clear, mark sucess, mark fail)
  • การเขียนโค้ดแบบใหม่ คือ TaskFlow API ซึ่งโค้ดเก่าก็ยังรันได้ปกติไม่มีปัญหา ก็ถือว่าโอเคใช้ได้ครับ
  • Example Code ที่เยอะขึ้นเอาไว้เป็นไอเดียสำหรับ usecase ใหม่ๆที่เข้ามา

สรุปคร่าวๆ ประมาณนี้ครับ โดยส่วนตัวคิดว่าใช้ v.1.x แบบ config webservie auth ยังใช้ได้ใกล้เคียงกันอยู่ และเรื่องที่ airflow webserver ค่อนข้างกิน resource เครื่องค่อนข้างมาก อาจจะต้องรอพัฒนาไปอีกซักพักนึงครับถึงตัดสินใจใช้ใน version นี้ หรือมี usecase ที่จำเป็นต้องใช้จริงๆ ที่ไม่มีใน 1.x เช่น Smart Sensors

--

--