กรณีใช้งาน
ย้อนกลับไปป์ไลน์ ETL ประสิทธิภาพสูงสำหรับ web asset
ระบบ ETL ที่ใช้ gRPC, RocksDB และ object storage เพื่อประมวลผลและกระจาย web asset หลายพันล้านรายการได้อย่างน่าเชื่อถือ
ภาพรวม
บริษัท AI แห่งหนึ่งต้องประมวลผลและกระจายข้อมูล web asset แบบมีโครงสร้างในปริมาณมหาศาล เมื่อระบบต้องรองรับ throughput ระดับนี้ การส่ง record จาก service หนึ่งไปยังอีก service เป็นเพียงส่วนหนึ่งของโจทย์เท่านั้น ไปป์ไลน์ยังต้องทำงานได้อย่างน่าเชื่อถือ พร้อมเปิดทางให้วิศวกรตรวจตัวอย่างข้อมูล สืบหาข้อมูลที่ผิดปกติ และพบปัญหาได้ตั้งแต่เนิ่น ๆ
FerrisDev สร้างซอฟต์แวร์ตามรูปแบบ extract, transform, load (ETL) ที่ใช้กันอย่างแพร่หลาย ระบบรับข้อมูลจาก upstream service แปลงให้อยู่ในโครงสร้างที่ต้องการ แล้วส่งผลลัพธ์ไปยัง storage และ downstream system
เมื่อขนาดข้อมูลเปลี่ยนโจทย์ของระบบ
ข้อผิดพลาดเล็กน้อยด้านคุณภาพข้อมูลหรือการประมวลผลจะมีต้นทุนสูงเมื่อเกิดซ้ำกับ asset หลายพันล้านรายการ วิศวกรจึงต้องตรวจ data flow ที่กำลังทำงาน ดูตัวอย่างที่เป็นตัวแทน และวินิจฉัยความล้มเหลวได้โดยไม่ต้องรอให้การประมวลผลทั้งรอบเสร็จสิ้น
ไปป์ไลน์จึงต้องรักษา throughput อย่างต่อเนื่องและมีเครื่องมือสำหรับการปฏิบัติงาน ระบบต้องสื่อสารกับ service อื่น ติดตาม processing metadata จัดเก็บ asset และเปิดเผยสถานะภายในมากพอให้พบปัญหาขณะที่ผลกระทบยังอยู่ในวงจำกัด
สถาปัตยกรรมของไปป์ไลน์
ระบบทำงานตามไปป์ไลน์ ETL แบบมาตรฐาน:
- Extract: service แลกเปลี่ยน record แบบมีโครงสร้างผ่าน gRPC
- Transform: worker ตรวจสอบและแปลง record ให้อยู่ในรูปแบบที่ downstream consumer ต้องการ โดย RocksDB เก็บ processing metadata ไว้ใกล้กับ worker
- Load: asset ถูกเขียนลง object storage ส่วนผลลัพธ์แบบมีโครงสร้างถูกกระจายไปยัง service ที่นำข้อมูลไปใช้
เครื่องมือสำหรับการปฏิบัติงาน
นอกจากเส้นทางประมวลผลหลักแล้ว เครื่องมือวินิจฉัยยังช่วยให้วิศวกรตรวจไปป์ไลน์และสุ่มดูข้อมูลในแต่ละขั้นตอน จึงมองเห็น record ที่มีรูปแบบผิด ข้อมูลนำเข้าที่ไม่คาดคิด และความล้มเหลวในการประมวลผล ก่อนจะกระทบข้อมูลส่วนใหญ่
ผลลัพธ์
ไปป์ไลน์ production ประมวลผล web asset หลายพันล้านรายการได้อย่างน่าเชื่อถือ และส่งข้อมูลแบบมีโครงสร้างให้ผลิตภัณฑ์ AI และข้อมูลอัจฉริยะของบริษัท
สถาปัตยกรรมนี้เหมาะกับงานแบบใด
สถาปัตยกรรมนี้เหมาะกับบริษัทที่ต้องส่งข้อมูลเฉพาะทางขนาดใหญ่ผ่าน service และระบบจัดเก็บหลายส่วน โดยเฉพาะงานที่ throughput มีความสำคัญ ขณะเดียวกันวิศวกรก็ต้องตรวจข้อมูลที่กำลังไหลผ่านระบบและวินิจฉัยความล้มเหลวก่อนปัญหาจะกระจายไปทั่วการประมวลผลรอบใหญ่