PRODEgemen Avrupa BaaS platformuKontrol Panelini Aç →

Mühendislik · 8 dk. okuma

Rust/WASM Edge Functions ile Cloudflare ve Vercel Edge karşılaştırması

Affane Daylami · Fondateur · 22 Haziran 2026

Bloga geri dön

Cloudflare Workers ve Vercel Edge Functions, kodunuzu bir kapsayıcı veya sanal makinede değil, hafif bir JavaScript bağlamı olan V8 yalıtımlarında çalıştırır. Aurabase, kodunda doğrulanan ikinci bir yol sunar: Wasmtime çalışma zamanı aracılığıyla WebAssembly'de yerel olarak aura-functionsservice'te derlenen Rust'u doğrudan çalıştıran bir wasm modu.

Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.

Ancak Aurabase'in varsayılan modu, Aurabase'in Rust çekirdeği'de belgelendiği gibi Deno olarak kalır (V8 İzolatları da). "Rust'ta Edge İşlevleri" platforma bağlı olarak üç farklı gerçekliği kapsar: Cloudflare tarafında bir topluluk SDK'sı, Vercel tarafında resmi bir rotanın olmaması, Aurabase tarafında kendi CLI'sine sahip yerel bir yürütme modu. Bu karşılaştırma, doğrulananlar ile platform hedefi olarak kalanları karıştırmadan üç mimarinin ayrıntılarını vermektedir.

Temeller

  • Aurabase iki Edge Functions çalışma zamanı sunar: deno (V8 İzolatları, özel hizmet, varsayılan mod) ve wasm (Rust derlendi, Wasmtime aracılığıyla yerel olarak çalıştırıldı).
  • Cloudflare Workers, V8 izolatları üzerinde çalışır ve özellikle workers-rstopluluk SDK'sı aracılığıyla ek olarak WebAssembly'ı da çalıştırabilir. Aurabase'in wasm modu gibi özel bir yerel Rust çalışma zamanı değil.
  • Vercel Edge Functions, V8 izolatlarındaki Node.js API'sinin bir alt kümesi olan Edge Runtime'ı kullanır: işlevin kendisini Rust'a yazacak resmi bir SDK veya CLI yoktur.
  • Aurabase'in wasm modu, her yürütmeyi bir Wasmtime yakıt CPU bütçesi, ayrılmış bir bellek sınırı ve çağ başına bir zaman aşımı ile yalıtır, ancak şu anda konuk modüle giden herhangi bir ağ erişimini açığa çıkarmaz.
  • Aynı amaç için üç farklı mimari: Tam bir kapsayıcı maliyeti olmadan hızlı bir şekilde başlayın ve her yürütmeyi izole edin.
#
Bağlam

V8 izolatları ve WASM modülleri: iki sanal alan mekaniği

Bir V8 izolasyonu, aynı V8 motoru içindeki hafif bir JavaScript yürütme bağlamıdır: yeni sistem işlemi yok, başlatılacak yeni çekirdek yok. Bu, Cloudflare'in İşçiler için ilk kez halka açıkladığı ve Vercel'in Edge Runtime için yeniden kullandığı mekanizmadır. Amaç her iki tarafta da aynı: her istek için konteyner veya VM maliyetinden kaçınmak.

WebAssembly modülü aynı ihtiyacı farklı bir mekanizma aracılığıyla karşılar. WASM bayt kodu, spesifikasyonun kendisi tarafından tanımlanan sınırlı bir doğrusal bellekte çalışır. Konuk modül, ikili dosyayı üreten kaynak dilden (Rust, C, Go...) bağımsız olarak bu alanın dışına adres veremez. Aşağıda ayrıntıları verilen, Wasmtime'ın Aurabase'in wasm modunda uyguladığı bu modeldir. İki mekanik arasındaki başlangıç ​​ölçümleri için WebAssembly soğuk başlatma kıyaslamalarındaki dosyamıza bakın.

#
WASM Çalışma Zamanı

