Skip to main content

Introduction

Data Engineering

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

คำกล่าวที่ว่าข้อมูลก็เหมือนน้ำมัน น้ำมันก็ต้องผ่านกระบวนการต่างๆ เพื่อให้น้ำมันนั้นสามารถนำมาใช้งานได้ ข้อมูลก็เช่นกัน จะต้องผ่านกระบวนการต่างๆ เพื่อให้ข้อมูลนั้นมีคุณค่าได้

Data Sources

ในระบบแต่ละระบบจะมีการเก็บข้อมูลเพื่อนำเอาไปใช้งานต่อ ไม่ว่าจะเป็นระบบการซื้อสินค้าออนไลน์ หรือระบบดูหนังออนไลน์ก็ตาม ซึ่งข้อมูลในระบบเหล่านั้น เราสามารถได้มาจากหลายๆ แหล่งด้วยกัน หนึ่งในนั้นคือ ข้อมูลจากการใช้งานของผู้ใช้ระบบ (User-Generated Data) ได้แก่ การกรอกฟอร์ม การกดปุ่มบนหน้าเว็บ การเลื่อนหน้าแอพพลิเคชั่น เป็นต้น

แหล่งต่อไปคือข้อมูลที่ได้จากเครื่องจักร หรือเครื่องคอมพิวเตอร์ (System-Generated Data) เช่น Logs ต่างๆ หรือพวก ข้อมูล Meta ที่เอาไว้บอกลักษณะของข้อมูลอีกที

Data Pipelines

Data Pipelines คือรากฐานของความสำเร็จในการทำ Data Analytics และ Machine Learning การเคลื่อนย้ายข้อมูลจากหลายๆ แหล่งข้อมูลที่แตกต่างกัน และนำมาประมวลผลเพื่อที่จะให้บริบทในการวิเคราะห์ข้อมูล คือความแตกต่างระหว่างการมีข้อมูลอยู่กับการสกัดเอาคุณค่าออกจากข้อมูล

กล่าวได้ว่า Data Pipelines เป็นเซตของขั้นตอนการประมวลผลที่เคลื่อนย้าย และเปลี่ยนรูปข้อมูลจากหลายๆ แหล่งข้อมูลที่ต่างกัน ไปที่จุดหมายปลายทาง ที่ๆ คุณค่าสามารถถูกนำไปใช้ได้

Databases

Database คืออะไร? Database หรือ ฐานข้อมูล คือ ระบบคอมพิวเตอร์ที่เก็บรวบรวมชุดของข้อมูลแบบมีโครงสร้าง ที่มีความสัมพันธ์ซึ่งกันและกัน

ความท้าทายในโลก Data Engineering

  • External Dependencies - เราจะจัดการระบบที่อยู่นอกเหนือการควบคุมอย่างพวก external systems เช่น S3 หรือ Redis ได้อย่างไร?
  • Python Dependencies - เราจะจัดการ package ต่าง ๆ และการควบคุมเวอร์ชั่นต่าง ๆ ในระบบเราอย่างไรได้บ้าง?
  • Developer Experience - เราจะทำสภาพแวดล้อมการพัฒนา data pipeline ของเราได้อย่างไรให้นักพัฒนามีประสบการณ์ในการพัฒนาที่ดี
  • Infrastructure - เราจะเอา data pipeline ของเรารันอยู่ที่ไหน?
  • Observability - เราจะมีวิธีทำให้มั่นใจได้อย่างไรว่า data pipeline ของเรายังทำงานปกติอยู่?
  • Testing - เรามีวิธีการทดสอบข้อมูล หรือระบบต่าง ๆ อย่างไรบ้าง?
  • Deployments - เวลาที่เรามีการแก้ไขโค้ด หรือสร้าง data pipeline ขึ้นมาใหม่ เรามีการ deploy อย่างไร?
  • Parameterization - ถ้าเราต้องการที่จะรัน data pipeline ของเราในหลาย ๆ configurations เราสามารถทำอย่างไรได้บ้าง?
  • Complexity - เราจะจัดการความซับซ้อนต่าง ๆ ที่เกิดขึ้นในระบบ และที่ data pipeline ของเราอย่างไร?