Logo

Roadmaps สำหรับเริ่มศึกษา Apache Airflow ฉบับ Zero to โคตร Advance

avatar
Wuttichai Kaewlomsap@wuttichaihung
apache-airflow-roadmaps

จากที่ผมศึกษา Apache Airflow มาประมาณนึง ย้อนกลับช่วงเริ่มต้น (หลายปีแล้ว) setup เองผิดๆถูกๆ, คอร์สสอนแทบยังไม่มี, อ่าน documents ก็ค่อยไม่เข้าใจ แต่ก็ไปเจอคอร์สของ Marc Lamberti ใน Udemy ที่พาผ่านก้าวแรกไปได้

ตัดมาที่ตอนนี้ก็เดินทางมาไกลประมาณนึงและใช้ในงานอยู่บ่อยๆ เลยจะขอแชร์แนวทางในการศึกษาว่ามีหัวข้อประมาณไหนบ้าง ในแต่ละระดับ Level มีอะไร ส่วนนี้ก็จะแบ่งเป็นระดับ Basic, Advance และโคตร Advance ใครอยู่ใน Level ไหนก็พิมบอกกันได้

Check Point 0 : ก่อนจะไป Basic Apache Airflow ต้องมีพื้นฐาน Python ก่อน เพราะ Airflow เป็น Code-based ที่จะจัดการ data pipeline ด้วย code อาจจะดูไปถึงเรื่อง OOP, decorator, context manager เลย คือถ้าเขียนได้แล้วจะสนุกมาก เช่นอยากได้ 10 pipelines ก็ for loop ได้เลย เห็นภาพมั้ย

Level: Basic

  • เริ่ม Setup กันก่อน ยากสุดของเรื่องแล้วโดยเฉพาะมือใหม่ (เปิดมาก็ยากสุดเลยหรอพรี่) มันมีหลายท่า Setup นะ สรุปสั้นๆ แนะนำใช้ github codespaces แล้วสร้างด้วย docker-compose สำหรับใช้ในการเรียนรู้ (มี doc ที่เคยสอนคอร์สเรียน data-ai-bootcamp แปะไว้ตอนท้าย)

  • ทำความคุ้นเคย Web UI: หลังจากที่ Setup กันมาเสร็จเรียบร้อย ลองเข้าไปทำความคุ้นเคยกับ Web UI เพื่อดูว่ามีอะไรบ้าง DAG, Task, Grid View, Log, Variable, Connection, การจัดการสิทธิ์ User, Roles

  • ทำความเข้าใจ Architecture คร่าวๆ webserver, scheduler, executor, worker, database backend, dags folder แต่ละตัวทำอะไรจังหวะไหน แล้วดูด้วยว่า apache airflow ใช้สำหรับงานแบบไหนและไม่เหมาะกับอะไร

  • Syntax DAG files: ดูการเขียน Code จะสร้าง data pipeline 1 อันต้องเขียนส่วนไหนบ้าง DAG, Task, Dependencies ยังไง

  • ฝึกเขียน DAG & Task: หลักๆคือ DAG ปรับอะไรได้บ้าง ตั้งเวลาทำงานยังไง, Task หลักๆดูพวก PythonOperator, BaseOperator และ SensorOperator เป็นตัน

Check Point 1: ถ้าถึงจุดนี้ เราจะสามารถจัดการ automate workflow ทั่วๆไปได้แล้ว ซึ่งไม่ธรรมดาแล้วนะ หลายคนอาจจะพอเท่านี้ก็ได้ เก่งมากๆแล้ว ถ้าจะไปต่อถัดไปจะ Advance ถึงจุดที่ใช้งานจริงในองค์กรเลย