Aurabase wasm modunun üretimde çalıştırdığı şey

Her Aurabase işlevi, "wasm" veya "deno"değerinde bir runtime alanı taşır. Çağırma motoru yürütme yolunu buna göre seçer:

runtime/dispatch.rsrust
// Çalışma zamanına göre gönderim: WASM (wasmtime) veya Deno (Edge-runtime aracılığıyla V8 İzolatları)
let resp = if func.runtime == "wasm" {
    state.runtime.invoke(&wasm_bytes, &func.code_hash, req).await?
} else {
    // Aura-edge-runtime proxy'si — V8 İzolatları (supabase/edge-runtime, MIT)
    proxy_to_edge_runtime(&state.config.edge_runtime_url, …).await?
};

Korumalı alan, üç Wasmtime mekanizmasının birleşimine dayanır. "Yakıt" olarak sayılan bir CPU bütçesi: her WASM talimatı onu tüketir. Dönem artışlarında uygulanan bir zaman aşımı: adanmış bir iş parçacığı, yapılandırılmış gecikmeden sonra Wasmtime saatini artırır, bu da mevcut yürütmeyi kesintiye uğratır. StoreLimitsaracılığıyla ayarlanan bir bellek sınırı. Motor başlatıldığında üç terminal yapılandırılır:

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

// Bellek StoreLimits ile sınırlanmıştır, ilk yakıt = max_fuel,
// timeout = timeout_secs'den sonraki dönem artışı (özel iş parçacığı)

Derlenen modül code_hashtarafından önbelleğe alınır: konuşlandırılan aynı ikili dosya her çağrıda yeniden derlenmez. Yine de her çağrı yeni bir Store ve örneğini başlatır. Bir çağrıdan diğerine hiçbir durum sızmaz. Konuk modülüne maruz kalan yüzey alanı kasıtlı olarak minimum düzeyde kalır; toplamda beş ana bilgisayar işlevi bulunur: aura.log, aura.get_input, aura.set_output, aura.get_env ve AssemblyScript uyumluluğu için bir saplama env.abort. Şu anda hiçbir ana bilgisayar işlevi giden ağ çağrılarını açığa çıkarmaz.

Doğrulanmış ve ürün hedefi

wasm modu artık saf hesaplama için uygundur: doğrulama, veri dönüştürme, puanlama, analiz. Üçüncü taraf bir API (ödeme, e-posta, harici hizmet) çağırması gereken bir işlevin yine de denomodundan geçmesi gerekir. Bu, Aurabase için varsayılan moddur ve mevcut Deno kodunu taşımak için önerilen moddur.

Dağıtım tarafında, CLI göndermeden önce sandığınızı yerel olarak derler: aura functions new bir sandığı iskele yapar cdylib, aura functions deploy onu derler ve sonra gönderir.

terminalbash
# İskele: aurabase/functions/<name>/ oluşturur (Cargo.toml sandık tipi = cdylib)
aura functions new my-fn

# kargo derlemesi --hedef wasm32-bilinmeyen-bilinmiyor --serbest bırakın, ardından yükleyin
# POST /v1/işlevler/:proje_id { çalışma zamanı: "wasm", kod: <base64'te wasm> }
aura functions deploy my-fn
#
Bulut parlaması

Cloudflare Workers: Ek olarak WebAssembly ile V8'i izole eder

Cloudflare Çalışanları, Cloudflare'in küresel ağına dağıtılan V8 izolatlarında JavaScript ve TypeScript'i yerel olarak çalıştırır. WebAssembly, platformun başlangıcından bu yana birinci sınıf bir vatandaş olmuştur: .wasm modülü, diğer modüller gibi doğrudan bir Worker'a aktarılabilir.

