มาทำความรู้จักการจัดการข้อมูลผ่าน Dataplex และ มาทำความเข้าใจเรื่อง Data mesh กันสักเล็กน้อย แบบคร่าวๆ

Introduction
เนื่องจากปัจจุบันได้มีข้อมูลต่างๆเพิ่มมากขึ้นเรื่อยๆอย่างมหาศาล ไม่ว่าจะเป็นข้อมูลการซื้อขาย ข้อมูลการท่องเว็บ ข้อมูลสุขภาพ ข้อมูลส่วนตัว ซึ่งเป็นที่แน่อยู่แล้วว่าเราต้องการความปลอดภัยของข้อมูลสำหรับเราหรือสำหรับองค์กร เพื่อไม่ไห้มีการเอาข้อมูลไปใช้ในรูปแบบผิดๆ และรวมไปถึงการจัดการข้อมูลให้เข้าถึงได้ตามต้องการ

แต่โดยปรกติแล้ว เมื่อเริ่มทำ Data platform ขึ้นมานั้น ในขณะที่ Data platform ยังมีขนาดเล็กอยู่ องค์กรส่วนใหญ่แล้วนั้นจะใช้รูปแบบ centralized data platform และเมื่อบริษัทมีขนาดใหญ่มากๆและมีหลากหลายทีมที่ต้องใช้งาน Data platform สิ่งที่บางบริษัทจะใช้กันก็คือรูปแบบ Data mesh ซึ่งเป็นการแยก Data platform ให้อยู่ตาม Domain ต่างๆ แล้วเรามาเจาะลึกซักเล็กน้อยกันครับ
Data fabric (centralized data platform)
กล่าวคือการที่เราเอาข้อมูลจากทุก Domain มารวมอยู่ที่เดียวกัน โดยจะมีทีม Data platform เพียงทีมเดียวคอยดูแลจัดการ แล้วก็มี Data engineer ที่คอยทำ ETL ELT จากแหล่งข้อมูลต่างๆมาไว้ใน Data lake หรือ Data warehouse โดยที่ user จะต้องมาขอข้อมูลจากส่วนกลางเท่านั้น
ข้อดีที่ของรูปแบบ Data fabric ที่เห็นได้ชัดคือ เราสามารถจำกัดความปลอดภัยอย่างเป็นมาตรฐานในรูปแบบเดียวกันทั้งทีมได้สะดวก เช่น การจัดการข้อมูลที่มีความละเอียดอ่อน หรือการเข้าถึงข้อมูลจาก user แต่ปัญหาที่เป็นข้อเสียคือเวลาที่มีการเรียกขอเข้าใช้ข้อมูล อาจจะเกิดเป็นคอขวดได้ จึงจะทำให้เกิดความล่าช้า
Data Mesh (decentralized data platform)
พอมีข้อมูลที่มากขึ้นและมาจากหลายๆที่ ปัญหาที่พบเจอได้ตอนที่ยังใช้รูปแบบ Data fabric นั้นก็คือการที่ในบางครั้ง Data team ไม่เข้าใจข้อมูลที่มีอยู่เลย เพราะมาจากหลายๆ Sources เช่นไม่รู้ว่าเลยว่าข้อมูล Sale นั้นมีการอัพเดทที่ตารางเป็นรูปแบบไหน และที่สำคัญคือการเวลาที่ต้องการข้อมูลนั้นปรากฎว่าเป็นไปอย่างล่าช้า จึงมีการคิดรูปแบบการจัดการข้อมูลขึ้นมาเรียกว่า Data mesh

Data mesh คือการมองข้อมูลให้อยู่ในรูปแบบ Data product และ ข้อมูลเหล่านั้นจะอยู่ใน Domain นั้นๆตามเจ้าของข้อมูล อย่างเช่น Sale, marketing, CRM หรือจะเป็น Finance เป็นต้น และมีทีม Data คอยดูแลในส่วนของข้อมูลนั้นๆไป แต่ทั้งนี้การจัดการข้อมูลในแง่ Data governanceควรจะเป็นในรูปแบบที่สดคล้องกันทั้งหมด นั้นจึงเป็นข้อเสียเหมือนกันที่ว่า การควบคุมการดูแลถ้าไม่มีการพูดคุยให้ดี จะดูแลการจัดการข้อมูลก็ยากซะเหลือเกินเพราะว่าพอเป็น Data mesh แล้ว ทุกๆ Domain ต้องคอยดูแลกำกับข้อมูลของตัวเอง โดยที่ต้องดำเนินไปตามข้อกำหนดขององค์กร
Dataplex
Dataplex เป็นหนึ่งในบริการที่อยู่ใน Google cloud platform ที่ทำหน้าที่ ดูแลข้อมูล และ การทำ Data governance เช่นถ้าอยากจัดการ การเข้าถึงข้อมูลก็ทำผ่านที่นี่ได้หรือจะเป็นการทำการตรวจ Data quality ก็ทำได้เช่นกัน

