ในวงการ Data Science คุณอาจจะเคยเห็นคำว่า DataOps ผ่านตามาบ้าง ซึ่ง DataOps เข้ามาช่วยการทำงานด้าน Data Science ให้ราบรื่นและประสบความสำเร็จมากขึ้น
ในบทความนี้ เราจะมารู้จักกับ DataOps กันว่าคืออะไร มีส่วนช่วยในกระบวนการ Data Science อย่างไร มี DataOps แล้วมีประโยชน์อย่างไร ใครในทีมจะได้ประโยชน์ และใครมีส่วนร่วมในการทำให้เกิด DataOps บ้าง
กระบวนการ Data Science ทำอะไรบ้าง
ก่อนจะรู้จักกับ DataOps มารู้จักกันก่อนว่ากระบวนการ Data Science ต้องทำอะไรบ้าง
Data Science คือการเอาข้อมูลมาสร้างให้เกิดคุณค่าขึ้นมาได้ คุณค่าในที่นี้ไม่จำกัดอยู่แค่ด้านเงิน หรือการสร้างรายได้โดยนำข้อมูลมาขาย แต่อาจจะเป็นการสร้าง value โดยการเพิ่มจำนวนลูกค้า ดึงดูดลูกค้ามากขึ้น ซึ่ง value ของแต่ละคน แต่ละองค์กรก็แตกต่างกันออกไป
ถ้าจะอธิบายให้เห็นภาพง่าย ๆ จะเป็นการนำข้อมูลมาจาก Data Sources หรือแหล่งที่มาของข้อมูล แล้วไปส่งต่อให้ Data Users ซึ่งอาจจะเป็นคนหรือเครื่องมือที่สามารถทำให้เกิดคุณค่าได้
Data Sources ที่เราเห็นทั่วไปอาจจะเป็น
- ระบบโฆษณาต่าง ๆ เช่น Facebook Ads, Google Ads
- ฐานข้อมูล (Database)
- พวกไฟล์ Text หรือไฟล์ต่าง ๆ ที่เก็บข้อมูลไว้ ก็สามารถดึงมาใช้ได้
- บางคนทำเว็บไซต์ก็อาจคุ้นเคยกับ Google Analytics ที่คอยเก็บข้อมูลของเว็บไซต์ว่ามีคนเข้ามาดูเว็บไซต์ของเรากี่คน มาจากส่วนไหนของโลก หรือใช้เครื่องมืออิเล็กทรอนิกส์อะไรเข้ามาดู
เมื่อมีข้อมูลจาก Sources แล้วเราก็พร้อมที่จะส่งทีมต่อให้ทีม Data Users
Data Users ก็จะมี 2 ทีม ได้แก่ ทีม Data และ ทีม Non-Data เช่น ทีม Management ทีม Marketing และ ทีม Sales
- ทีม Data จะมีอาชีพ Data Analyst ที่เอาข้อมูลมาวิเคราะห์หาสิ่งที่น่าสนใจ และอาชีพ Data Scientist ที่หลาย ๆ คนน่าจะรู้จักกันเพราะว่าดังขึ้นมาในปี 2010 เป็นคนที่คอยสร้างโมเดลขึ้นมาทำนายผล
- ทีม Management ก็จะมี CEO ผู้บริหารระดับ C ขึ้นไป, ทีม Marketing ทีม Sales ก็จะฝั่งที่รับข้อมูลมาแล้วนำข้อมูลมาใช้ ยกตัวอย่างเช่นทีม Marketing และ ทีม Sales สามารถดูได้ว่ายิงแคมเปญ ยิง Ads ออกไป มีกระแสตอบรับ หรือยอดขายเพิ่มขึ้นมากน้อยแค่ไหน
แต่ก่อนที่ข้อมูลจาก Data Sources จะไปถึง Data Users ได้นั้น ก็จะมี Data Engineer ซึ่งเป็นอีกอาชีพหนึ่งในสายงานนี้ ที่คอยดูแล Data Platform ซึ่งเป็นตัวกลางในการรองรับข้อมูล โดยมี Data Pipeline ที่เป็นเหมือนท่อส่งข้อมูลจาก Sources ส่งไปให้ User
เมื่อพูดถึง Data Pipeline แล้ว ก็มักจะมีศัพท์เทคนิคของ Data Engineer ที่มักจะใช้กัน เรียกว่า ETL และ ELT ซึ่ง
- E ย่อมาจาก Extract เป็นการดึงข้อมูลออกมาจาก Data Sources
- T ย่อมาจาก Transform เป็นการแปลงข้อมูลให้เหมาะสมกับการนำไปใช้ต่อ เพื่อให้ User เข้าใจข้อมูลได้มากขึ้น อาจจะมีการเพิ่มลดบางอย่างหรือคำนวณอะไรเพิ่มเติม
- L จะเป็นการ Load นำข้อมูลไปเก็บที่ใดที่หนึ่ง
ถ้าใครอยากอ่านเพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง ETL และ ELT สามารถเข้าไปอ่านเพิ่มเติมได้ที่ ETL vs ELT ต่างกันอย่างไร? ทำไม Data Warehouse สมัยใหม่นิยมใช้ ELT
Data Pipeline มักจะมาคู่กับคำว่า Storage ซึ่งเป็นที่เก็บข้อมูล อาจจะเป็นฐานข้อมูล (database) คลังข้อมูล (Data Warehouse) หรือที่อื่น ๆ สามารถเก็บได้หลายที่ขึ้นกับการนำไปใช้
มองเล่น ๆ เป็นเหมือนการทำอาหาร เมื่อมีวัตถุดิบแล้วก็ต้องเตรียมสับหั่นเป็นชิ้น ๆ แยกไว้เป็นส่วน ๆ ให้เรียบร้อย ก่อนที่จะนำไปให้เชฟใช้ทำอาหาร
Flow ของ Data Science ก็เหมือนกัน เมื่อเรามี Data Sources ก็ทำการสร้าง Data Pipeline ขึ้นมาลำเลียงข้อมูลไปเก็บไว้ที่ Storage แล้วส่งต่อไปให้ Data Users ใช้งาน
แล้วปัญหาของ Data Science อยู่ตรงไหนไปดูกัน
ปัญหาของ Data Science
ปัญหาของ Data Science ที่เราเจอจะมีอยู่ด้วยกัน 3 ปัญหาหลัก ๆ ดังนี้
- Data Users ไม่ Happy: Data Users ซึ่งเป็นคนที่รับข้อมูล อาจจะได้ข้อมูลที่ไม่มีคุณภาพไป เช่นข้อมูลที่มีตัวเลขแปลก ๆ ข้อมูลซ้ำ ข้อมูลที่ค่าไม่ตรงจริง ทำให้นำไปใช้งานไม่ได้ ถึงนำไปใช้ต่อก็จะทำให้การวิเคราะห์ผิดเพี้ยน ไม่สามารถนำมาช่วยในการตัดสินใจได้จริง
- Data Platform Team ไม่ Happy: Data Platform Team ซึ่งเป็นคนคอยดูแล Data Platform ก็มีปัญหาในการแก้ไขระบบลำบาก ระบบอาจจะล่มแบบไม่มีสาเหตุ ตรวจเช็คสาเหตุก็ไม่ได้ ทำให้โดนกดดันผ่านทางสายตาและคำพูดแย่ ๆ จาก Data Users
- ทำงานแบบต่างคนต่างทำไม่คุยกัน (silo): Data user เอาแต่สั่งงาน Data platform Team หรือพอข้อมูลพังก็คิดไปว่าเพราะ Data Platform Team ทำงานไม่ดี ทั้งที่จริง ๆ แล้วต้นเหตุอาจจะเกิดจาก Data Sources ก็เป็นได้ ซึ่งก็ไม่ใช่ความผิดของใครคนใดคนหนึ่ง
การทำงาน Data นั้นควรทำเป็น Team Work โดยที่ฝั่ง Business และ Data Team คุยกัน ช่วยกัน และจับมือกันแก้ปัญหา เพราะก็คงไม่มีใครอยากจะให้ Data หรือระบบพังหรอกใช่ไหมคะ
เมื่อเห็นปัญหาแล้ว ตัวช่วยก็นี่เลย DataOps
DataOps คืออะไร
DataOps คือ กระบวนการที่ช่วย support งานด้าน Data Science ให้สำเร็จได้อย่างราบรื่น DataOps เกิดจากการร่วมมือกันของทุกฝ่าย ทั้ง Data Users และ Data Platform Team
หน้าที่ของ Data Users ในการทำ DataOps
หน้าที่ของ Data Users ซึ่งเป็นคนใช้ข้อมูล ก็คือต้องทำการ educate ตัวเองโดยทำความเข้าใจการไหลของข้อมูล แต่ละองค์กรก็จะมี pattern ที่ต่างกัน ทำความเข้าใจเรื่องเครื่องมือ Data ว่ามีอะไรบ้างใน Eco System หรือองค์กรของตัวเอง และมีการช่วยกันวางแผนพัฒนาข้อมูลที่ต้นน้ำ
เช่น ในกรณีที่ Data พังที่ต้นทาง แต่ละฝ่ายจะต้องทำอย่างไรต่อ เพื่อให้ Data Platform Team ไม่กดดันมากเกินไป เพราะบางทีก็ไม่ใช่ความผิดของ Data Platform Team เพราะฉะนั้นก็ควรมีการจับมือกันช่วยเหลือกัน
หน้าที่ของ Data Platform Team ในการทำ DataOps
Data Platform Team จะมีหน้าที่เตรียมเครื่องมือที่ช่วยให้การทำงานกับ Data ตั้งแต่ต้นน้ำยันปลายน้ำเป็นไปได้อย่างรวดเร็ว มีประสิทธิภาพ และมีคุณภาพดี ถ้า Data Platform Team มีเครื่องมือที่ดีมาก แต่ไม่ได้สื่อสารกับ Data Users และ Data Users เองก็ไม่ได้สนใจ ก็จะไปด้วยกันไม่ได้
หน้าที่ของ Data Platform Team จะแบ่งเป็น 3 ส่วนหลัก ๆ ประกอบไปด้วย Automation, Monitoring และ Testing
หน้าที่ของ Data Platform Team 1) สร้าง Automation
Automation เป็นการทำให้ทุกอย่างเป็นอัตโนมัติ บางทีใช้โปรแกรมต้องกดเป็น 10 ปุ่ม ถ้าต้องให้คนมานั่งกดทุกครั้ง ก็อาจจะเกิดปัญหาขึ้นได้ เลยเกิดมาเป็นการทำให้ Data Pipeline ทำงานอัตโนมัติ (Data Pipeline Orchestration)
เช่น การดึงข้อมูลจาก Facebook ทุกวันตอนตี 3 ถ้า ถ้าต้องให้ทีม Data ตื่นขึ้นมาทุกวันก็คงจะไม่ไหว เราสามารถทำการเขียน Code ให้ทำงานตอนตี 3 ทุกวัน ทำให้ชีวิตง่ายขึ้น และลดการทำงานซ้ำ ๆ กันลง
ถ้าเราอยากทำ Automation ก็ต้องสามารถทำให้ Data Pipeline และ Data Platform สามารถเก็บเป็น Code ได้ เพื่อที่เวลานำมาติดตั้ง หรือปรับเปลี่ยนทำได้ด้วยการแก้ Code ซึ่งจะรู้จักกันใน Concept ของ Data Pipeline as Code และ Infrastructure as Code
การเก็บ Code ให้เป็นระบบ จะมีการจัดเก็บให้เหมาะกับการทำงานร่วมกัน หรือที่เรียกว่า Git ที่ทุกคนเคยได้ยินกัน จะเป็นเทคโนโลยีที่คอยตรวจเช็คคุณภาพ สามารถเช็คได้ว่ามีการแก้ไขอะไรไปบ้างใน Code เวลาทำงานในทีมก็จะสะดวกมากจะเห็นว่าใครแก้ไขอะไร
อีก Concept นึงที่น่าสนใจคือ CI/CD = Continuous Integration / Continuous Deployment หรือ Delivery ซึ่งเป็นการส่งต่อ Code ให้ทำงานโดยอัตโนมัติ อย่างพวก GitHub Actions, GitLab CI/CD จะสามารถทำ CI/CD เพื่อทำการเช็คโดยอัตโนมัติว่า Code มีปัญหาตรงไหน
หน้าที่ของ Data Platform Team 2) ทำ Monitoring
Monitoring เป็นการเช็คว่าระบบหรือข้อมูลมีปัญหาอะไรไหม
ขั้นตอนแรกของ Monitoring จะเป็นการเก็บข้อมูลของการทำงานในระบบ ที่เรียกว่าการ Logging ต่อมาจะสามารถแจ้งเตือน ทำการตรวจเช็คการทำงานของระบบ และแก้ไขปัญหา (Observability & Monitoring)
เช่น วันดีคืนดีระบบของเราใช้ RAM เกิน ระบบก็จะเด้งขึ้นมาแจ้งเตือนก่อนที่โปรแกรมจะพัง ให้เราแก้ไขได้ทันเวลา พอนำคำแจ้งเตือนมารวมกับ Logging ก็จะทำให้เราเห็นชัดเจนว่าระบบทำงานเป็นอย่างไรมีส่วนไหนที่ต้องแก้ไข
และเนื่องจากในการพัฒนา Data Platform มีการนำ Cloud computing เข้ามาใช้มากขึ้น ก็เลยมี Concept ใหม่ ที่เรียกว่า FinOps (Finance Optimization)
FinOps เป็นการ optimize ระบบ Cloud เพื่อจัดการค่าใช้จ่ายให้ได้รับผลประโยชน์สูงสุด
ถึงแม้ว่าการเก็บเงินของ Cloud computing จะเป็นแบบ Pay as you go จ่ายเท่าที่ใช้ แต่ถ้ามีการพัฒนาด้าน FinOps ก็จะช่วยประหยัดตังค์ไปได้มาก ทำให้รู้ว่าเราเสียเงินไปกับแต่ละ tools ขนาดไหนแล้ว และ tools ไหนที่เราไม่ได้ใช้อีกต่อไป
หน้าที่ของ Data Platform Team 3) ทำ Testing
Testing เป็นการทดสอบการทำงานของระบบซึ่งจะคล้ายกับการทำ Testing ของระบบ Software แต่จะมีเรื่องของ Data Pipeline เข้ามาเพิ่ม
การทดสอบระบบก็จะมี ดังนี้
- Unit Testing เป็นการ Test ฟังก์ชั่นว่าทำงานได้ดีไหม
- Integration Testing เป็นการ Test ว่าทำงานกับระบบอื่นได้ดีไหม
- User Testing เป็นการนำคนมา Test ว่าทำงานได้ดีไหม
ถ้าใครอยากศึกษาเรื่อง Testing เพิ่มเติม แนะนำให้เข้าไปอ่าน white paper ของ aws
ต่อมาจะเป็นการทดสอบคุณภาพของ Data (Data Quality Test) ยกตัวอย่าง การใช้ dbt ซึ่งเป็นซอฟต์แวร์ที่ช่วยให้เราเขียนโปรแกรม Test Data ได้ง่ายขึ้น
เวลาทำ Data Quality Test เราสามารถกำหนดกฎไว้ แล้วโปรแกรมจะทำการ Test Data ที่เข้ามาว่ามีคุณภาพตรงกับกฎที่ตั้งไว้หรือไม่ เช่นอายุคน ค่าปกติจะเป็นบวกเสมอ ไม่สามารถติดลบได้
นอกจากนี้ จะมีเรื่องของ Environment ในการทดสอบระบบ
สำหรับคนทืี่ไม่คุ้นกับคำว่า Environment ขอยกตัวอย่างว่าเหมือนการแบ่งห้อง
- ห้องนึงไว้เก็บของ ไว้ทดสอบสิ่งต่าง ๆ ไว้ทำเละโดยเฉพาะ = Environment สำหรับ Development, Non-production
- ส่วนอีกห้องไว้ใช้งานจริงเวลาแขกมาเยี่ยม = Environment สำหรับ Production
เวลาทำงานจริง Data จะมีหลายแบบ ไม่ได้มีแค่ Data ก้อนเดียว แต่จะมีการแยกออกมาเป็น Data สำหรับการ Test ก่อนที่จะไปขึ้นระบบ Production ด้วย
บริษัทมักจะมีการแบ่ง Environment เป็น Development, Non-production หรือ Production ซึ่งอาจจะมีชื่อเรียกแตกต่างกันออกไป
สมมุติว่าถ้าเราอยากแก้ไขโค้ด ถ้าเข้าไปแก้ใน Production เลยก็อาจจะพังได้ง่าย ๆ จึงจำเป็นต้องทำการ Test ใน Development ก่อนที่จะดัน Code ขึ้นไปบน Production
Data Science ที่มี DataOps ดีอย่างไร
เมื่อมีกระบวนการ DataOps เข้ามาช่วย Data Science แล้ว ก็จะส่งผลดีกับทุกฝ่ายแน่นอน ทั้ง Data Users และ Data Platform Team
Data Users จะ Happy
Data Users จะ Happy เพราะ Data มีคุณภาพจากการที่ถูก Monitoring และ Testing ตลอดเวลา ถ้าข้อมูลไม่ดีก็จะไม่นำเข้ามา ทำให้นำไปใช้ต่อได้ง่ายและมีข้อมูลที่น่าเชื่อถือ ถ้าเกิดมีปัญหา แล้ว Data Users เป็นคนเจอ ก่อนที่จะไปแจ้ง Data Platform Team ก็อาจจะเป็นการลดความน่าเชื่อถือ ความเชื่อใจระหว่างทีมลงได้ เมื่อมี Monitoring และ Testing จาก DataOps เข้ามาก็จะทำให้ Data Platform Team รู้ได้ทันทีเมื่อมีปัญหาไม่ต้องรอให้อีกทีมาแจ้ง
Data Platform Team ก็ Happy
Data Platform Team ก็ Happy เพราะกระบวนการติดตั้งแก้ไขของ Data Platform ถูก Automate ทั้งหมดแล้ว เพราะไม่ต้องไปทำงานซ้ำ ๆ อย่างเข้าไปกดปุ่ม 5 นาทีทุกวัน ทำให้มีเวลาไปทำอย่างอื่นได้มากขึ้น ก่อนหน้าอาจจะเกิดการล่มแล้วไม่รู้ว่าต้นตอมาจากอะไร แต่เมื่อมีการตรวจสอบจากการ Monitoring ก็จะไม่กดดันมาก รวมถึงหาสาเหตุและวิธีแก้ไขได้ดียิ่งขึ้น
ทำงานแบบช่วยเหลือกัน
ทำงานแบบช่วยเหลือกัน ก่อนหน้าอาจจะเป็นการทำงานแบบ Silo ทั้ง Data Users และ Data Platform Team แต่เมื่อมี DataOps เข้ามาก็จะทำให้มีการช่วยเหลือเกื้อกูลกันมากขึ้น เพราะปัญหา Data ไม่ใช่ปัญหาของ Data platform Team ทีมเดียว แต่เป็นปัญหาขององค์กรที่ต้องช่วยเหลือกัน ช่วยกันทำความเข้าใจและแก้ไขปัญหาช่วยให้ Data platform ทีมทำงานได้เต็มที่
สรุป DataOps คืออะไร และเกี่ยวกับ Data Science อย่างไร
Data Science จะเป็นการสร้างคุณค่าจากข้อมูล จะเริ่มตั้งแต่การมี Data Sources นำ Data เข้าไปที่ Data Platform แล้วส่งต่อไปให้ Data Users
ส่วน DataOps เป็นกระบวนการที่เข้ามาช่วย support ให้งาน Data Science สำเร็จได้อย่างราบรื่น ประกอบไปด้วยกระบวนการ Automation, Monitoring และ Testing รวมถึงการทำงานร่วมกันระหว่าง ทีม Business และ ทีม Data
แหล่งศึกษาเพิ่มเติม ด้าน DataOps
ถ้าใครอยากศึกษาเพิ่มเติม ว่า DataOps เป็นอย่างไรกันแน่ แนะนำให้เข้าไปอ่านในหนังสือเล่มนี้เลย
อ่านแล้วคิดว่าอาชีพด้าน DataOps จะเกิดขึ้นมั้ยในบริษัทมาบอกให้แอดฟังกันด้วยนะคะ
บทความนี้เราตั้งใจเขียนมาก และหวังว่าจะมีคนที่ได้ประโยชน์จากบทความนี้เพิ่มขึ้นไปเรื่อย ๆ นะคะ :) ถ้าชอบเนื้อหาแนวนี้ ติดตามบทความดี ๆ ด้าน Data และวีดิโอสนุก ๆ ดูชิล ๆ แล้วได้ความรู้กันได้ที่ Facebook Page: DataTH และ Youtube Channel: Data Science ชิลชิล แล้วเจอกันนะคะ