Bir Worker'ı tamamen Rust'ta yazmak için en çok kullanılan yol, kodu wasm32-unknown-unknown olarak derleyen ve Workers çalışma zamanında çalıştıran topluluk SDK'sı workers-rs'dir. Aurabase'in wasm modunun farkı mevcut yüzey alanıdır. Bu SDK aracılığıyla Rust'ta yazılan bir Worker, tam Workers ortamında çalışır ve bu nedenle fetch veya diğer platform bağlantılarını çağırabilir. Aurabase'in wasm modu, kasıtlı olarak küçültülmüş bir ana bilgisayar yüzeyinden başlar (önceki bölüm).

#
Versel

Vercel Edge İşlevleri: Node.js alt kümesidir, resmi Rust yolu yoktur

Vercel'in Edge Runtime'ı ayrıca tam Node.js ortamı yerine standart Web API'lerinin bir alt kümesiyle (fetch, Request/Response, crypto.subtle…) V8 izolatlarında kod çalıştırır. Yerel Düğüm modüllerinin ve rastgele derleme araç zincirlerinin burada yeri yoktur.

WebAssembly nesnesi bu alt kümenin bir parçasıdır: hiçbir şey bir .wasm ikili dosyasını yüklemenizi ve bunu bir JavaScript veya TypeScript işlevinden elle başlatmanızı engellemez. Ancak bilgimize göre Vercel, Cloudflare tarafındaki workers-rs veya Aurabase tarafındaki aura functions deploy'den farklı olarak Rust'ta doğrudan bir Edge İşlevi yazmak için herhangi bir resmi SDK veya CLI yayınlamamaktadır. Yol mümkün olmaya devam ediyor, ancak özel araçlar olmadan tamamen manuel.

#
Güvenlik

Korumalı alan: WASM doğrusal belleğine karşı V8 yalıtımı

Bir V8 izolatı, aynı motor işlemi içinde, özel bir yığın tarafından yürütülen kodu ve kendi bağlamını ayırır. Cloudflare ve Vercel'de saniyede milyonlarca istek ölçeğinde kanıtlanmış bir mekanizmadır, ancak tek bir JavaScript motorunda bir yazılım izolasyon mekanizması olmaya devam etmektedir.

WASM modeli farklı şekilde yalıtır: her örnek kendi doğrusal belleğine sahiptir; bu belleğin dışında, onu çalıştıran motordan bağımsız olarak ikili formatın kendisinin oluşturulması nedeniyle hiçbir erişimin mümkün olmadığı bitişik bir arabellek vardır. Aurabase çalışma zamanında, konuk modül tarafından sağlanan bir işaretçiyi (aura.log, aura.get_env…) yöneten her ana bilgisayar işlevi, herhangi bir bellek erişiminden önce sınırları açıkça yeniden doğrular. Bu, kötü niyetli veya hatalı bir modüle karşı derinlemesine ek bir savunmadır.

#
Genel Bakış

Üç mimari yan yana

Aurabase (wasm)Cloudflare ÇalışanlarıVercel Kenar İşlevleri
Yürütme modeliYerel WASM modülü, WasmtimeV8 + WASM'yi isteğe bağlı bir modül olarak izole edinV8, Node.js alt kümesini izole edin
Ön planda pasEvet, özel mod + CLITopluluk SDK'sı aracılığıyla (işçiler-rs)Hayır, resmi bir rota yok
Modülden çıkan ağ erişimiHayır, kodda kontrol edildi (ağ ana bilgisayar işlevi yok)Evet, tam İşçi ortamı aracılığıylaEvet, standart getirme API'si
CPU bütçesiYakıt Wasmtime, yapılandırılabilirİstek başına CPU zaman sınırı (Cloudflare belgesi)Çağrı başına süre sınırı (belge Vercel)
Özel Rust dağıtımıaura fonksiyonları dağıtımı (yerel kargo yapısı)asistan + işçiler-rsResmi eşdeğer araç yok

