Rust ile WebAssembly (WASM) Uygulamalarını VPS/VDS Üzerinde Barındırma ve Optimizasyon Rehberi

Rust ile WebAssembly (WASM) Uygulamalarını VPS/VDS Üzerinde Barındırma ve Optimizasyon Rehberi - Corelux
16 Nis 2026
Paylaş:

Rust ile WebAssembly (WASM) Uygulamalarını VPS/VDS Üzerinde Barındırma ve Optimizasyon Rehberi

Son Güncelleme: Nisan 2026

Rust ile derlenen WebAssembly (WASM) uygulamaları, düşük bellek kullanımı ve yüksek performans sunarak modern web ve sunucu tarafı uygulamalar için çekici bir seçenektir. Bu rehberde VPS/VDS (sanal sunucu) üzerinde Rust+WASM dağıtımı, çalışma zamanı (runtime) seçenekleri, konteynerleme ve performans optimizasyonu adımlarını pratik örneklerle ele alacağız.

İçindekiler

Giriş

Bu rehber, Rust ile yazılmış WASM modüllerini bir VPS/VDS üzerine nasıl paketleyeceğinizi, hangi çalışma zamanı (runtime (çalışma zamanı)) seçeneklerinin mevcut olduğunu, konteynerleme ve performans optimizasyonu tekniklerini adım adım gösterir. Hedefimiz: güvenli, ölçeklenebilir ve düşük gecikmeli bir dağıtım mimarisi kurmak.

WASM Nedir?

WebAssembly (WASM), tarayıcı içi ve sunucu tarafı uygulamalar için ikili (binary) bir format sunar. WASM, yüksek performans ve taşınabilirlik sağlar; farklı dillerden (Rust, C/C++, Go vb.) derlenebilir. WebAssembly modülleri genellikle küçük boyutlu ve hızlı yüklenir, bu da özellikle CPU yoğun işlemler ve hesaplama servisleri için idealdir.

Neden Rust + WASM?

  • Performans: Rust, düşük seviyede kontrol ve sıfır maliyet soyutlamalar sunar; WASM ile birleştiğinde native benzeri performans sağlar.
  • Güvenlik: Rust’ın sahiplik (ownership) modeli bellek hatalarını ciddi oranda azaltır; WASM sandbox (koruma) katmanı ek güvenlik sağlar.
  • Taşınabilirlik: Aynı WASM ikili dosyası farklı platformlarda çalıştırılabilir.
  • Ekosistem: wasm-bindgen, wasm-pack gibi araçlar geliştirici deneyimini kolaylaştırır.

Ortam Seçimi: VPS, VDS ve Konteyner

WASM uygulamaları için uygun ortam seçimi uygulamanın kullanım senaryosuna göre değişir:

  • VPS (Virtual Private Server): Yönetilebilir, maliyet-dengeli ve hızlı başlangıç için uygundur. Türkiye VPS Sunucu gibi seçenekler, düşük gecikme ve ülke içi trafik avantajı sağlar.
  • VDS (Virtual Dedicated Server): Daha izole kaynaklar ve yüksek performans gerektiren iş yükleri için tercih edilir.
  • Konteyner (Docker): Ölçeklenebilirlik ve taşıma kolaylığı sağlar; özellikle microservice (mikroservis) mimarilerinde avantajlıdır.
Özellik VPS VDS Konteyner (Docker)
Kaynak İzolasyonu Orta Yüksek Değişken (host ile paylaşımlı)
Başlangıç Maliyeti Düşük Orta-Yüksek Düşük (özellikle bulut ortamlarında)
Ölçeklenebilirlik Manuel Manuel/otomatik Kolay (orchestration ile)
Dağıtım Kolaylığı İyi İyi Mükemmel

Kurulum Adımları ve Örnekler

1. Gerekli Araçlar

  • Rust toolchain (araç zinciri): rustup ile kurun.
  • wasm-pack: WASM paketleme aracı.
  • Wasmtime / Wasmer (runtime): Sunucu tarafında WASM çalıştırmak için tercih edilen çalışma zamanları.

