PRODसंप्रभु यूरोपीय BaaS मंचडैशबोर्ड खोलें →

इंजीनियरिंग · 8 मिनट पढ़ा

Rust/WASM Edge Functions बनाम Cloudflare और Vercel Edge

Affane Daylami · Fondateur · 22 जून 2026

ब्लॉग पर वापस जाएँ

क्लाउडफ्लेयर वर्कर्स और वर्सेल एज फ़ंक्शंस आपके कोड को V8 आइसोलेट्स में चलाते हैं, एक हल्का जावास्क्रिप्ट संदर्भ, कंटेनर या वर्चुअल मशीन नहीं। ऑराबेस एक दूसरा पथ प्रदान करता है, जो इसके कोड में सत्यापित है: एक wasm मोड जो सीधे वासमटाइम रनटाइम के माध्यम से, मूल रूप से, ऑरा-फ़ंक्शंस सर्विस में, WebAssembly में संकलित रस्ट को निष्पादित करता है।

यह अंग्रेजी पाठ फ़्रेंच मूल से स्वचालित रूप से उत्पन्न हुआ था और अभी तक इसकी समीक्षा नहीं की गई है।
यह पृष्ठ स्वचालित रूप से अनुवादित किया गया था. अंग्रेजी संस्करण प्रामाणिक है.

हालाँकि, ऑराबेस का डिफ़ॉल्ट मोड डेनो (V8 आइसोलेट्स भी) बना हुआ है, जैसा कि ऑराबेस के रस्ट कोरमें प्रलेखित है। "एज फ़ंक्शंस इन रस्ट" प्लेटफ़ॉर्म के आधार पर तीन अलग-अलग वास्तविकताओं को शामिल करता है: क्लाउडफ़ेयर पक्ष पर एक समुदाय एसडीके, वर्सेल पक्ष पर कोई आधिकारिक मार्ग नहीं, ऑराबेस पक्ष पर अपने स्वयं के सीएलआई के साथ एक मूल निष्पादन मोड। यह तुलना तीन आर्किटेक्चर का विवरण देती है, बिना यह मिलाए कि क्या सत्यापित है और प्लेटफ़ॉर्म का उद्देश्य क्या है।

अनिवार्य है

  • ऑराबेस दो एज फ़ंक्शंस रनटाइम प्रदान करता है: deno (V8 आइसोलेट्स, समर्पित सेवा, डिफ़ॉल्ट मोड) और wasm (रस्ट संकलित, वास्मटाइम के माध्यम से मूल रूप से चलाएं)।
  • क्लाउडफ्लेयर वर्कर्स V8 आइसोलेट्स पर चलता है और इसके अलावा WebAssembly भी चला सकता है, विशेष रूप से workers-rsसमुदाय SDK के माध्यम से। यह ऑराबेस के wasm मोड की तरह एक समर्पित देशी रस्ट रनटाइम नहीं है।
  • वर्सेल एज फ़ंक्शंस एज रनटाइम पर निर्भर करता है, जो आइसोलेट्स V8 पर Node.js API का एक सबसेट है: फ़ंक्शन को रस्ट में लिखने के लिए कोई आधिकारिक एसडीके या सीएलआई नहीं है।
  • ऑराबेस का wasm मोड प्रत्येक निष्पादन को वास्मटाइम ईंधन सीपीयू बजट, एक समर्पित मेमोरी सीमा और प्रति युग टाइमआउट के साथ अलग करता है, लेकिन वर्तमान में अतिथि मॉड्यूल के लिए किसी भी आउटगोइंग नेटवर्क एक्सेस को उजागर नहीं करता है।
  • एक ही लक्ष्य के लिए तीन अलग-अलग आर्किटेक्चर: एक पूर्ण कंटेनर की लागत के बिना, जल्दी से शुरू करें और प्रत्येक निष्पादन को अलग करें।
#
प्रसंग

V8 आइसोलेट्स और WASM मॉड्यूल: दो सैंडबॉक्सिंग मैकेनिक्स