ซึ่งในบทความนี้ก็จะมาลองใช้งานเจ้า Dataplex กันดู โดยจะเป็นการจำลอง Data mesh แบบเล็กๆ คร่าวๆ simple simple โดยเราจะมาแบ่ง Domain ให้กับข้อมูลและมอบการดูแลและเข้าถึงในแต่ Domain ให้เฉพาะบุคคลกัน โดยเริ่มจากมาทำความเข้าใจกันก่อนที่เราจะมาเริ่มทำ โดยเราจะทำอยู่ในหมวดของ Manage lake ภายใต้ Dataplex ผู้อ่านอาจจะเอ๊ะได้ว่ามันคืออะไร งั้นมาลองดู Diagram กัน

ก็จะเห็นว่าเราจะทำการแบ่ง Domain ของ Data กันได้สอง Domain 1. Customer 2. Product และผมจะมาเขียนอธิบายศัพท์ที่ใช้ใน Dataplex นี้เพื่อที่จะได้ไม่สับสนกับศัพท์อื่นในการทำงานกับ Data
- Lake = ในที่นี้คือเท่ากับ Domain ซึ่งจะเป็นระบบลำดับชั้นภายนอกสุดเป็นเสมือน Parent hierarchy โดยเราจะสร้าง Lake เท่ากับจำนวน Domain ที่เราต้องการ
- Zone = เป็นการแบ่งแยกข้อมูลภายใต้ Lake โดยจะสามารถสร้างกี่ Zone ก็ได้ แต่จะสร้าง Zone ได้แค่สองชนิดนั้นก็คือ RAW zone และ Curated zone โดย Raw zone คือ Zone ที่เราจะเอาไว้เก็บข้อมูลดิบที่ยังไม่ผ่านกระบวนการต่าง โดยเราจะมีข้อมูลใน Zone นี้เป็นอะไรก็ได้ เช่น GCS file (csv, png ..) และ หรือจะเป็น Bigquery table ก็ได้ แต่ Curated zone คือ zone ที่สำหรับ Data ที่พร้อมใช้และเป็น Structure เท่านั้น บน Bigquery เป็น Structure data อยู่แล้วแต่ ถ้าเป็นข้อมูลที่เก็บใน GCS ต้องอยู่รูปแบบไฟล์ Parquet, Avro, and ORC
- Asset = ถ้าแปลตรงตัวก็คือ สินทรัพย์🤩 ซึ่งก็ตรงตามคำแปลเพราะสินทรัพย์เราในที่นี้ก็คือ Data หรือข้อมูลนั้นเอง ไม่ว่าข้อมูลจะอยู่ในรูปแแบไหนก็ตาม เช่น Structure unstructure หรือ semi-structure

Start!
ไปกันที่ Dataplex แล้วเลือกที่ Manage lake แล้วเลือก Manage ก็จะพบกับหน้า Lakes แล้วเราก็มาสร้าง Lake จากตรงนี้กัน แแล้วก็คลิ๊ก Create lake ได้เลย กรอกข้อมูลให้ครบ ในส่วน Metastore เรายังไม่ต้องใส่ก็ได้ถ้าเราไม่ได้จะต้องใช้ open-source พวก Presto, Hive หรือ SparkSQL


พอเราได้สร้าง Lake แล้วกดเข้าไปที่ตัว Lake นั้นๆ เพื่อที่จะสร้าง Zone ต่างๆโดยในตัวอย่างเราจะมาสร้าง RAW zone จาก GCS ซึ่งเวลาที่เราจะสร้าง zone นั้นจะมีตัวเลือกด้วยว่าจะให้ Enable Discovery settings ไหมเพื่อที่ระบบจะไปกวาดเก็บ metadata ซึ่งจะมีค่าใช้จ่ายเล็กน้อยไม่แพงมาก คิดตามเวลาที่ระบบทำการหา metadata

เราก็ก็จะได้ RAW zone ไปแล้ว ใน RAW zone นี้เราจะทำการสร้าง Asset โดยเลือกไปที่ Bigquery สมมุติว่าตารางที่เราจะเลือกนั้นเป็น Raw data คือข้อมูลที่เป็นข้อมูลดิบ ก็เริ่มจากกด +Asset โดยเราสามารถเลือกได้มาก (คือต้องบอกก่อนว่าเป็นการเลือกทั้ง Dataset นะครับไม่สามารถเลือกเป็น Table ได้😅) กด Summit โลดดด!