2. Rust projesi oluşturma

Basit bir örnek ile başlayalım:

cargo new wasm_calc --lib
cd wasm_calc

Cargo.toml içerisine wasm hedefi ve gerekli bağımlılıkları ekleyin:

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2"

3. Örnek kod (basit hesaplama)

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub fn fib(n: u32) -> u64 {
    match n {
        0 => 0,
        1 => 1,
        _ => fib(n - 1) + fib(n - 2),
    }
}

4. Derleme ve paketleme

wasm-pack kullanımı:

wasm-pack build --release --target web

Sunucu tarafı (standalone) çalıştırma için wasmtime veya wasmer kullanabilirsiniz:

wasmtime target/wasm32-unknown-unknown/release/wasm_calc.wasm --invoke fib 10

Docker, Nginx ve Systemd Entegrasyonu

Konteyner ile dağıtım genellikle en hızlı ve tekrarlanabilir yöntemdir. Aşağıda hem statik WASM dosyası servis eden bir Dockerfile hem de sunucu tarafı Wasmtime çalıştıran bir Docker örneği bulunuyor.

1. Statik dosya servisi (nginx)

FROM nginx:stable-alpine
COPY ./pkg /usr/share/nginx/html
COPY ./index.html /usr/share/nginx/html/index.html

index.html içinden WASM modülünü aşağıdaki gibi çağırabilirsiniz:

<script type="module">
  import init, { fib } from './wasm_calc.js';
  await init();
  console.log(fib(10));
</script>

2. Sunucu tarafı WASM (wasmtime) Dockerfile

FROM ghcr.io/bytecodealliance/wasmtime:latest
WORKDIR /app
COPY ./wasm_calc.wasm /app/wasm_calc.wasm
COPY ./runner.js /app/runner.js
CMD ["wasmtime", "wasm_calc.wasm", "--invoke", "fib", "10"]

Sunucu üzerinde doğrudan çalıştırmak isterseniz systemd servisi oluşturabilirsiniz:

[Unit]
Description=Wasmtime WASM Service
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/wasm_app
ExecStart=/usr/bin/wasmtime wasm_calc.wasm --invoke fib 10
Restart=on-failure

[Install]
WantedBy=multi-user.target

Performans Optimizasyonları

WASM uygulamalarında performansı artırmak için dikkat edilmesi gerekenler:

  • Release derlemesi: Her zaman --release ile derleyin; debug araçları performansı düşürür.
  • Memory limit (bellek sınırı): Çalışma zamanı üzerinde bellek (memory) sınırlarını doğru belirleyin.
  • Precompilation (ön-derleme): Wasmtime/Wasmer JIT/AOT (just-in-time / ahead-of-time) seçeneklerini kullanın.
  • Kısıtlı bağlamlar: WASM ile sürekli büyük veri kopyalamaktan kaçının; paylaşılan bellek (shared memory) ve streaming (akış) tekniklerini tercih edin.

Örnek: Wasmtime AOT kullanımı:

wasmtime compile --target x86_64-wasi wasm_calc.wasm -o wasm_calc.cwasm
wasmtime run wasm_calc.cwasm --invoke fib 20

Güvenlik ve İzleme

Sunucunuzda Rust+WASM servisleri çalıştırırken şu güvenlik önlemlerini alın:

  • Kullanıcı izinleri: Hizmetleri ayrı, düşük yetkili kullanıcı altında çalıştırın (ör. www-data).
  • Network kısıtlama: Gerekmeyen portları kapatın ve sadece gerekli servisleri açın.
  • Runtime sandboxing: Wasmtime/Wasmer sandbox özelliklerini aktif kullanın.
  • Güncellemeler: Rust toolchain, runtime ve OS güvenlik güncellemelerini düzenli uygulayın.

İzleme için öneriler:

  • Loglama: WASM runner çıktısını merkezi bir log sistemine gönderin (ör. ELK/Elastic veya Grafana Loki).
  • Metric: CPU, bellek, gecikme (latency) metriklerini Prometheus ile toplayın.

Pratik Kullanım Senaryoları ve Örnekler

