ഒരു Node.js ബെഞ്ച്മാർക്ക് പരിശോധനയിൽ, ഫയൽ വലുപ്പത്തിനനുസരിച്ച് അഞ്ച് പ്രശസ്തമായ വീഡിയോ-API സേവനങ്ങളുടെ പ്രകടനം വലിയ വ്യത്യാസം കാണിക്കുന്നു. 10 Mbps വേഗതയുള്ള ഒരു 4G കണക്ഷനിൽ, വലിയ ഫയലുകളുടെ പരിശോധനയിൽ FastPix മുന്നേറിയപ്പോൾ, ചെറിയ ക്ലിപ്പുകളുടെ കാര്യത്തിൽ Cloudinary വേഗത്തിൽ മുന്നിലെത്തി.

ഈ പരിശോധനയുടെ പ്രസക്തി

വീഡിയോ-API സേവനദാതാക്കൾ അവരുടെ മാർക്കറ്റിംഗ് പേജുകളിൽ എപ്പോഴും "ഏറ്റവും വേഗതയേറിയ അപ്‌ലോഡ്" അല്ലെങ്കിൽ "തൽക്ഷണ പ്ലേബാക്ക്" (instant playback) എന്നിവ വാഗ്ദാനം ചെയ്യാറുണ്ട്. ഇത്തരം അവകാശവാദങ്ങൾ സാധാരണയായി ഓരോ സേവനദാതാവിനും ഏറ്റവും അനുയോജ്യമായ രീതിയിൽ തിരഞ്ഞെടുക്കപ്പെട്ട ടെസ്റ്റ് ഫയലുകളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്. ഇത്തരം തലക്കെട്ടുകൾ മാത്രം നോക്കി ഒരു പ്രൊഡക്റ്റ് ടീം ഒരു വെണ്ടറെ തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, പരസ്യപ്പെടുത്തിയതും യഥാർത്ഥ സാഹചര്യങ്ങളിലെയും ലേറ്റൻസി (latency) തമ്മിൽ വലിയ വ്യത്യാസം വരാൻ സാധ്യതയുണ്ട്. പ്രത്യേകിച്ച് ഉപയോക്താക്കൾ വ്യത്യസ്ത വലുപ്പത്തിലുള്ളതോ അല്ലെങ്കിൽ വ്യത്യസ്ത നെറ്റ്‌വർക്ക് ഗുണനിലവാരമുള്ളതോ ആയ ഉള്ളടക്കങ്ങൾ അപ്‌ലോഡ് ചെയ്യുമ്പോഴാണ് ഈ പ്രശ്നം ഉണ്ടാകുന്നത്.

ബെഞ്ച്മാർക്ക് എങ്ങനെ തയ്യാറാക്കി

ഓരോ അപ്‌ലോഡിനും രണ്ട് മാനദണ്ഡങ്ങൾ (metrics) അളക്കുന്നതിനായി രചയിതാവ് Node.js-ൽ ഒരു ലളിതമായ ഹാർനെസ്സ് (harness) തയ്യാറാക്കി:

  • Upload time – റോ ഡാറ്റ (raw bytes) API-ലേക്ക് എത്തിക്കാൻ ആവശ്യമായ സെക്കൻഡുകൾ.
  • Time-to-ready – അപ്‌ലോഡ് ആരംഭിച്ചത് മുതൽ വീഡിയോ സ്ട്രീം ചെയ്യാൻ പാകമാകുന്ന സമയം വരെ (അതായത്, വീഡിയോ പ്ലേ ചെയ്യാൻ സാധിക്കുമെന്ന് API അറിയിക്കുന്നത് വരെ) എടുക്കുന്ന സമയം.

അഞ്ച് സേവനങ്ങളാണ് ഒരേ സ്ക്രിപ്റ്റിലൂടെ പരീക്ഷിച്ചത്: FastPix, Mux, api.video, Cloudinary, പിന്നെ Gumlet. സാധാരണ മൊബൈൽ 4G അനുഭവം ലഭിക്കുന്നതിനായി നെറ്റ്‌വർക്ക് വേഗത 10 Mbps ആയി കുറച്ചുകൊണ്ട് ഒരേ മെഷീനിൽ നിന്നാണ് എല്ലാ പരിശോധനകളും നടത്തിയത്. രണ്ട് തരം ഫയലുകളാണ് ഉപയോഗിച്ചത്:

  • Large file: 177 MB, ദീർഘമായ വീഡിയോകൾ അല്ലെങ്കിൽ ഉയർന്ന റെസല്യൂഷനുള്ള ക്യാമറ മാസ്റ്ററുകൾക്ക് സമാനമായത്.
  • Small file: 65 MB, ചെറിയ ക്ലിപ്പുകൾ അല്ലെങ്കിൽ സോഷ്യൽ മീഡിയ സ്നിപ്പറ്റുകൾക്ക് സമാനമായത്.

ഈ ഹാർനെസ്സ് അപ്‌ലോഡ് പ്രക്രിയ ഓട്ടോമേറ്റ് ചെയ്യുകയും, വീഡിയോ “ready” അവസ്ഥയിൽ എത്തുന്നതുവരെ ഓരോ സേവനദാതാവിന്റെയും സ്റ്റാറ്റസ് എൻഡ്പോയിന്റ് (status endpoint) പരിശോധിക്കുകയും ചെയ്തുകൊണ്ട് രണ്ട് ടൈംസ്റ്റാമ്പുകളും രേഖപ്പെടുത്തുകയും ചെയ്തു.

കണക്കുകൾ എന്ത് വെളിപ്പെടുത്തുന്നു

Large file (177 MB)

  • FastPix ഏറ്റവും കുറഞ്ഞ അപ്‌ലോഡ് സമയവും ഏറ്റവും വേഗത്തിലുള്ള 'time-to-ready' സമയവും രേഖപ്പെടുത്തി, ഇത് വലിയ ഫയലുകൾ കൈമാറുന്നതിന് ഏറ്റവും മികച്ചതാക്കുന്നു.
  • Mux ഏറ്റവും വേഗത്തിലുള്ള 'cold-startup' നൽകി, അതായത് വീഡിയോ റെഡിയായ ഉടനെ തന്നെ അതിന്റെ ആദ്യ ഫ്രെയിം വേഗത്തിൽ കാണാൻ സാധിച്ചു.

Small file (65 MB)

  • Cloudinary വെറും 2 സെക്കൻഡുകൾ കൊണ്ട് ക്ലിപ്പ് പ്രോസസ്സ് ചെയ്തു, ഇത് മറ്റ് എല്ലാ സേവനങ്ങളെക്കാളും മികച്ചതാണ്.
  • FastPix അഞ്ചാം സ്ഥാനത്തേക്ക് താഴ്ന്നു.

ഒരു വീഡിയോ API തിരഞ്ഞെടുക്കുമ്പോൾ ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

  • Long-form or high-resolution uploads – ഡാറ്റ കൈമാറ്റ വേഗതയിലും (throughput) ഇൻജസ്റ്റ് സ്പീഡിലും (ingest speed) മികവ് പുലർത്തുന്ന സേവനങ്ങൾക്ക് മുൻഗണന നൽകുക. ഈ പരിശോധനയിൽ FastPix ആണ് കൂടുതൽ സുരക്ഷിതമായ തിരഞ്ഞെടുപ്പ്.
  • Short, on-demand clips – 'cold-startup' ലേറ്റൻസി കുറയ്ക്കുന്ന API-കൾ തിരഞ്ഞെടുക്കുക. Cloudinary-യുടെ 2 സെക്കൻഡ് turnaround സമയം സൂചിപ്പിക്കുന്നത് അത് തൽക്ഷണ പ്ലേബാക്ക് ആവശ്യങ്ങൾക്ക് അനുയോജ്യമാണെന്നാണ്.

വെറും കണക്കുകൾക്ക് അപ്പുറം, പ്രൈസിംഗ് ടയറുകൾ (pricing tiers), ജിയോഗ്രാഫിക് CDN കവറേജ്, ട്രാൻസ്കോഡിംഗ് ഓപ്ഷനുകൾ അല്ലെങ്കിൽ DRM പോലുള്ള ഫീച്ചറുകൾ എന്നിവയും ടീമുകൾ പരിഗണിക്കേണ്ടതുണ്ട്. ഒരു സേവനദാതാവിന്റെ ലീഡർബോർഡ് ഒരു പ്രാഥമിക പരിശോധനയ്ക്ക് സഹായിച്ചേക്കാം, എന്നാൽ അത് നിങ്ങളുടെ പ്രത്യേക ആവശ്യങ്ങൾക്കനുസരിച്ചുള്ള (workload-specific) പരിശോധനയ്ക്ക് പകരമാവരുത്.

സ്വന്തമായി ഒരു പരിശോധന നടത്താൻ

  1. Script the flow – നിങ്ങൾക്ക് വിശ്വാസമുള്ള ഒരു പ്രോഗ്രാമിംഗ് ഭാഷ (Node.js, Python മുതലായവ) ഉപയോഗിച്ച് ഒരു ഫയൽ അപ്‌ലോഡ് ചെയ്യാനും “ready” ഫ്ലാഗ് കാണുന്നത് വരെ സ്റ്റാറ്റസ് എൻഡ്പോയിന്റ് പരിശോധിക്കാനും ഒരു സ്ക്രിപ്റ്റ് തയ്യാറാക്കുക.
  2. Control the environment – വ്യത്യാസങ്ങൾ ഒഴിവാക്കുന്നതിനായി എല്ലാ സേവനങ്ങളുടെയും പരിശോധന ഒരേ മെഷീനിൽ നിന്നും ഒരേ നെറ്റ്‌വർക്കിൽ നിന്നും നടത്തുക.
  3. Throttle bandwidth – നിങ്ങളുടെ ഉപയോക്താക്കളിൽ ഏറ്റവും കുറഞ്ഞ വേഗതയുള്ള വിഭാഗത്തെ (ഉദാഹരണത്തിന് 4G-ക്ക് 10 Mbps) പ്രതിനിധീകരിക്കുന്ന രീതിയിൽ കണക്ഷൻ വേഗത പരിമിതപ്പെടുത്തുക.
  4. Use real assets – സാധാരണ ടെസ്റ്റ് ക്ലിപ്പുകൾക്ക് പകരം നിങ്ങളുടെ പ്രൊഡക്റ്റിൽ സാധാരണയായി അപ്‌ലോഡ് ചെയ്യുന്ന തരത്തിലുള്ള വീഡിയോകൾ ഉപയോഗിക്കുക; കോഡെക് (codec), റെസല്യൂഷൻ, ബിറ്റ്‌റേറ്റ് എന്നിവ ഇൻജസ്റ്റ് പൈപ്പ്‌ലൈനുകളെ ബാധിച്ചേക്കാം.

നിങ്ങളുടെ സ്വന്തം ട്രാഫിക് രീതികളെയും ഗുണനിലവാര പ്രതീക്ഷകളെയും പ്രതിഫലിപ്പിക്കുന്ന ബെഞ്ച്മാർക്ക് മാത്രമാണ് യഥാർത്ഥത്തിൽ പ്രസക്തമാകുന്നത്.

ഇനി ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ

വീഡിയോ API-കൾ വികസിച്ചുകൊണ്ടിരിക്കുമ്പോൾ, അവ പുതിയ ഇൻജസ്റ്റ് പാതകളും (ingest pathways), എഡ്ജ് കാഷിംഗ് ലെയറുകളും (edge caching layers), AI അധിഷ്ഠിത ട്രാൻസ്കോഡിംഗും അവതരിപ്പിക്കുന്നുണ്ട്. നിങ്ങളുടെ CI പൈപ്പ്‌ലൈനിൽ ഒരു ഓട്ടോമേറ്റഡ് ബെഞ്ച്മാർക്ക് നിലനിർത്തുന്നത് ഉപയോക്താക്കളെ ബാധിക്കുന്നതിന് മുമ്പ് തന്നെ പിഴവുകൾ (regressions) കണ്ടെത്താൻ സഹായിക്കും. താഴെ നൽകിയിരിക്കുന്ന ലിങ്ക് പോലെ കമ്മ്യൂണിറ്റി പങ്കുവെക്കുന്ന ഫലങ്ങൾ ഈ മേഖലയെക്കുറിച്ച് കൂടുതൽ സുതാര്യമായ ഒരു ചിത്രം നൽകാൻ സഹായിക്കും.

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