Aurabase çalışma zamanı spesifikasyonları. Her platformun belgelenmiş genel mimarisinden açıklanan Cloudflare ve Vercel sütunları (yapı hedefi olarak V8, WebAssembly'yi izole eder).

#
Karar

İşlevinize göre hangi çalışma zamanını seçmelisiniz

Ağ çağrıları olmadan saf hesaplama: şema doğrulama, veri dönüştürme, puanlama, hafif görüntü oluşturma. Aurabase'in wasm modu, sıkı bir bellek sanal alanı, açık bir CPU bütçesi ve harici bir hizmete bağımlılık olmaksızın doğrudan uygundur.

Üçüncü taraf API'sini çağıran işlev (ödeme, e-posta, giden web kancası). Aurabase'in deno modu, klasik Cloudflare Worker veya Vercel Edge Function'ın yerel olarak fetch'e dayanması gibi, bugün de varsayılan seçenek olmaya devam ediyor.

Ekibi zaten Cloudflare ekosistemi'ye (KV, Dayanıklı Nesneler, R2) yatırım yaptı. İşçilerde kalmak mantıklıdır; workers-rs, platformları değiştirmeden Rust'u kademeli olarak tanıtmanıza olanak tanır.

Özel bir CLI'ye ve arka ucun geri kalanıyla aynı dile sahip, uçtan uca yönetilen yerel bir Rust çalışma zamanı gerekir. Bu, WebAssembly motorunun seçimine ilişkin Wasmtime ve Wasmer karşılaştırmamızdabelgelediği açıdır.

#
Sıkça Sorulan Sorular

SSS

Aurabase Edge Functions'ı Rust'ta yazabilir misiniz?+
Evet, wasm modu aracılığıyla. CLI, Rust sandığı (sandık tipi cdylib) gibi yeni iskele işlevlerine sahip olacaktır. Aura fonksiyonları konuşlandırma komutu, onu yerel olarak kargo inşa --target wasm32-unknown-unknown --release ile derler, ardından ikili dosyayı, onu Wasmtime çalışma zamanı ile yerel olarak çalıştıran aura-functions servisine gönderir. Bu, varsayılan mod değildir: varsayılan olarak, bir Aurabase Edge İşlevi, JavaScript/TypeScript'te (Deno çalışma zamanı, V8 İzolatlar) çalışır.
Cloudflare Workers gerçekten Rust'ta işlevler yazmanıza izin veriyor mu?+
Evet, ancak dolaylı olarak: Cloudflare Workers, V8 izolatlarında yerel olarak JavaScript/TypeScript'i çalıştırır. İşçi topluluğu SDK'sı, Rust'taki bir Worker'ın tamamını WebAssembly'de derlemenize olanak tanır, ancak bu, resmi olarak belgelenen en fazla yol değildir. WASM, JS modelini tamamen değiştirmek yerine, orada bir İşçiyi tamamlıyor.
Vercel Edge Functions, WebAssembly veya Rust'u yerel olarak destekliyor mu?+
Vercel Edge Runtime, WebAssembly nesnesi de dahil olmak üzere standart Web API'lerini kullanıma sunar, böylece bir .wasm modülü bir JavaScript/TypeScript işlevinden manuel olarak yüklenebilir ve başlatılabilir. Ancak bildiğimiz kadarıyla Vercel, Cloudflare tarafındaki çalışanların veya Aurabase tarafında konuşlandırılan aura işlevlerinin aksine, doğrudan Rust'ta bir Edge İşlevi yazmaya yönelik herhangi bir resmi SDK veya CLI yayınlamamaktadır.
Aurabase wasm modu üçüncü taraf bir API'yi (ödeme, e-posta vb.) çağırabilir mi?+
Bugün değil: Konuk WASM modülüne maruz kalan ana bilgisayar işlevleri günlük, giriş isteğini okuma ve çıkış yanıtını yazmanın yanı sıra ortam değişkenlerini okumaktır. Harici bir API (ağ getirme) çağırması gereken bir işlev için Deno çalışma zamanı (varsayılan) önerilen yoldur.

DAĞITILMAYA HAZIR MISINIZ?

Beş dakika içinde arka ucunuz.

Kredi kartı gerekmez · 500 MB ücretsiz · 50.000 MAU