1. Hesaplama-yoğun API

Kullanıcıdan gelen yoğun matematiksel hesaplamaları WASM modüllerine verip hızlı sonuç döndürebilirsiniz. Bu, Node.js veya Rust tabanlı bir HTTP sunucusundan WASM modülüne çağrı ile yapılır.

2. Görüntü işleme pipeline

Resim dönüştürme (resize, filtre) işlemlerini WASM modüllerine taşıyarak bellek ve CPU verimliliği elde edilir. Bu senaryoda nginx önünde bir reverse proxy ve arka planda bir worker havuzu (pool) ile WASM runner kullanmak uygundur.

3. Çoklu tenant (çok kiracılı) mimari

Her tenant için izole WASM sandbox çalıştırarak çok kiracılı uygulamalarda performans ve güvenliği birlikte sağlayabilirsiniz. İzolasyon VDS seviyesinde artırılabilir.

Sıkça Sorulan Sorular

WASM modüllerini doğrudan bir VPS üzerinde çalıştırabilir miyim?

Evet. Wasmtime veya Wasmer gibi runtime (çalışma zamanı) araçları ile doğrudan bir VPS/VDS üzerinde WASM modüllerini çalıştırabilirsiniz. Ancak performans ve izolasyon gereksinimlerinize göre konteyner veya VDS tercih edilebilir.

Rust ile yazılmış WASM kodunu nasıl debug ederim?

Geliştirme aşamasında cargo ve wasm-bindgen'ın sağladığı kaynak haritaları (source map) kullanılabilir. Üretimde ise özellikle loglama ve unit testlere ağırlık verilmelidir; --release derlemesinde debug sembolleri olmamalıdır.

Hangi runtime daha iyi: Wasmtime mi Wasmer mi?

Her iki çalışma zamanı da güçlüdür. Wasmtime genellikle sunucu tarafı performans ve WASI (WebAssembly System Interface) desteği ile öne çıkar; Wasmer ise taşınabilirlik ve ESM modülleri açısından fayda sağlayabilir. Test ve yük (load) senaryolarınızda karşılaştırma yapın.

WASM ile native (yerel) Rust performansı arasında fark var mı?

Çoğu CPU-bağımlı görevde WASM <<>> native performansa yakın sonuçlar verir, ancak platform ve runtime optimizasyonlarına göre küçük farklar olabilir. AOT derleme ve bellek yönetimi iyileştirmeleri ile fark azaltılabilir.

Corelux üzerinde Rust+WASM uygulaması barındırmak için öneriniz nedir?

İhtiyacınıza göre Türkiye VPS Sunucu veya yüksek kaynak gerektiren iş yükleri için uygun Bulut Sunucu seçeneklerini değerlendirebilirsiniz. Uygulama sunucuları için hazır platformlar arıyorsanız Coolify Hosting gibi çözümler işinizi kolaylaştırır.

Sonuç

Rust + WebAssembly kombinasyonu, VPS/VDS üzerinde yüksek performanslı ve güvenli servisler oluşturmak isteyenler için güçlü bir seçenektir. Bu rehberde derleme, paketleme, konteynerleme, servis yönetimi ve optimizasyon adımlarını uygulamalı şekilde sunduk. Başlarken kaynakları aşamalı test edin: önce geliştirme ortamında, ardından VPS veya VDS üzerinde yük testleri ile gerçek kullanım senaryolarına geçin. Corelux'un Türkiye VPS Sunucu ve Bulut Sunucu hizmetleri, Rust+WASM projelerinizi üretime taşırken ihtiyaç duyacağınız esneklik ve performansı sağlar. Yardım veya kurulum desteği için Corelux hizmetler sayfasını inceleyebilir veya doğrudan hizmet ekibimizle iletişime geçebilirsiniz.

Uygulamanızı ölçeklendirmek, güvenliği sıkılaştırmak veya performans iyileştirme danışmanlığı almak isterseniz Corelux çözümleri ile hızlıca üretime geçebilirsiniz.

Yazar

Boran BAR

Chat on WhatsApp