V8 आइसोलेट उसी V8 इंजन के अंदर एक हल्का जावास्क्रिप्ट निष्पादन संदर्भ है: कोई नई सिस्टम प्रक्रिया नहीं, शुरू करने के लिए कोई नया कर्नेल नहीं। यह वह तंत्र है जिसे क्लाउडफ़ेयर ने सबसे पहले वर्कर्स के लिए सार्वजनिक किया था, और जिसे वर्सेल अपने एज रनटाइम के लिए पुन: उपयोग करता है। उद्देश्य दोनों तरफ समान है: प्रत्येक अनुरोध के लिए कंटेनर या वीएम की लागत से बचना।

A WebAssembly module meets the same need through a different mechanism. The WASM bytecode runs in a bounded linear memory, defined by the specification itself. The guest module cannot address outside this area, regardless of the source language (Rust, C, Go…) that produced the binary. It is this model that Wasmtime applies in the wasm mode of Aurabase, detailed below. For startup measurements between the two mechanics, see our file on WebAssembly cold start benchmarks.

#
WASM रनटाइम

Aurabase wasm mode उत्पादन में क्या चलता है

प्रत्येक ऑराबेस फ़ंक्शन में एक runtime फ़ील्ड होता है जिसका मूल्य "wasm" या "deno"होता है। इनवोकेशन इंजन तदनुसार निष्पादन पथ चुनता है:

runtime/dispatch.rsrust
// रनटाइम के अनुसार प्रेषण: WASM (wasmtime) या डेनो (V8 एज-रनटाइम के माध्यम से आइसोलेट्स)
let resp = if func.runtime == "wasm" {
    state.runtime.invoke(&wasm_bytes, &func.code_hash, req).await?
} else {
    // ऑरा-एज-रनटाइम के लिए प्रॉक्सी - V8 आइसोलेट्स (सुपबेस/एज-रनटाइम, एमआईटी)
    proxy_to_edge_runtime(&state.config.edge_runtime_url, …).await?
};

सैंडबॉक्स संयुक्त रूप से तीन वासमटाइम तंत्रों पर निर्भर करता है। सीपीयू बजट को "ईंधन" में गिना जाता है: प्रत्येक WASM निर्देश इसका उपभोग करता है। युग वृद्धि में एक टाइमआउट लागू किया जाता है: एक समर्पित थ्रेड कॉन्फ़िगर किए गए विलंब के बाद वासटाइम घड़ी को बढ़ाता है, जो वर्तमान निष्पादन को बाधित करता है। StoreLimitsके माध्यम से एक मेमोरी सीमा निर्धारित की गई। इंजन चालू होने पर तीन टर्मिनल कॉन्फ़िगर किए जाते हैं:

runtime/wasm.rsrust
let mut cfg = Config::new();
cfg.consume_fuel(true);
cfg.epoch_interruption(true);

// स्टोरलिमिट्स द्वारा सीमित मेमोरी, प्रारंभिक ईंधन = max_fuel,
// टाइमआउट = टाइमआउट_सेकंड के बाद युग वृद्धि (समर्पित थ्रेड)

संकलित मॉड्यूल को code_hashद्वारा कैश किया गया है: प्रत्येक कॉल पर समान तैनात बाइनरी को पुन: संकलित नहीं किया जाता है। फिर भी प्रत्येक आह्वान एक नया Store और उदाहरण प्रस्तुत करता है। कोई भी स्थिति एक कॉल से दूसरे कॉल में लीक नहीं होती. अतिथि मॉड्यूल के संपर्क में आने वाला सतह क्षेत्र जानबूझकर न्यूनतम रहता है, कुल मिलाकर पांच होस्ट फ़ंक्शन: aura.log, aura.get_input, aura.set_output, aura.get_env और असेंबलीस्क्रिप्ट संगतता के लिए एक स्टब env.abort। इस समय कोई भी होस्ट फ़ंक्शन आउटगोइंग नेटवर्क कॉल को उजागर नहीं करता है।

सत्यापित बनाम उत्पाद उद्देश्य

wasm मोड अब शुद्ध गणना के लिए उपयुक्त है: सत्यापन, डेटा परिवर्तन, स्कोरिंग, विश्लेषण। एक फ़ंक्शन जिसे तृतीय-पक्ष API (भुगतान, ईमेल, बाहरी सेवा) को कॉल करना होगा, उसे अभी भी denoमोड से गुजरना होगा। यह ऑराबेस के लिए डिफ़ॉल्ट मोड है, और मौजूदा डेनो कोड को माइग्रेट करने के लिए अनुशंसित मोड है।

