ชวนอ่านบทความ What we are missing in data CI/CD pipelines? ของ Ivan

เรื่องนี้เป็นเรื่องที่น่าสนใจเวลาที่เราทำ CI/CD ในโลกของ data แล้วบทความนี้ก็ชี้ประเด็นว่ามันมีอะไรที่หายไปในเครื่องมือที่ใช้ทำ CI/CD บ้าง

Incremental build

อย่างแรกก็คือเรื่อง incremental build ถ้าใครที่ใช้ dbt น่าจะเข้าใจ pain point แถว ๆ นี้อยู่ เช่น

  • เวลาที่เรามีโมเดลเยอะ ๆ แล้วเนี่ย ตอนที่เราเอาไป deploy โดยการสั่ง dbt run -t prod เนี่ย มันใช้เวลาค่อนข้างนาน (มาก) แล้วก็จะยิ่งนานมากขึ้นเรื่อย ๆ
  • ถ้าเราแก้แค่บางโมเดล เราก็อาจจะไม่ต้องรันซ้ำก็ได้ใน CI/CD pipeline แต่เราจะทำอย่างไรให้ pipeline ของเรารู้ว่าโมเดลไหนแก้ โมเดลไหนไม่ได้แก้?

บทความเค้าก็เสนอวิธีทำ hashcode กับ model นั้นไว้ (ดูจาก content ของไฟล์) แล้วตอนที่เรา deploy เราก็เช็ค hashcode นั้น ๆ ก็จะทำให้เราสามารถเลือกเฉพาะโมเดลที่มีการแก้ไข เอามา deploy ได้

แต่นั่นแหละ… เราก็ต้องทำเพิ่มจากเครื่องมือ CI/CD ปกติอยู่ดี

Sync of data across different environments

ถ้าเป็นโลกของ software ก็จะไม่ค่อยมีปัญหาเท่าไหร่ เพราะว่าเราสามารถทำให้ environment อย่าง development หรือ production เหมือนกันเกือบ 100% ได้ โดยไม่ยากมาก

แต่! ในโลกของข้อมูลเนี่ย… ข้อมูลในแต่ละ environment นี่มันไม่เหมือนกันเลย :joy: แล้วก็ data warehouse แต่ละเจ้าก็มีวิธีที่แตกต่างกันโดยสิ้นเชิง ถ้าเป็น Redshift เค้าบอกว่าก็ต้องสร้างอีก 1 cluster :money_with_wings:

ถ้าเป็น Snowflake เค้าก็มีสิ่งที่เรียกว่า zero-copy clone อยู่

ถ้ามีเครื่องมือ CI/CD ตัวไหนที่สามารถทำให้ชีวิตแถว ๆ นี้ง่ายขึ้นก็น่าจะดี

Ability to check results of data tests during CI/CD

ถ้าเป็นการพัฒนา software เวลาที่ test พัง เราก็จะเจอ root cause แล้วก็แก้ได้เลย (โดยส่วนใหญ่) แต่ว่าถ้าเป็น data test เนี่ย ตอนที่ test พัง เราเจอแหละ root cause แต่เราจะดูแค่นั้นไม่ได้ เราต้องไปดูเพิ่มด้วยว่าอะไรทำให้ data เป็นมาแบบนั้น :face_holding_back_tears: ก็จะมีความยากกว่า

แถว ๆ นี้ก็มีเครื่องมืออย่าง dbt tests หรือ Great Expectations เข้ามาช่วย ซึ่งอย่างไรก็ดี ถ้าเครื่องมือพวก CI/CD มี adapter ให้ต่อกับของพวกนี้ก็จะดี


จากที่อ่านมาเชื่อว่าในอนาคตคงจะมีเครื่องมือที่เข้ามาช่วยแก้ปัญหาพวกนี้แหละ ที่เป็น standard มากขึ้น โลกของ software เกิดมานานมากแล้ว ดูจากเทรนด์แล้ว เดี๋ยวโลกของ data ก็ค่อย ๆ ตามไป ที่เห็นได้ชัด ๆ เลยคือแนวคิด software-defined assets ที่ Dagster ทำอยู่ :+1: