ਇੱਕ Node.js ਬੈਂਚਮਾਰਕ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਫਾਈਲ ਦੇ ਆਕਾਰ ਦੇ ਆਧਾਰ 'ਤੇ ਪੰਜ ਪ੍ਰਸਿੱਧ ਵੀਡੀਓ-API ਸੇਵਾਵਾਂ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ (performance) ਵਿੱਚ ਵੱਡਾ ਫਰਕ ਆਉਂਦਾ ਹੈ। ਇੱਕ ਥਰੌਟਲਡ (throttled) 4G ਕਨੈਕਸ਼ਨ (10 Mbps) 'ਤੇ, ਵੱਡੀਆਂ ਫਾਈਲਾਂ ਦੇ ਟੈਸਟ ਵਿੱਚ FastPix ਦਾ ਦਬਦਬਾ ਰਿਹਾ, ਜਦੋਂ ਕਿ ਛੋਟੇ ਕਲਿੱਪ ਲਈ Cloudinary ਸਭ ਤੋਂ ਅੱਗੇ ਰਿਹਾ।
ਇਹ ਟੈਸਟ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ
ਵੀਡੀਓ-API ਪ੍ਰੋਵਾਈਡਰ ਅਕਸਰ ਆਪਣੇ ਮਾਰਕੀਟਿੰਗ ਪੇਜਾਂ 'ਤੇ "ਸਭ ਤੋਂ ਤੇਜ਼ ਅੱਪਲੋਡ" ਜਾਂ "ਇੰਸਟੈਂਟ ਪਲੇਬੈਕ" ਦਾ ਦਾਅਵਾ ਕਰਦੇ ਹਨ। ਇਹ ਦਾਅਵੇ ਆਮ ਤੌਰ 'ਤੇ ਚੁਣੇ ਹੋਏ ਅਜਿਹੇ ਟੈਸਟ ਫਾਈਲਾਂ 'ਤੇ ਅਧਾਰਤ ਹੁੰਦੇ ਹਨ ਜੋ ਹਰੇਕ ਪ੍ਰੋਵਾਈਡਰ ਦੀ ਸਭ ਤੋਂ ਵਧੀਆ ਕਾਰਗੁਜ਼ਾਰੀ (sweet spot) ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। ਜਦੋਂ ਕੋਈ ਪ੍ਰੋਡਕਟ ਟੀਮ ਅਜਿਹੀਆਂ ਹੈਡਲਾਈਨਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਕਿਸੇ ਵੈਂਡਰ (vendor) ਦੀ ਚੋਣ ਕਰਦੀ ਹੈ, ਤਾਂ ਉਹ ਵਿਗਿਆਪਿਤ ਅਤੇ ਅਸਲ-ਦੁਨੀਆ ਦੀ ਲੇਟੈਂਸੀ (latency) ਵਿਚਕਾਰ ਅੰਤਰ ਹੋਣ ਦਾ ਖਤਰਾ ਲੈਂਦੀ ਹੈ, ਖਾਸ ਕਰਕੇ ਜੇਕਰ ਉਹਨਾਂ ਦੇ ਯੂਜ਼ਰ ਵੱਖ-ਵੱਖ ਆਕਾਰ ਜਾਂ ਨੈੱਟਵਰਕ ਕੁਆਲਿਟੀ ਦੀ ਸਮੱਗਰੀ ਅੱਪਲੋਡ ਕਰਦੇ ਹਨ।
ਬੈਂਚਮਾਰਕ ਕਿਵੇਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ
ਲੇਖਕ ਨੇ Node.js ਵਿੱਚ ਇੱਕ ਸਧਾਰਨ ਹਾਰਨੈੱਸ (harness) ਲਿਖਿਆ ਜੋ ਹਰੇਕ ਅੱਪਲੋਡ ਲਈ ਦੋ ਮਾਪਦੰਡਾਂ (metrics) ਨੂੰ ਮਾਪਦਾ ਹੈ:
- Upload time – API ਨੂੰ ਰਅਅ ਬਾਈਟਸ (raw bytes) ਭੇਜਣ ਲਈ ਲੱਗੇ ਅਸਲ ਸੈਕਿੰਡ।
- Time-to-ready – ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਲੈ ਕੇ ਵੀਡੀਓ ਦੇ ਸਟ੍ਰੀਮ ਹੋਣ ਯੋਗ ਹੋਣ ਤੱਕ ਦਾ ਸਮਾਂ (ਯਾਨੀ, ਜਦੋਂ API ਦੱਸਦੀ ਹੈ ਕਿ ਐਸੇਟ ਪਲੇਅ ਹੋਣ ਯੋਗ ਹੈ)।
ਪੰਜ ਸੇਵਾਵਾਂ ਨੂੰ ਇੱਕੋ ਸਕ੍ਰਿਪਟ ਰਾਹੀਂ ਚਲਾਇਆ ਗਿਆ: FastPix, Mux, api.video, Cloudinary, ਅਤੇ Gumlet। ਸਾਰੇ ਟੈਸਟ ਇੱਕੋ ਮਸ਼ੀਨ ਤੋਂ ਚਲਾਏ ਗਏ, ਜਿਸ ਵਿੱਚ ਨੈੱਟਵਰਕ ਨੂੰ 10 Mbps ਤੱਕ ਸੀਮਤ (throttle) ਕੀਤਾ ਗਿਆ ਸੀ ਤਾਂ ਜੋ ਇੱਕ ਆਮ ਮੋਬਾਈਲ 4G ਅਨੁਭਵ ਦੀ ਨਕਲ ਕੀਤੀ ਜਾ ਸਕੇ। ਦੋ ਪ੍ਰਤੀਨਿਧ ਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਸੀ:
- Large file: 177 MB, ਜੋ ਲੰਬੇ ਸਮੇਂ ਦੇ ਕੰਟੈਂਟ ਜਾਂ ਹਾਈ-ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਕੈਮਰਾ ਮਾਸਟਰਾਂ ਦੇ ਬਰਾਬਰ ਹੈ।
- Small file: 65 MB, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਛੋਟੇ ਕਲਿੱਪ ਜਾਂ ਸੋਸ਼ਲ-ਮੀਡੀਆ ਸਨਿਪੇਟਸ ਲਈ ਹੁੰਦਾ ਹੈ।
ਹਾਰਨੈੱਸ ਨੇ ਅੱਪਲੋਡ ਨੂੰ ਆਟੋਮੇਟ ਕੀਤਾ, ਫਿਰ ਵੀਡੀਓ ਦੇ “ready” ਸਟੇਟ ਤੱਕ ਪਹੁੰਚਣ ਤੱਕ ਹਰੇਕ ਪ੍ਰੋਵਾਈਡਰ ਦੇ ਸਟੇਟਸ ਐਂਡਪੁਆਇੰਟ (status endpoint) ਦੀ ਜਾਂਚ ਕੀਤੀ ਅਤੇ ਦੋਵਾਂ ਟਾਈਮਸਟੈਂਪਸ ਨੂੰ ਰਿਕਾਰਡ ਕੀਤਾ।
ਅੰਕੜੇ ਕੀ ਦੱਸਦੇ ਹਨ
Large file (177 MB)
- FastPix ਨੇ ਸਭ ਤੋਂ ਘੱਟ ਅੱਪਲੋਡ ਸਮਾਂ ਅਤੇ ਸਭ ਤੋਂ ਤੇਜ਼ overall time-to-ready ਦਿਖਾਇਆ, ਜਿਸ ਨਾਲ ਇਹ ਬਲਕ ਟ੍ਰਾਂਸਫਰ (bulk transfers) ਲਈ ਸਪੱਸ਼ਟ ਲੀਡਰ ਬਣ ਗਿਆ।
- Mux ਨੇ ਸਭ ਤੋਂ ਤੇਜ਼ cold-startup ਦਿੱਤਾ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਵੀਡੀਓ ਦੇ ready ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਹਿਲਾ ਫਰੇਮ ਜਲਦੀ ਦਿਖਾਈ ਦਿੱਤਾ।
Small file (65 MB)
- Cloudinary ਨੇ ਕਲਿੱਪ ਨੂੰ ਸਿਰਫ਼ 2 ਸੈਕਿੰਡ ਵਿੱਚ ਪ੍ਰੋਸੈਸ ਕੀਤਾ, ਜੋ ਕਿ ਬਾਕੀ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਤੋਂ ਬਿਹਤਰ ਸੀ।
- FastPix ਪੰਜਵੇਂ ਸਥਾਨ 'ਤੇ ਆ ਗਿਆ।
ਵੀਡੀਓ API ਦੀ ਚੋਣ ਕਰਨ ਲਈ ਪ੍ਰਭਾਵ
- Long-form ਜਾਂ high-resolution ਅੱਪਲੋਡ – ਉਹਨਾਂ ਸੇਵਾਵਾਂ ਨੂੰ ਪਹਿਲ ਦਿਓ ਜੋ raw throughput ਅਤੇ ingest speed ਵਿੱਚ ਵਧੀਆ ਹਨ। ਇਸ ਟੈਸਟ ਵਿੱਚ, FastPix ਇੱਕ ਸੁਰੱਖਿਅਤ ਵਿਕਲਪ ਹੈ।
- ਛੋਟੇ, on-demand ਕਲਿੱਪ – ਉਹਨਾਂ API ਨੂੰ ਚੁਣੋ ਜੋ cold-startup latency ਨੂੰ ਘੱਟ ਕਰਦੇ ਹਨ। Cloudinary ਦਾ 2-ਸੈਕਿੰਡ ਦਾ ਸਮਾਂ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਇਹ instant-playback ਸਥਿਤੀਆਂ ਲਈ ਢੁਕਵਾਂ ਹੈ।
ਸਿਰਫ਼ ਅੰਕੜਿਆਂ ਤੋਂ ਇਲਾਵਾ, ਟੀਮਾਂ ਨੂੰ ਕੀਮਤ (pricing tiers), ਭੂਗੋਲਿਕ CDN ਕਵਰੇਜ, ਅਤੇ ਫੀਚਰਾਂ ਜਿਵੇਂ ਕਿ transcoding ਵਿਕਲਪ ਜਾਂ DRM 'ਤੇ ਵੀ ਵਿਚਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇੱਕ ਪ੍ਰੋਵਾਈਡਰ ਦਾ ਲੀਡਰਬੋਰਡ ਇੱਕ ਤੇਜ਼ ਜਾਂਚ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਕੰਮ ਦੇ ਖਾਸ (workload-specific) ਟੈਸਟ ਦੀ ਥਾਂ ਨਹੀਂ ਲੈਣਾ ਚਾਹੀਦਾ।
ਆਪਣਾ ਟੈਸਟ ਖੁਦ ਚਲਾਓ
- ਫਲੋਅ (flow) ਨੂੰ ਸਕ੍ਰਿਪਟ ਕਰੋ – ਫਾਈਲ ਅੱਪਲੋਡ ਕਰਨ ਅਤੇ “ready” ਫਲੈਗ ਦਿਖਾਈ ਦੇਣ ਤੱਕ ਸਟੇਟਸ ਐਂਡਪੁਆਇੰਟ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਆਪਣੀ ਭਰੋਸੇਯੋਗ ਭਾਸ਼ਾ (Node.js, Python, ਆਦਿ) ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਵਾਤਾਵਰਣ (environment) ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ – ਵੱਖ-ਵੱਖਤਾਵਾਂ ਨੂੰ ਖਤਮ ਕਰਨ ਲਈ ਹਰੇਕ ਪ੍ਰੋਵਾਈਡਰ ਦਾ ਟੈਸਟ ਇੱਕੋ ਮਸ਼ੀਨ ਅਤੇ ਨੈੱਟਵਰਕ ਤੋਂ ਚਲਾਓ।
- ਬੈਂਡਵਿਡਥ ਨੂੰ ਸੀਮਤ (throttle) ਕਰੋ – ਕਨੈਕਸ਼ਨ ਨੂੰ ਉਸ ਸਭ ਤੋਂ ਹੌਲੀ ਯੂਜ਼ਰ ਸੈਗਮੈਂਟ ਦੇ ਅਨੁਸਾਰ ਸੀਮਤ ਕਰੋ ਜਿਸਦੀ ਤੁਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹੋ (ਜਿਵੇਂ ਕਿ 4G ਲਈ 10 Mbps)।
- ਅਸਲੀ ਐਸੇਟਸ (assets) ਦੀ ਵਰਤੋਂ ਕਰੋ – ਆਮ ਟੈਸਟ ਕਲਿੱਪਾਂ ਦੀ ਥਾਂ ਅਜਿਹੀ ਫੁਟੇਜ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਪ੍ਰੋਡਕਟ ਦੇ ਆਮ ਅੱਪਲੋਡਾਂ ਵਰਗੀ ਹੋਵੇ; ਕੋਡੈਕ (codec), ਰੈਜ਼ੋਲਿਊਸ਼ਨ, ਅਤੇ ਬਿਟਰੇਟ ਇੰਜੈਸਟ ਪਾਈਪਲਾਈਨਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ।
ਇਕਲੌਤਾ ਬੈਂਚਮਾਰਕ ਜੋ ਸੱਚਮੁੱਚ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ, ਉਹ ਤੁਹਾਡੇ ਆਪਣੇ ਟ੍ਰੈਫਿਕ ਪੈਟਰਨਾਂ ਅਤੇ ਕੁਆਲਿਟੀ ਦੀਆਂ ਉਮੀਦਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਅੱਗੇ ਕੀ ਦੇਖਣਾ ਹੈ
ਜਿਵੇਂ-ਜਿਵੇਂ ਵੀਡੀਓ API ਵਿਕਸਿਤ ਹੁੰਦੇ ਹਨ, ਉਹ ਨਵੇਂ ਇੰਜੈਸਟ ਪਾਥਵੇਅ (ingest pathways), ਐਜ ਕੈਸ਼ਿੰਗ ਲੇਅਰਾਂ, ਅਤੇ AI-ਅਧਾਰਿਤ transcoding ਲਾਂਚ ਕਰਦੇ ਹਨ। ਆਪਣੇ CI ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਇੱਕ ਆਟੋਮੇਟਡ ਬੈਂਚਮਾਰਕ ਰੱਖਣ ਨਾਲ ਯੂਜ਼ਰਾਂ 'ਤੇ ਪ੍ਰਭਾਵ ਪੈਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਖਾਮੀਆਂ (regressions) ਦਾ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਕਮਿਊਨਿਟੀ ਦੁਆਰਾ ਸਾਂਝੇ ਕੀਤੇ ਗਏ ਨਤੀਜੇ, ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿੱਤਾ ਲਿੰਕ, ਈਕੋਸ