परिनियोजन पक्ष पर, सीएलआई आपके टोकरे को भेजने से पहले स्थानीय रूप से संकलित करता है: aura functions new एक टोकरा तैयार करता है cdylib, aura functions deploy इसे संकलित करता है और फिर भेजता है।

terminalbash
# मचान: aurabase/functions/<name>/ बनाता है (Cargo.toml crate-type = cdylib)
aura functions new my-fn

# कार्गो बिल्ड--लक्ष्य wasm32-अज्ञात-अज्ञात--रिलीज़, फिर अपलोड करें
# POST /v1/functions/:project_id { रनटाइम: "wasm", कोड: <wasm in Base64> }
aura functions deploy my-fn
#
बादल भड़कना

क्लाउडफ्लेयर वर्कर्स: WebAssembly के साथ V8 को अलग करता है

क्लाउडफ़ेयर वर्कर्स मूल रूप से क्लाउडफ़ेयर के वैश्विक नेटवर्क पर वितरित V8 आइसोलेट्स में जावास्क्रिप्ट और टाइपस्क्रिप्ट चलाते हैं। प्लेटफ़ॉर्म की शुरुआत से ही WebAssembly एक प्रथम श्रेणी का नागरिक रहा है: .wasm मॉड्यूल को किसी अन्य मॉड्यूल की तरह सीधे वर्कर में आयात किया जा सकता है।

वर्कर को पूरी तरह से रस्ट में लिखने के लिए, सबसे अधिक उपयोग किया जाने वाला मार्ग समुदाय SDK workers-rsहै, जो कोड को wasm32-unknown-unknown में संकलित करता है और इसे वर्कर्स रनटाइम में निष्पादित करता है। ऑराबेस के wasm मोड के साथ अंतर उपलब्ध सतह क्षेत्र है। इस एसडीके के माध्यम से रस्ट में लिखा गया एक वर्कर पूर्ण वर्कर्स वातावरण में चलता है, और इसलिए fetch या अन्य प्लेटफ़ॉर्म बाइंडिंग को कॉल कर सकता है। ऑराबेस का wasm मोड जानबूझकर कम की गई होस्ट सतह (पिछले अनुभाग) से शुरू होता है।

#
वर्सेल

वर्सेल एज फ़ंक्शंस: एक Node.js सबसेट, कोई आधिकारिक रस्ट पथ नहीं

वर्सेल का एज रनटाइम पूर्ण Node.js वातावरण के बजाय मानक वेब एपीआई (fetch, Request/Response, crypto.subtle…) के सबसेट के साथ, V8 आइसोलेट्स में भी कोड चलाता है। मूल नोड मॉड्यूल और मनमाने ढंग से संकलन टूलचेन का वहां कोई स्थान नहीं है।

WebAssembly ऑब्जेक्ट इस सबसेट का हिस्सा है: कुछ भी आपको .wasm बाइनरी लोड करने और इसे जावास्क्रिप्ट या टाइपस्क्रिप्ट फ़ंक्शन से हाथ से इंस्टेंट करने से नहीं रोकता है। लेकिन हमारी जानकारी के अनुसार, क्लाउडफ्लेयर पक्ष पर workers-rs या ऑराबेस पक्ष पर aura functions deploy के विपरीत, वर्सेल रस्ट में सीधे एज फ़ंक्शन लिखने के लिए कोई आधिकारिक एसडीके या सीएलआई प्रकाशित नहीं करता है। पथ संभव बना हुआ है, लेकिन पूरी तरह से मैन्युअल, समर्पित उपकरणों के बिना।

#
सुरक्षा

सैंडबॉक्स: WASM लीनियर मेमोरी बनाम V8 आइसोलेशन

एक V8 आइसोलेट एक ही इंजन प्रक्रिया के भीतर एक समर्पित ढेर द्वारा निष्पादित कोड और उसके स्वयं के संदर्भ को अलग करता है। यह क्लाउडफ्लेयर और वर्सेल में प्रति सेकंड लाखों अनुरोधों के पैमाने पर एक सिद्ध तंत्र है, लेकिन यह एक एकल जावास्क्रिप्ट इंजन के भीतर एक सॉफ्टवेयर अलगाव तंत्र बना हुआ है।

WASM मॉडल अलग-अलग तरीके से अलग होता है: प्रत्येक उदाहरण को अपनी स्वयं की रैखिक मेमोरी मिलती है, एक सन्निहित बफर जिसके बाहर बाइनरी प्रारूप के निर्माण से कोई पहुंच संभव नहीं है, स्वतंत्र रूप से इसे निष्पादित करने वाले इंजन से। ऑराबेस रनटाइम में, प्रत्येक होस्ट फ़ंक्शन जो अतिथि मॉड्यूल (aura.log, aura.get_env…) द्वारा प्रदान किए गए पॉइंटर में हेरफेर करता है, किसी भी मेमोरी एक्सेस से पहले सीमाओं को स्पष्ट रूप से पुनः सत्यापित करता है। यह दुर्भावनापूर्ण या खराब मॉड्यूल के विरुद्ध गहराई में एक अतिरिक्त सुरक्षा है।

#
सिंहावलोकन

तीन वास्तुकलाएं, साथ-साथ

ऑराबेस (wasm)क्लाउडफ्लेयर श्रमिकवर्सेल एज फ़ंक्शंस
निष्पादन मॉडलमूल WASM मॉड्यूल, वासटाइमवैकल्पिक मॉड्यूल के रूप में V8 + WASM को अलग करेंV8, Node.js सबसेट को अलग करें
अग्रभूमि में जंगहाँ, समर्पित मोड + सीएलआईसमुदाय एसडीके (श्रमिक-आरएस) के माध्यम सेनहीं, कोई आधिकारिक मार्ग नहीं
मॉड्यूल से बाहर निकलने वाली नेटवर्क पहुंचनहीं, कोड में चेक किया गया (कोई नेटवर्क होस्ट फ़ंक्शन नहीं)हाँ, संपूर्ण श्रमिक परिवेश के माध्यम सेहां, मानक फ़ेच एपीआई
सीपीयू बजटईंधन वास्मटाइम, विन्यास योग्यप्रति अनुरोध सीपीयू समय सीमा (क्लाउडफ्लेयर दस्तावेज़)प्रति समन अवधि सीमा (डॉक्टर वर्सेल)
समर्पित जंग परिनियोजनऑरा फ़ंक्शंस परिनियोजन (कार्गो बिल्ड स्थानीय)रैंगलर + श्रमिक-रुकोई आधिकारिक समकक्ष उपकरण नहीं

ऑराबेस रनटाइम विनिर्देश। प्रत्येक प्लेटफ़ॉर्म के प्रलेखित सार्वजनिक आर्किटेक्चर से वर्णित क्लाउडफ़ेयर और वर्सेल कॉलम (V8, WebAssembly को बिल्ड लक्ष्य के रूप में अलग करता है)।

#
फ़ैसला

आपके फ़ंक्शन के अनुसार कौन सा रनटाइम चुनना है

शुद्ध गणना, नेटवर्क कॉल के बिना: स्कीमा सत्यापन, डेटा परिवर्तन, स्कोरिंग, हल्की छवि निर्माण। ऑराबेस का wasm मोड एक सख्त मेमोरी सैंडबॉक्स, एक स्पष्ट सीपीयू बजट और बाहरी सेवा पर निर्भरता के बिना सीधे उपयुक्त है।

फ़ंक्शन जो तृतीय-पक्ष API (भुगतान, ईमेल, आउटगोइंग वेबहुक) को कॉल करता है। ऑराबेस का deno मोड आज भी डिफ़ॉल्ट विकल्प बना हुआ है, उसी तरह जैसे एक क्लासिक क्लाउडफ्लेयर वर्कर या वर्सेल एज फ़ंक्शन मूल रूप से fetch पर निर्भर करता है।

टीम ने पहले ही क्लाउडफ्लेयर इकोसिस्टम (KV, ड्यूरेबल ऑब्जेक्ट्स, R2) में निवेश किया है। वर्कर्स पर बने रहना समझ में आता है; workers-rs आपको प्लेटफ़ॉर्म बदले बिना, धीरे-धीरे रस्ट पेश करने की अनुमति देता है।