จะเกิดอะไรขึ้นหลังจาก dataset ถูกเพิ่มไปเป็นส่วนหนึ่งใน Asset ก็ถ้าเราไปดู Dataset ที่อยู่ใน Bigquery นั้นจะพบว่ามี Label ติดอยู่โดยจะบ่งบอกว่าอยู่ภายใต้ Lake Zone Asset อะไร

ในส่วนของ Product เราก็ทำเหมือนกับ Customer เลยเพียงแค่เปลี่ยนชื่อและตัว Asset หลังจากทำแล้วเราก็จะได้ Lake มา 2 Domain และมี zone และ Asset พร้อมใช้
พอเรามี Asset ตามที่เราต้องการแล้ว เราสามารถเข้าไปดูที่ Asset เราได้ว่ามีข้อมูลอะไรบ้างถ้าเราเปิด Discovery เอาไว้ถ้าเป็น Asset ที่เป็น Bigquery Dataset เราสามารถดูได้ว่าใน Dataset มีอะไรบ้าง โดยไปกดไปที่ Asset หลังจากเลือกไปที่แท็บ Entities

ต่อมาเมื่อเรามีทุกอย่างพร้อมก็จะเหลือแต่มอบสิทธิ์ในการเข้าถึง ไม่งั้นเราจะทำการแยก Data ออกมาทำไมถูกไหมครับทีนี้เราก็ต้องมาดูว่าเราต้องการให้ User เข้าถึงข้อมูลในระดับไหนในตัวอย่างผมจะให้ User ระดับ Asset พอ เพราะถ้าเข้าถึงระดับ Zone นั้น user จะเห็นข้อมูลทั้งหมดใน Zone นั้นหรือคือทุก Asset ใน Zone
Dataplex propagates policies in the Dataplex Hierarchy (Lake=>Zone=>Asset) on an ongoing basis
โดยให้ไปที่ Permissions แล้วก็ Grant access เราก็เลือกว่าอยากจะให้ User ได้สิทธิ์ระดับไหนโดยผมแนะนำว่าถ้าไม่ใช่ Admin หรือ Data owner แนะนำว่า ให้สิทธิ์แค่ Dataplex data reader หรือ Dataplex data writer ก็พอเท่านี้ user ก็จะเห็นเฉพาะข้อมูลที่มีสิทธิ์เท่านั้น

ที่นี่เราก็สามารถสร้างการจัดการข้อมูลตามแต่ละ Domain ได้แล้วโดยเราเพียงแค่ไปเพิ่ม Data owner ในระดับ Lake แล้วก็ให้ทีมๆนั้นในการดูแลจัดการเพียงเท่านี้ทุกทีมก็จะมี Data domain เป็นของตัวเอง🤩
Conclusion!
อยากจะบอกว่าวิธีการที่ได้อ่านไปนั้นเป็นเพียงแค่การจัดการข้อมูลเบื้องต้นเท่า ถึงแม้จะคล้ายๆ Data mesh แต่ก็ยังไม่ใช้ซะทีเดียวเพราะ Data mesh เป็นการทำงานร่วมกันทั้งองค์กร ซึ่งทุกคนต้องเข้าใจการใช้ Data และมอง Data as product ให้ได้ถึงจะสามารถเป็น Data mesh ที่สมบูรณ์
แต่ไม่ใช่ว่าจะต้องเป็น Data mesh ซะอย่างเดียวสำหรับเจ้า Dataplex เราก็สามารถเอา Dataplex ไปครอบคลุมการจัดการข้อมูลที่มีอยู่ได้ เช่นการแบ่ง Data เป็นหมวดหมู่จะได้จัดการสิทธิ์ในการเข้าถึงให้ง่ายยิ่งขึ้นไม่ต้องคอยมอบสิทธิ์ทีละ Dataset อะไรประมาณนั้น หวังว่าจะมีประโยชน์นะครับ
Ref!
https://cloud.google.com/architecture/data-meshhttps://cloud.google.com/architecture/data-mesh
Google cloud Datamesh white paper : https://services.google.com/fh/files/misc/build-a-modern-distributed-datamesh-with-google-cloud-whitepaper.pdf
Follow me here!
Linkedin:
https://www.linkedin.com/in/kriangsak-sumthong/
Facebook page:
https://www.facebook.com/profile.php?id=61563097228247
Medium:
https://medium.com/@puk.kriangsak
Leave a comment