WebAssembly Kullanım Alanları: Tarayıcı, WASI Sunucu ve Edge Compute
Stack'ten bağımsız bir WebAssembly haritası (tarayıcıda performans, sunucuda WASI, edge'de compute) hangi konuşmanın hangi bahisten gittiğini gösterir.
WebAssembly konuşmaları sürekli birbirini ıskalıyor; çünkü tek bir kelime üç çok farklı mimari bahsi örtüyor. Frontend geliştirici “web’i hızlandırır” diye düşünüyor, backend geliştirici “container’ların yerine geçer” diye okuyor, platform geliştirici “edge’i çalıştırır” diye varsayıyor ve üçü de kısmen haklı. Tek bir runtime’ı değerlendirmeden önce problemini bu üçünden birine oturt; hiçbiri mevcut mimarini tarif etmiyorsa Wasm’i şimdilik ertele.
30 Saniyede WASM#
Tek bytecode, üç ayrı bahis: tarayıcıda performans, sunucuda WASI runtime, edge’de compute.
Rust, C, C++, Go, AssemblyScript ve Zig gibi kaynak diller ikili bir talimat formatına derleniyor: .wasm dosyası. Bu bytecode stack tabanlı, bellek güvenli, varsayılan olarak sandbox’lanmış, neredeyse yerel hıza yakın çalışacak şekilde tasarlanmış ve hangi host üstünde çalıştığı umurunda değil.
Tarayıcı Performansı#
JavaScript CPU yoğun bir iş için yeterince hızlı değil, bu yüzden tarayıcıdaki bahis dar: mevcut C++ veya Rust kod tabanı doğrudan tarayıcı sekmesine taşınıyor ve bu 2017’den beri mümkün.
Figma, 2017’de WebAssembly’i devreye aldı ve editör yüklenme süresini yaklaşık 3× kısalttığını raporladı; C++ render motorunu derleyip tarayıcı içinde çalıştırdılar. Photoshop Web, Adobe ile Chrome ekibinin yıllara yayılan ortak çalışmasının ürünü; Photoshop’un C++ çekirdeği Emscripten üstünden derleniyor ve 2021’de herkese açık web betası yayınlandı.
Wasm’in doğrudan DOM erişimi yok. Wasm kodu bir DOM düğümüne, bir özelliğe veya bir event’e her uzandığında çağrı bedava olmayan bir JavaScript ↔ Wasm köprüsünden geçiyor; “JavaScript yerine Wasm kullanalım” yanlış zihinsel modeli tam da bu yüzden: Wasm uygulamanın içindeki hesaplamayı üstlenirken arayüz JavaScript’te kalıyor. Bu bahis ayrıca üçü içinde en olgunu: dört büyük tarayıcının hepsi destekliyor, platformun kendisi oturmuş durumda, açık tasarım soruları ise artık Emscripten, bellek düzeni ve SharedArrayBuffer üstünden çoklu thread etrafında dönüyor.
Sunucuda WASI#
WASI, tam bir container açmadan izole ve çok dilli iş yüklerinin sunucuda çalışmasını sağlıyor: Docker’a kıyasla daha küçük bir sandbox ve daha hızlı soğuk başlangıç sunuyor, tek fark ekosisteminin container’lardan daha genç olması.
WASI (WebAssembly System Interface), Wasm kodunun altındaki OS’u umursamadan dosyalarla, saatlerle, soket’lerle ve ortam değişkenleriyle konuşmasını sağlayan standart yüzey. İki aktif sürümü var. Preview 1, hâlâ yaygın kullanılan eski POSIX’e yakın API. Preview 2, 25 Ocak 2024’te yayınlandı; Component Model üstüne yeniden inşa edildi ve WASI’yi syscall’lar yerine tiplenmiş arayüzler kümesi olarak yeniden düşünüyor. Preview 3 (WASI 0.3) Wasmtime üstünde çoktan release-candidate aşamasında; async desteği ve yerel thread’ler kapsamda, 1.0 kesimi 2026 sonu ile 2027 başı arasında bekleniyor.
Wasmtime, Bytecode Alliance tarafından yürütülen ve Cranelift kod üreteci üstünde çalışan referans runtime; Wasmer ise kendi paketleme ve dağıtım modelini taşıyan alternatif bir seçenek. Bir katman yukarıda, wasmCloud Wasm bileşenleri ve NATS mesajlaşması üstüne kurulu bir platform. Bu ikilinin bileşen-taşınabilirliği tezine daha derin bir bakış için wasmCloud + NATS: bir event-bus taşınabilirlik bahsi yazısına bakabilirsin.
Component Model kendisi hâlâ stabilize oluyor: Preview 2 stabil kilometre taşı, Preview 3 ise henüz release-candidate aşamasında. Solomon Hykes’ın 2019’da, WASM ile WASI 2008’de var olsaydı Docker’a ihtiyaç kalmayacağı yönündeki yorumu güzel bir uzun vadeli çerçeve ama 2026 için hâlâ bir vizyon ifadesi. Kütüphane kapsamı, dil desteği ve araç zinciri hâlâ runtime’a göre değişiyor.
Edge Compute#
Edge’de kısıt coğrafya: kullanıcılar dağınık ve her isteğe özel kod, container soğuk-başlangıç maliyetini ödemeden onlara yakın çalışmalı. Wasm’in soğuk başlangıcı milisaniye mertebesinde kalıyor (container’larda aynı süre saniyelerle ölçülüyor) ve sandbox’ı istek başına ucuza ayağa kalkıyor.
Cloudflare Workers, V8 izolatlarını Wasm modülleriyle resmi workers-rs crate’i üstünden eşleştirirken, Fastly Compute V8 katmanını tamamen atlayıp saf Wasm tabanlı bir runtime sunuyor; bu da farklı bir izolasyon hikâyesi ve farklı bir performans profili anlamına geliyor. Shopify Functions işi farklı bir açıdan ele alıyor: satıcılar Rust, JavaScript veya AssemblyScript’ten derledikleri Wasm modüllerini Shopify’ın checkout ve indirim akışlarında inline çalıştırıyor; bu da onu satıcılara açık bir ticaret mantığı platformu haline getiriyor.
Her edge platformu kendi KV deposunu, kuyruğunu, binding ABI’sını ve runtime şeklini sunuyor; bu yüzden bytecode taşınabilir ama host binding’leri değil. Cloudflare Workers için derlenmiş bir Wasm modülü Fastly Compute veya Shopify Functions’a olduğu gibi taşınmıyor. Binding’lerin kilitlenmeyi nereye sakladığı, wasmCloud + NATS taşınabilirlik yazısının derinlemesine işlediği tam da bu gerilim. CPU-yoğun bir modülü V8-artı-Wasm edge’ine göndermenin pratikte nasıl göründüğüne (ve üç sert limitin nerede ısıracağına) uygulamalı bir bakış için: Cloudflare Workers’a WASM Görsel Yeniden-Boyutlama Modülü Yüklemek.
Hangi İş İçin Hangi Eksen#
Üç bahis isimlendirildikten sonra karar kısa bir ağaca dönüşüyor.
Kapanış#
Tarayıcı zaten günlük yüzeyindeyse ve JavaScript motorunun yutamadığı CPU yoğun bir ağrın varsa Bahis 1 ile başla. Sunucu ve edge bahislerine ise WASI Preview 3 release-candidate aşamasından stabil sürüme geçip runtime ekosistemi kalınlaştığında tekrar bakmaya değer.
Kaynaklar#
- WebAssembly.org (yeni sekmede açılır) - WebAssembly standardının resmi evi; bytecode’un kapsamı için yetkili kaynak.
- MDN WebAssembly genel bakış (yeni sekmede açılır) - Geliştirici odaklı kavram dizini; JavaScript ↔ Wasm entegrasyonu, bellek ve araç rehberlerini kapsıyor.
- WASI.dev (yeni sekmede açılır) - Resmi WASI portalı; Preview 1 ile Preview 2 ayrımını adlandırıyor ve aktif runtime ekosistemini listeliyor.
- Bytecode Alliance (yeni sekmede açılır) - Wasmtime, WASI ve Component Model’i yürüten kâr amacı gütmeyen yapı; üye listesi sunucu tarafı Wasm’i kimlerin desteklediğini gösteriyor.
- WebAssembly/component-model (GitHub) (yeni sekmede açılır) - Güncel Component Model deposu; README hangi preview’ın aktif kilometre taşı olduğunu ve sonraki preview’ın kapsamını belgeliyor.
- WASI 0.2 duyurusu (Bytecode Alliance) (yeni sekmede açılır) - Preview 2 oylamasını 25 Ocak 2024 olarak tarihliyor ve Component Model mantığını anlatıyor.
- Figma blog: WebAssembly Figma’nın yüklenme süresini 3× kısalttı (yeni sekmede açılır) - Evan Wallace’ın 2017 yazısı; tarayıcıda Wasm için kanonik örnek olay.
- Photoshop’un web’e yolculuğu (web.dev) (yeni sekmede açılır) - Adobe ve Chrome ekibinin Photoshop C++ çekirdeğini Emscripten üstünden derlemesine dair çok yıllık vaka incelemesi.
- Cloudflare Workers: Rust dil desteği (yeni sekmede açılır) - V8-izolat-artı-Wasm edge modelinin ve
workers-rscrate yolunun resmi dokümantasyonu. - Fastly Compute ürün sayfası (yeni sekmede açılır) - Fastly’nin saf Wasm edge runtime için birinci elden konumlandırması; V8 sarmalı modeline karşı kullanışlı bir kontrast.
İlgili yazılar
Rust + WASM ile yazılmış bir görsel boyutlama handler'ının Cloudflare Workers'ın binary, bellek ve CPU tavanlarına sığıp sığmayacağını inceleyen keşif.
webassembly · cloudflare · rust +1
Bir keşif tezi: event-driven sistemlerde vendor lock-in runtime'da değil bus topolojisinde yaşar; wasmCloud ve NATS bus'ı taşınabilir kılıyor.
webassembly · messaging · event-driven +3
Olay güdümlü araçlara derin bakış: Kafka, SQS ve EventBridge, mesaj teslimat kalıpları, DLQ stratejileri ve bunların AWS, Azure, GCP karşılıkları.
architecture · cloud-providers · messaging +4
Kimlik okumaları DynamoDB'de kalsın; keyfi sıralama, filtre, facet ve tam metin arama zero-ETL OpenSearch okuma modeline gitsin. Bazen tek PostgreSQL ikisini de yener.
dynamodb · aws · architecture +2
AWS Dogwood, Cedar politikalarına zamansal koşullar ekler, bunları düz Cedar'a indirger ve ajan korumalarını Amazon Bedrock AgentCore ağ geçidinde uygular.
authorization · security · ai-agents +2