یک بنچمارک Node.js نشان می‌دهد که عملکرد پنج سرویس محبوب video-API بسته به اندازه فایل، تفاوت‌های فاحشی با هم دارند. در یک اتصال محدود شده‌ی 4G (با سرعت 10 Mbps)، FastPix در تست فایل‌های بزرگ برتری داشت، در حالی که Cloudinary در فایل‌های کوچک‌تر پیشتاز بود.

چرا این تست اهمیت دارد

ارائه‌دهندگان video-API در صفحات بازاریابی خود مدام از «سریع‌ترین آپلود» یا «پخش فوری» دم می‌زنند. این ادعاها معمولاً بر پایه فایل‌های تستِ گلچین‌شده‌ای است که دقیقاً در نقطه بهینه (sweet spot) هر ارائه‌دهنده قرار دارند. وقتی یک تیم محصول تصمیم خود برای انتخاب فروشنده را بر اساس چنین تیترهایی می‌گیرد، با خطر عدم تطابق بین تأخیر (latency) تبلیغ‌شده و دنیای واقعی مواجه می‌شود؛ به‌ویژه اگر کاربران آن‌ها محتواهایی با اندازه‌ها یا کیفیت شبکه متفاوت آپلود کنند.

بنچمارک چگونه ساخته شد

نویسنده یک ابزار تست (harness) ساده در Node.js نوشت که دو معیار را برای هر آپلود اندازه‌گیری می‌کند:

  • زمان آپلود (Upload time) – ثانیه‌های واقعی مورد نیاز برای ارسال بایت‌های خام به API.
  • زمان تا آماده‌سازی (Time-to-ready) – فاصله زمانی از شروع آپلود تا زمانی که ویدیو قابل پخش باشد (یعنی زمانی که API وضعیت فایل را به عنوان قابل پخش گزارش دهد).

پنج سرویس تحت یک اسکریپت مشابه قرار گرفتند: FastPix، Mux، api.video، Cloudinary و Gumlet. تمام تست‌ها از یک دستگاه انجام شد و سرعت شبکه برای شبیه‌سازی تجربه معمول موبایل در شبکه 4G، به 10 Mbps محدود شد. از دو فایل نمونه استفاده شد:

  • فایل بزرگ: ۱۷۷ مگابایت، مشابه محتواهای طولانی یا فایل‌های اصلی دوربین با رزولوشن بالا.
  • فایل کوچک: ۶۵ مگابایت، مشابه کلیپ‌های کوتاه یا قطعات ویدئویی شبکه‌های اجتماعی.

این ابزار تست، فرآیند آپلود را خودکار کرد و سپس وضعیت endpoint هر ارائه‌دهنده را تا رسیدن ویدیو به حالت «آماده» (ready) بررسی کرد و هر دو برچسب زمانی را ثبت نمود.

آنچه اعداد فاش می‌کنند

فایل بزرگ (۱۷۷ مگابایت)

  • FastPix کمترین زمان آپلود و سریع‌ترین زمان کلی تا آماده‌سازی را ثبت کرد که آن را به پیشتاز بی‌چون و چرای انتقال حجم‌های بالا تبدیل می‌کند.
  • Mux سریع‌ترین زمان شروع سرد (cold-startup) را داشت، به این معنی که پس از آماده شدن ویدیو، اولین فریم زودتر نمایش داده شد.

فایل کوچک (۶۵ مگابایت)

  • Cloudinary کلیپ را تنها در ۲ ثانیه پردازش کرد و از تمام سرویس‌های دیگر پیشی گرفت.
  • FastPix به رتبه پنجم سقوط کرد.

پیامدها برای انتخاب یک video API

  • آپلودهای طولانی یا با رزولوشن بالا – سرویس‌هایی را در اولویت قرار دهید که در پهنای باند خالص و سرعت دریافت (ingest) عالی هستند. در این تست، FastPix انتخاب مطمئن‌تری است.
  • کلیپ‌های کوتاه و درخواستی (on-demand) – APIهایی را ترجیح دهید که تأخیر شروع سرد را به حداقل می‌رسانند. چرخه ۲ ثانیه‌ای Cloudinary نشان می‌دهد که این سرویس برای سناریوهای پخش فوری مناسب است.

فراتر از اعداد خام، تیم‌ها باید سطوح قیمت‌گذاری، پوشش جغرافیایی CDN و مجموعه‌ ویژگی‌هایی مانند گزینه‌های ترنسکدینگ (transcoding) یا DRM را نیز بسنجند. جدول رده‌بندی یک ارائه‌دهنده می‌تواند برای یک بررسی اولیه سریع مفید باشد، اما نباید جایگزین تست‌های اختصاصی بر اساس حجم کاری (workload) شود.

انجام تست شخصی خودتان

  1. جریان را اسکریپت کنید – از زبانی که به آن اعتماد دارید (Node.js، Python و غیره) برای آپلود فایل و بررسی مداوم (poll) وضعیت endpoint تا ظاهر شدن پرچم «آماده» (ready) استفاده کنید.
  2. محیط را کنترل کنید – تست هر ارائه‌دهنده را از یک دستگاه و شبکه یکسان انجام دهید تا متغیرهای مزاحم حذف شوند.
  3. پهنای باند را محدود کنید – سرعت اتصال را به گونه‌ای محدود کنید که بازتاب‌دهنده کندترین بخش کاربران مورد انتظار شما باشد (مثلاً 10 Mbps برای 4G).
  4. از دارایی‌های واقعی استفاده کنید – کلیپ‌های تست عمومی را با ویدیوهایی جایگزین کنید که مشابه آپلودهای معمول محصول شما هستند؛ کدک، رزولوشن و نرخ بیت (bitrate) می‌توانند بر خط لوله‌های دریافت (ingest pipelines) تأثیر بگذارند.

تنها بنچمارکی که واقعاً اهمیت دارد، بنچمارکی است که الگوهای ترافیکی و انتظارات کیفی خودتان را منعکس کند.

آنچه باید در آینده زیر نظر داشت

با تکامل video-APIها، آن‌ها مسیرهای دریافت جدید، لایه‌های کش در لبه (edge caching) و ترنسکدینگ مبتنی بر هوش مصنوعی را عرضه می‌کنند. داشتن یک بنچمارک خودکار در خط لوله CI می‌تواند باعث شناسایی عقب‌گردها (regressions) قبل از تأثیرگذاری بر کاربران شود. نتایج به اشتراک گذاشته شده توسط جامعه، مانند آنچه در زیر لینک شده است، به ایجاد تصویری شفاف‌تر از این اکوسیستم کمک می‌کند.

Source: https://dev.to/masonwritescode/benchmark-video-apis-yourself-upload-to-playable-measured-across-five-providers-3ap0