Data Mesh คืออะไร
ในยุคนี้หากถามว่าอะไรเป็นสิ่งสำคัญที่ช่วยให้ทุกองค์กรขับเคลื่อนและเดินหน้าธุรกิจได้อย่างมีประสิทธิภาพ หนึ่งในคำตอบนั้นจะต้องเป็น data อย่างแน่นอน จึงไม่แปลกที่ทุกองค์กรต่างก็ให้ความสำคัญกับ data ดังจะเห็นได้จากการที่หลาย ๆ องค์กรพยายามที่จะ transform องค์กรมุ่งสู่การเป็น data-driven organization เพื่อนำ data ที่มีอยู่มาพัฒนาองค์กรให้มีประสิทธิภาพทั้งในแง่ของสินค้าและบริการ ซึ่งส่วนประกอบสำคัญที่ช่วยให้องค์กรสามารถนำ data มาใช้งานเพื่อสร้างมูลค่าได้อย่างเต็มประสิทธิภาพก็คือ data architecture ทั้งนี้องค์กรส่วนใหญ่ในปัจจุบันยังใช้งาน data architecture ในรูปแบบ monolithic อยู่ ในบทความนี้จะชวนพูดคุยกันถึงความเหมาะสมของ data architecture ที่ใช้กันอยู่ในปัจจุบันและรูปแบบ data architecture เพื่อรองรับการใช้งานในอนาคตอย่าง Data Mesh ที่ถูกกล่าวถึงอย่างกว้างขวาง ว่าจะสามารถเข้ามาช่วยปรับรูปแบบองค์กรให้เป็น data-driven organization ได้จริงหรือไม่
Monolithic data architecture
เรามาเริ่มดูกันที่รูปแบบ data architecture ที่องค์กรส่วนมากใช้กันอยู่ในปัจจุบันที่เป็นแบบ monolithic ซึ่ง data จะถูก process และ store ไว้ที่ศูนย์รวมที่เดียวกัน ไม่ว่าจะเป็น data warehouse หรือ data lake โดยมีทีมที่องค์กรตั้งขึ้นโดยเฉพาะเพื่อทำหน้าที่จัดการและดูแล data pipeline และ data platform เพื่อให้หน่วยงานต่าง ๆ ในองค์กรสามารถนำ data ไปใช้งานได้
โดยภาพรวมแล้ว รูปแบบการทำงานของ monolithic data architecture สามารถอธิบายได้ดังรูปภาพที่ 1 ดังนี้
Ingest : การนำเข้า data จากแหล่งต่าง ๆ ไม่ว่าจะเป็นจากภายในองค์กรเอง หรือภายนอกองค์กรทุกมุมมาไว้ที่ data platform
Process : มี 3 ขั้นตอนหลัก ๆ คือ cleanse, enrich และ transform เพื่อทำให้ data ที่เข้ามาให้อยู่ในรูปแบบที่พร้อมใช้งาน
Serve : การให้บริการ data ที่ได้จากการ process สำหรับนำไปใช้งานต่าง ๆ เช่น การจัดทำ dashboard การวิเคราะห์ข้อมูลทางธุรกิจ หรือการสร้างโมเดลปัญญาประดิษฐ์ (AI Modeling) เป็นต้น
จากกระบวนการทำงานของ monolithic data platform ทำให้ภาพที่ได้ออกมาเป็นดังภาพที่ 2
จริง ๆ แล้ว monolithic data platform นั้นไม่ได้มีปัญหาอะไร และสามารถใช้งานได้ดีสำหรับองค์กรที่มี data domain และการนำ data ไปใช้งานที่ไม่หลากหลายมาก แต่สำหรับองค์กรขนาดใหญ่ที่มีปริมาณ data ที่มหาศาล data domain และ data source ที่หลากหลาย รวมถึงรูปแบบการนำ data ไปใช้งานที่ซับซ้อนขึ้น ประเด็นสำคัญที่องค์กรเหล่านั้นต้องคำนึงถึงคือ
Ubiquitous data and source proliferation
ในยุคที่ data มีอยู่ทุกที่ จาก data source ที่มากมาย ส่งผลให้ขั้นตอน process data จากแหล่งต่าง ๆ ในทุกแง่มุมมาจัดเก็บไว้ในด้วยกัน เพื่อนำไปใช้งานเพื่อจุดประสงค์ที่ต่างกันมีความซับซ้อน ทำให้ความสามารถในการใช้ข้อมูลที่น้อยลง และระยะเวลาในการ process ก็สูงขึ้นไปด้วย
Coupled pipeline decomposition
ถึงแม้ monolith data platform มีรูปแบบ data pipeline ทื่แบ่งเป็นขั้นตอนค่อนข้างชัดเจนอยู่แล้วคือ ingest-process-serve ตามที่ได้กล่าวไว้ข้างต้น แต่โดยส่วนมากแล้วการทำงานของทั้ง 3 ขั้นตอนนั้นค่อนข้างผูกติดกัน ทำให้การเพิ่มของ data source ใหม่ก็จำเป็นต้องแก้ทั้ง 3 ขั้นตอนตามไปด้วย
Siloed and hyper-specialized ownership
จากการที่แต่ละทีมจะต้องส่ง data source เข้าไปไว้รวมไว้ที่ data platform กลางเพียงแห่งเดียวเพื่อทำการ process จึงทำให้ data platform นั้นประกอบไปด้วยหลากหลาย domain ส่งผลให้ทีม data engineer ส่วนกลางไม่ได้มีความเกี่ยวข้องกับ data domain จำเป็นต้องทำความเข้าใจกับทุก ๆ data domain
จากประเด็นที่กล่าวถึงข้างต้น ทำให้มีแนวคิดของ data architecture ในรูปแบบใหม่ที่มีลักษณะมีลักษณะการกระจายความรับผิดชอบในการดูแลและจัดการออกไป (decentralize) หนึ่งในแนวคิดที่ถูกกล่าวถึงอย่างกว้างขวางก็คือ แนวคิดของ data architecture ที่เรียกว่า Data Mesh
Data Mesh : A Decentralized Data Architecture
ในวงการ software engineering ที่ผ่านมามีการเปลี่ยนรูปแบบการพัฒนา software จากรูปแบบ monolithic สู่รูปแบบ microservice ซึ่งเป็นการกระจายการทำงานของ service ต่าง ๆ ออกไปในแต่ละ domain ซึ่งแนวคิดของ Data Mesh ก็เปรียบดัง microservices ในเวอร์ชั่นของ data platform นั่นเอง
โดย Data Mesh คือแนวคิดการทำ data architecture ในรูปแบบ decentralized architecture ที่แบ่งตาม data domain ซึ่งจะให้แต่ละทีมหรือหน่วยงานที่เป็นเจ้าของ data (data owner) เหล่านั้นมีหน้าที่คอยจัดการและรับผิดชอบ data สำหรับ domain ของตนเอง และสามารถแบ่งบันหรือกำหนดสิทธิ์การเข้าถึง data ของตนเองสำหรับทีมหรือหน่วยงานใด ๆ ที่ต้องการนำ data ไปใช้งาน โดยมองว่า data เป็น product ของ data domain นั้น ๆ หรือที่เรียกว่า data-as-a-product ซึ่งแตกต่างจากจากรูปแบบ monolithic ที่การนำเข้าและการบริหารจัดการ data เป็นหน้าที่ของทีมหรือหน่วยงานกลางที่ดูแล data platform แต่เพียงผู้เดียว
จากรูปภาพที่ 3 จะเห็นว่าโครงสร้างของ Data Mesh ประกอบไปด้วย 3 ส่วนได้แก่ data source, data infrastructure และ data pipeline สำหรับแต่ละโดเมน โดยที่ภายใต้ทั้ง 3 องค์ประกอบนี้จะมี layer ที่เป็น universal interoperability อยู่ข้างใต้อีกทีเพื่อทำหน้าที่กำกับดูแลให้แต่ละ data domain มีมาตราฐานและทิศทางของการทำงานกับ data ไปในทางเดียวกัน
และเพื่อให้เข้าใจมากยิ่งขึ้น ผมขอพูดถึงแนวคิดหลัก ๆ ของ Data Mesh โดยแบ่งเป็น 3 ข้อต่อไปนี้
Domain-oriented Data Owners and Data Pipelines
จากรูปแบบการทำงานเดิมของ monolithic data platform แต่ละทีมจะต้องส่ง data ไปที่ data platform ก่อนจะมีการ process data เหล่านั้นและกระจายต่อไปให้กับทีมอื่น ๆ ทำให้สิทธิ์ในการจัดการ data เหล่านั้นอยู่นอกเหนืออำนาจของทีมที่เป็นเจ้าของ data ซึ่งรูปแบบการทำงานดังกล่าวอาจทำให้เกิดคอขวด เนื่องจากมีทีมที่ศูนย์กลางเพียงทีมเดียวที่ทำหน้าที่ในการ process ซึ่งทำให้ระยะเวลาในการ process นั้นยาวนาน เนื่องจากมีปริมาณ data มากองรวมอยู่ในที่เดียวกัน อีกทั้ง data engineer ที่รับผิดชอบต้องใช้ความพยายามอย่างมากในการทำความเข้าใจ data จากทีมอื่น ๆ ทั้งหมดโดยที่ตนเองไม่ได้เป็นเจ้าของ data ใน domain นั้น ๆ ในขณะที่แนวคิดของ Data Mesh คือ ให้แต่ละทีมที่เป็นเจ้าของ data จะต้องรับผิดชอบใน data ของตัวเอง เช่น การ process, ETL piplines, data catalogs และกำหนดสิทธิ์การเข้าถึง เพื่อให้ออกมาเป็น data product จะเห็นว่าความรับผิดชอบเกือบทุกอย่างล้วนอยู่ที่ทีมที่เป็นเจ้าของ data ทำให้ปัญหาคอขวดที่ทำให้เกิดความความล่าช้าในการทำ process ใน monolithic data platform นั้นลดลง
Self-serve functionality
ด้วยรูปแบบของ Data Mesh ที่เป็นลักษณะการจัดวางแบบ decentralized architecture จึงก่อให้เกิดคำถามว่าแต่ละ data domain จะต้องสร้าง infrastructure หรือ pipeline ที่เหมือน ๆ และซ้ำซ้อนกันหรือไม่ แต่จริง ๆ แล้ว Data Mesh มีแนวคิดในการรวบรวมความสามารถต่าง ๆ ที่จำเป็นต่อการทำ infrastructure ไปไว้ที่ data infrastructure as a platform เพื่อให้แต่ละทีมสามารถใช้งานได้อย่างง่ายดาย และสามารถมุ่งเน้นไปในเรื่องของการทำ data product ของตนเองได้อย่างมีประสิทธิภาพ หรือแม้แต่กรณีที่เราต้องการจะเพิ่ม data domain ใหม่ ๆ ก็สามารถทำได้อย่างง่ายดาย
โดยความสามารถของ data infrastructure as a platform มีตัวอย่างคร่าว ๆ ดังนี้
- Scalable polyglot big data storage
- Data product versioning
- Data product schema
- Data product discovery, catalog registration and publishing
- Data pipeline implementation and orchestration
- Data product monitoring/alerting/log
- Unified data access control and logging
Interoperability and Standardization of Communications
อย่างที่ผมได้กล่าวไปข้างต้นว่า Data Mesh จะมี layer หนึ่งที่เรียกว่า universal interoperability ซึ่งจะทำหน้าที่กำกับดูแลและควบคุมให้ data domain ทั้งหมดมีมาตราฐานในการทำงานร่วมกันไปในทิศทางเดียวกัน เนื่องจากอย่างแนวคิดของ Data Mesh คือการให้แต่ละทีมมีหน้าที่รับผิดชอบใน data ของตัวเอง จึงทำให้มีโอกาสที่แต่ละ data domain มีมาตรฐานการทำงานและเชื่อมต่อที่ไม่เป็นไปในทางเดียวกัน จึงอาจก่อให้เกิดการทำงานร่วมกันของแต่ละ data domain มีความยากลำบากมากยิ่งขึ้น ดังนั้นแล้วจึงต้องมีการควบคุมมาตราฐานเพื่อหลีกเลี่ยงปัญหาดังกล่าวนั้นเอง
Benefits of Data Mesh
จากที่กล่าวถึงแนวคิดของ Data Mesh ไปแล้ว ผมขอพูดถึงข้อดีของการใช้งาน Data Mesh กันบ้าง โดยแบ่งเป็น 3 ข้อ ดังนี้
Business Agility and Scalability
ด้วยลักษณะการทำงานของ Data Mesh ที่เป็นรูปแบบการทำงานแบบ decentralized data operations, independent team performance และ data infrastructure as a service จึงช่วยลดความซับซ้อนของกระบวนการทำงาน ช่วยให้ธุรกิจมีความคล่องตัว และมีการขยายตัวเพื่อรองรับการเติบโตได้อย่างมีประสิทธิภาพ
Faster Access and Accurate Data Delivery
รูปแบบของ Data Mesh ทำให้ลดความซับซ้อนในการบริหารจัดการการเข้าถึง ซึ่งทำให้ผู้ใช้สามารถเข้าถึง data ได้ง่ายขึ้นและรวดเร็วขึ้น
Flexibility and Independence
เนื่องจากรูปแบบการทำงานของ Data Mesh ไม่ได้ขึ้นอยู่กับเทคโนโลยีหรือผู้ให้บริการที่เฉพาะเจาะจง ทำให้เกิดความยืดหยุ่นกับองค์กรหรือธุรกิจที่นำแนวคิดของ Data Mesh ไปใช้และปรับเปลี่ยนเทคโนโลยีได้ตลอดเวลา
Should Organizations Adopt the Data Mesh?
จนถึงตอนนี้หลาย ๆ คนอาจะมีคำถามว่าแล้วองค์กรของเราจำเป็นต้องเปลี่ยนรูปแบบของ data architecture ให้เป็น Data Mesh หรือไม่ ซึ่งผมขอตอบ ณ ตรงนี้เลยครับว่า ไม่จำเป็น ถ้าหากว่าองค์กรของเราไม่ติดในประเด็นข้อจำกัดในการใช้งาน monolithic data platform ข้างต้นอย่างที่ผมได้กล่าวไป หรือหากเราแค่ต้องการอยากจะเปลี่ยนมาใช้งานรูปแบบของ Data Mesh ผมก็อยากจะแนะนำว่าให้ลองไตร่ตรองถึงความคุ้มค่าและความพร้อมในการใช้งานขององค์กรเรา เช่น จำนวน data domain ที่มีไม่มาก ก็อาจทำให้การใช้งาน Data Mesh นั้นไม่ก่อให้เกิดประโยชน์ใด ๆ หรือจำนวนของ data engineer ในองค์กรของเรามีไม่เพียงพอที่จะกระจายไปอยู่กับทุก ๆ data domain ก็อาจจะยังไม่เหมาะที่จะใช้ Data Mesh เป็นต้น
สุดท้ายก่อนจากกันไปผมก็หวังอย่างยิ่งว่าบทความดังกล่าวจะมีประโยชน์กับทุกคนไม่มากก็น้อย และหากมีข้อมูลผิดพลาดประการใดผมต้องขออภัยไว้ล่วงหน้านะครับ ขอบคุณครับ