को एक देशी रस्ट रनटाइम की आवश्यकता है जो एंड-टू-एंड प्रबंधित हो, एक समर्पित सीएलआई और बाकी बैकएंड के समान भाषा के साथ। यह वह कोण है जो हमारे वासटाइम बनाम वासमर तुलनामें वेबअसेंबली इंजन की पसंद पर दस्तावेज़ करता है।

#
अक्सर पूछे जाने वाले प्रश्नों

पूछे जाने वाले प्रश्न

क्या आप रस्ट में ऑराबेस एज फ़ंक्शंस लिख सकते हैं?+
हाँ, wasm मोड के माध्यम से। सीएलआई में नए मचान और रस्ट क्रेट (क्रेट-प्रकार सीडीलिब) के कार्य होंगे। ऑरा फ़ंक्शंस डिप्लॉय कमांड इसे स्थानीय रूप से कार्गो बिल्ड --target wasm32-unknown-unknown --release के साथ संकलित करता है, फिर बाइनरी को ऑरा-फ़ंक्शंस सेवा में भेजता है, जो इसे मूल रूप से वास्मटाइम रनटाइम के साथ चलाता है। यह डिफ़ॉल्ट मोड नहीं है: डिफ़ॉल्ट रूप से, ऑराबेस एज फ़ंक्शन जावास्क्रिप्ट/टाइपस्क्रिप्ट (डेनो रनटाइम, वी8 आइसोलेट्स) में चलता है।
क्या क्लाउडफ्लेयर वर्कर्स वास्तव में आपको रस्ट में फ़ंक्शन लिखने की अनुमति देते हैं?+
हां, लेकिन परोक्ष रूप से: क्लाउडफ्लेयर वर्कर्स मूल रूप से V8 आइसोलेट्स में जावास्क्रिप्ट/टाइपस्क्रिप्ट निष्पादित करते हैं। वर्कर्स-आरएस समुदाय एसडीके आपको रस्ट में संपूर्ण वर्कर को वेबअसेंबली में संकलित करने की अनुमति देता है, लेकिन यह सबसे आधिकारिक रूप से प्रलेखित मार्ग नहीं है। WASM JS मॉडल को पूरी तरह से बदलने के बजाय वहां एक वर्कर को पूरक बनाता है।
क्या वर्सेल एज फ़ंक्शंस मूल रूप से वेबअसेंबली या रस्ट का समर्थन करता है?+
वर्सेल एज रनटाइम वेबअसेंबली ऑब्जेक्ट सहित मानक वेब एपीआई को उजागर करता है, इसलिए एक .wasm मॉड्यूल को जावास्क्रिप्ट/टाइपस्क्रिप्ट फ़ंक्शन से मैन्युअल रूप से लोड और इंस्टेंट किया जा सकता है। लेकिन हमारी जानकारी के अनुसार, क्लाउडफ़ेयर पक्ष पर वर्कर्स-आरएस या ऑराबेस पक्ष पर तैनात ऑरा फ़ंक्शंस के विपरीत, वर्सेल सीधे रस्ट में एज फ़ंक्शन लिखने के लिए कोई आधिकारिक एसडीके या सीएलआई प्रकाशित नहीं करता है।
क्या Aurabase wasm मोड किसी तृतीय-पक्ष API (भुगतान, ईमेल, आदि) को कॉल कर सकता है?+
आज नहीं: अतिथि WASM मॉड्यूल के संपर्क में आने वाले होस्ट फ़ंक्शन लॉग हैं, इनपुट अनुरोध को पढ़ना और आउटपुट प्रतिक्रिया लिखना, साथ ही पर्यावरण चर को पढ़ना। ऐसे फ़ंक्शन के लिए जिसे बाहरी एपीआई (नेटवर्क फ़ेच) को कॉल करने की आवश्यकता होती है, डेनो रनटाइम (डिफ़ॉल्ट) अनुशंसित पथ है।

तैनाती के लिए तैयार हैं?

पाँच मिनट में आपका बैकएंड।

किसी क्रेडिट कार्ड की आवश्यकता नहीं · 500 एमबी निःशुल्क · 50,000 एमएयू