Level: Advance

  • Manage workflow: ถ้ามาใช้ในองค์กร งานน่าจะมีเยอะมากๆ จะมีเงื่อนไขตามมาเพียบ เช่นถ้าเกิดแบบนี้จะทำ task1 ถ้าอีกแบบไปทำ task2 หรือ 2 tasks นี้ต้องทำขนานกันไป จัดระเบียบ task เป็น taskgroup รวมไปถึงเรื่อง XCOM ด้วย
  • Troubleshooting: ลองฝึกเขียน dag เองบ่อยๆ แล้วลองแก้ปัญหาดู เช่น เวลามีบัคหรือ pipeline พังกลางทาง เราต้องเข้าไปเช็ค log และ rerun เพื่อแก้ปัญหาได้ ฝึกไว้เยอะ มีประโยชน์มากๆ
  • Variable: เราสามารถตั้ง variable บนหน้า UI ได้ เช่นอะไรที่เป็น common ใช้กันในหลายๆ file ก็ปรับบน Web ที่เดียว (อันนี้ไม่ยาก) พวกนี้ช่วยเราจัดการ Secret ได้อีกด้วยนะ
  • Connection: เวลาเป็นระดับองค์กร มักจะต้องเชื่อมต่อระบบอื่นๆเยอะมาก เช่น S3, Database อื่นๆ ซึ่ง Airflow เราสามารถ Set Connection ไว้ได้ ไม่ต้องมาใส่ url, username, password ใน Code เวลาจะปรับก็แก้ที่เดียว ไม่ต้องไปแก้แต่ละ dag files และเวลาใช้งานก็ใช้ผ่าน Operator และ Hook ได้เลย (Hook คืออะไร? ดูเพิ่มด้วย)
  • Retry & Notify: เวลาระบบมีปัญหาอาจจะให้มัน retry แก้ด้วยตัวเองก่อน ถ้าไม่ได้ก็แจ้งเตือนคนดูแลให้มาแก้ไขได้ทันเวลา ไม่ต้องนั่งเฝ้าตลอด ดูการตั้งค่า Retry และการ Notify ก็ปรับให้ใช้กับเครื่องมือที่เราใช้อยู่ จะ Slack, msteam, telegram, email ก็ลองดูๆ
  • Usecase & Best Practice: ลองศึกษา usecase การนำ airflow ไปใช้งาน เช่น ETL รูปแบบต่างๆ, MLOps, GenAI จะเห็นภาพทีหลากหลายขึ้น รวมถึงการ config airflow แต่ละตัวแปร เช่น Executor ก็มีหลาย mode LocalExecutor KubernetesExecutor LocalKubernetesExecutor แต่ละอันก็ setup ต่างกัน

Check Point 2: ถึงจุดนี้จะเป็นระดับที่ใช้ Airflow ค่อนข้าง Advance แล้ว ใช้ทำงานในองค์กรสบายๆ ถ้าถัดไปจะสำหรับคนที่อยากจะเชี่ยวชาญ Airflow ตัวจริง โคตร Advance

Level: โคตร Advance

  • Optimize Performance: จุดนี้งานเรามีเยอะมากกก (ก ล้านตัว) เราต้องจัดลำดับความสำคัญของงานแต่ละ Task แต่ละ Pipeline ถ้ามี Resource จำกัด จะรันได้กี่ concurrent, ตัวไหนจะได้ทำก่อน ลองดู parallelism, max_active_tasks_per_dag, max_active_runs_per_dag, pooling ดูการตั้งในแต่ละ Level ทั้ง Installation, DAG และ Task

  • Config: ลองดูไฟล์ airflow.cfg ปรับตัวไหนส่งผลอย่างไร, ไปดู Source Code ของแต่ละ Hook, Operator สวมบทเป็นคนเขียน Airflow เลย คือถ้าจุดไหนไม่เหมาะกับงานเราก็ปรับเป็น custom ได้

  • Custom Hooks & Operators: บางอย่างระบบเรามีความเฉพาะทาง ที่จะต้อง Custom จากเดิมที่มีอยู่ Airflow ก็รองรับจุดนี้ เราก็ไปเขียนให้คนอื่นๆมาใช้ได้

  • การจัดการสิทธิ์: Roles, Users ถึงจุดนี้ระบบ pipeline อาจจะไม่ได้มีแค่เราหรือทีมเรา ไม่ใช่ใครจะเข้ามาทำอะไรก็ได้หรือใช้ Account เดียวร่วมกันไม่ได้แล้ว เราต้องคุมการใช้งานของแต่ละคน นั้นคือการสร้าง User แยก และแต่ละ User จะมีสิทธิ์ที่แตกต่างกันไป

  • API: ตัว Airflow เองสามารถคุยกับระบบอื่นๆผ่าน API ได้ แปลว่าระบบอื่นๆสามารถมาสั่งงานระบบเราได้เช่นกัน หรือจะจัดการ automate ระบบต่างๆ

เนื้อหาก็จะประมาณนี้ ซึ่งก็มีอีกหลายอย่างที่ไม่ได้กล่าวถึง แล้วแต่ละคนอาจจะเจอหน้างานที่ต่างกัน อาจจะแชร์เป็น usecase หรือพูดคุย discuss กันได้ครับ

Ref:

avatar

Wuttichai Kaewlomsap

Sr. Data Engineer