ผลการทดสอบประสิทธิภาพ (benchmark) ด้วย Node.js แสดงให้เห็นว่าบริการ video-API ยอดนิยม 5 ราย มีประสิทธิภาพที่แตกต่างกันอย่างชัดเจนขึ้นอยู่กับขนาดของไฟล์ ในการทดสอบผ่านการจำลองการเชื่อมต่อ 4G ที่ถูกจำกัดความเร็ว (10 Mbps) FastPix ครองแชมป์ในการทดสอบไฟล์ขนาดใหญ่ ในขณะที่ Cloudinary ทำความเร็วได้ดีกว่ามากในกรณีที่เป็นคลิปขนาดเล็ก
ทำไมการทดสอบนี้จึงสำคัญ
ผู้ให้บริการ Video-API มักจะโฆษณาว่า "อัปโหลดเร็วที่สุด" หรือ "เล่นได้ทันที" บนหน้าการตลาดของตน คำกล่าวอ้างเหล่านี้มักจะอ้างอิงจากไฟล์ทดสอบที่คัดสรรมาเป็นพิเศษเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดสำหรับผู้ให้บริการแต่ละราย เมื่อทีมผลิตภัณฑ์ตัดสินใจเลือกผู้ให้บริการโดยอิงจากพาดหัวข่าวเหล่านี้ พวกเขามีความเสี่ยงที่จะพบกับความล่าช้า (latency) ที่ไม่ตรงกับสิ่งที่โฆษณาไว้ในโลกความเป็นจริง โดยเฉพาะอย่างยิ่งหากผู้ใช้งานมีการอัปโหลดเนื้อหาที่มีขนาดหรือคุณภาพเครือข่ายที่แตกต่างกัน
วิธีการสร้างการทดสอบประสิทธิภาพ
ผู้เขียนได้เขียนโปรแกรมทดสอบ (harness) อย่างง่ายด้วย Node.js เพื่อวัดค่าสองตัวแปรสำหรับการอัปโหลดแต่ละครั้ง:
- Upload time – เวลาที่ใช้จริง (wall-clock seconds) ในการส่งข้อมูลดิบไปยัง API
- Time-to-ready – ช่วงเวลาตั้งแต่เริ่มการอัปโหลดจนกระทั่งวิดีโอสามารถสตรีมได้ (กล่าวคือ API รายงานว่าไฟล์พร้อมใช้งานแล้ว)
มีบริการ 5 รายที่ผ่านสคริปต์เดียวกัน ได้แก่: FastPix, Mux, api.video, Cloudinary และ Gumlet การทดสอบทั้งหมดรันจากเครื่องเดียวกัน โดยจำกัดความเร็วเครือข่ายไว้ที่ 10 Mbps เพื่อจำลองประสบการณ์การใช้งาน 4G บนมือถือทั่วไป โดยใช้ไฟล์ตัวแทนสองขนาด:
- Large file: 177 MB ซึ่งใกล้เคียงกับเนื้อหาที่มีความยาวหรือไฟล์ต้นฉบับจากกล้องที่มีความละเอียดสูง
- Small file: 65 MB ซึ่งเป็นขนาดปกติของคลิปสั้นๆ หรือคลิปบนโซเชียลมีเดีย
โปรแกรมทดสอบจะทำการอัปโหลดโดยอัตโนมัติ จากนั้นจะตรวจสอบ (poll) status endpoint ของผู้ให้บริการแต่ละรายจนกว่าวิดีโอจะอยู่ในสถานะ "ready" และบันทึกเวลาทั้งสองช่วงไว้
ตัวเลขเหล่านี้บอกอะไรเรา
Large file (177 MB)
- FastPix มีเวลาอัปโหลดต่ำที่สุดและมีเวลา time-to-ready โดยรวมเร็วที่สุด ทำให้เป็นผู้นำที่ชัดเจนสำหรับการถ่ายโอนข้อมูลจำนวนมาก
- Mux ให้ค่า cold-startup ที่เร็วที่สุด ซึ่งหมายความว่าเฟรมแรกจะปรากฏขึ้นเร็วที่สุดหลังจากวิดีโอถูกระบุว่าพร้อมใช้งาน
Small file (65 MB)
- Cloudinary ประมวลผลคลิปได้ในเวลาเพียง 2 วินาที ซึ่งชนะบริการอื่นๆ ทั้งหมด
- FastPix ตกลงมาอยู่อันดับที่ห้า
นัยสำคัญในการเลือก video API
- การอัปโหลดเนื้อหาที่มีความยาวหรือความละเอียดสูง – ควรให้ความสำคัญกับบริการที่โดดเด่นด้าน throughput และความเร็วในการนำเข้าข้อมูล (ingest speed) ในการทดสอบนี้ FastPix คือตัวเลือกที่ปลอดภัยกว่า
- คลิปสั้นๆ แบบ on-demand – ควรเลือก API ที่ลดความล่าช้าของ cold-startup ให้เหลือน้อยที่สุด การประมวลผลที่รวดเร็วเพียง 2 วินาทีของ Cloudinary บ่งบอกว่าเหมาะสำหรับสถานการณ์ที่ต้องการการเล่นวิดีโอทันที
นอกเหนือจากตัวเลขดิบๆ แล้ว ทีมงานควรพิจารณาเรื่องระดับราคา, ความครอบคลุมของ CDN ในแต่ละภูมิภาค และชุดฟีเจอร์ต่างๆ เช่น ตัวเลือกการแปลงรหัส (transcoding) หรือ DRM อันดับในตารางเปรียบเทียบของผู้ให้บริการอาจช่วยในการตรวจสอบเบื้องต้นได้ แต่ไม่ควรนำมาใช้แทนการทดสอบตามลักษณะการใช้งานจริง (workload-specific test)
การทดสอบด้วยตัวเอง
- เขียนสคริปต์ขั้นตอนการทำงาน (Script the flow) – ใช้ภาษาที่คุณมั่นใจ (Node.js, Python ฯลฯ) เพื่ออัปโหลดไฟล์และตรวจสอบ status endpoint จนกว่าจะพบ flag "ready"
- ควบคุมสภาพแวดล้อม (Control the environment) – รันการทดสอบของผู้ให้บริการทุกรายจากเครื่องและเครือข่ายเดียวกันเพื่อขจัดความแปรปรวน
- จำกัดแบนด์วิดท์ (Throttle bandwidth) – จำกัดความเร็วการเชื่อมต่อให้สะท้อนถึงกลุ่มผู้ใช้งานที่ช้าที่สุดที่คุณคาดไว้ (เช่น 10 Mbps สำหรับ 4G)
- ใช้ไฟล์จริง (Use real assets) – แทนที่คลิปทดสอบทั่วไปด้วยฟุตเทจที่สะท้อนถึงการอัปโหลดปกติของผลิตภัณฑ์คุณ เนื่องจาก codec, ความละเอียด และ bitrate สามารถส่งผลต่อกระบวนการนำเข้าข้อมูล (ingest pipelines) ได้
การทดสอบประสิทธิภาพเพียงอย่างเดียวที่มีความหมายจริงๆ คือการทดสอบที่สะท้อนถึงรูปแบบการใช้งาน (traffic patterns) และความคาดหวังด้านคุณภาพของคุณเอง
สิ่งที่ควรจับตามองต่อไป
เมื่อ video API พัฒนาขึ้น พวกเขาจะเปิดตัวช่องทางการนำเข้าข้อมูล (ingest pathways) ใหม่ๆ, เลเยอร์การทำ edge caching และการแปลงรหัสที่ขับเคลื่อนด้วย AI การมีระบบทดสอบประสิทธิภาพอัตโนมัติใน CI pipeline ของคุณสามารถช่วยตรวจพบปัญหาประสิทธิภาพที่ลดลง (regressions) ก่อนที่จะส่งผลกระทบต่อผู้ใช้งาน ผลลัพธ์ที่แชร์โดยชุมชน เช่น ลิงก์ด้านล่างนี้ ยังช่วยสร้างภาพรวมของระบบนิเวศที่โปร่งใสยิ่งขึ้น
