İçeriğe atla

WebAssembly

WebAssembly Tarayıcı Tabanlı Dosya İşlemeyi Nasıl Dönüştürüyor?

5 min read

On yıllar boyunca, web katı bir işbölümü üzerinden işledi: istemci (web tarayıcınız) sunum ve kullanıcı arayüzüyle ilgilenirken, sunucu ağır işleri halletti. Bir görüntüyü sıkıştırmanız, bir videoyu dönüştürmeniz veya karmaşık bir PDF belgesini düzenlemeniz gerekirse, tarayıcınız temelde akılsız bir terminaldi. Dosyanızı paketler, internet üzerinden güçlü bir sunucuya gönderir, sunucunun dosyayı işlemesini bekler ve ardından sonucu indirirdi.

Bu istemci-sunucu modeli gerekliydi çünkü web tarayıcıları tarafından yerel olarak anlaşılan tek programlama dili olan JavaScript, başlangıçta form doğrulama ve temel animasyonlar gibi basit görevler için tasarlanmıştı. Devasa ikili (binary) dosyaları ayrıştırmak veya karmaşık matematiksel hesaplamaları verimli bir şekilde gerçekleştirmek için oluşturulmamıştı.

Ancak internetin manzarası çarpıcı bir şekilde değişiyor. WebAssembly (genellikle Wasm olarak kısaltılır) adı verilen çığır açan bir teknoloji, bir web tarayıcısında nelerin mümkün olduğunun kurallarını temelden yeniden yazıyor. WebAssembly, web'e yerel (native) düzeyde bir performans getirerek, karmaşık dosyaları yerel olarak, güvenli ve anında işleyen yeni nesil "Sıfır Sunucu" (Zero-Backend) uygulamalarını mümkün kılıyor.

WebAssembly (Wasm) Nedir?

Devrimi anlamak için önce teknolojiyi anlamamız gerekiyor. WebAssembly, geliştiricilerin kod yazdığı Python veya Java gibi yeni bir programlama dili değildir. Bunun yerine, bir ikili komut formatıdır (binary instruction format).

Bunu evrensel bir çeviri hedefi olarak düşünün. Geliştiriciler uygulamalarını C, C++, Rust veya Go gibi yüksek performanslı, düşük seviyeli dillerde yazabilirler. Geleneksel olarak bu kod, belirli bir işletim sistemi için çalıştırılabilir bir dosyaya derlenirdi (Windows için bir .exe veya macOS için bir .app dosyası gibi). WebAssembly ile geliştiriciler aynı yüksek performanslı kodu bir .wasm dosyasına derlerler.

Bu .wasm dosyası, tüm modern web tarayıcılarının (Chrome, Firefox, Safari, Edge) neredeyse yerel hızlarda doğrudan yürütebileceği, son derece optimize edilmiş, kompakt bir ikili formattır. JavaScript'in yerine geçmez, ancak JavaScript'in zorlandığı hesaplama açısından yoğun görevleri halleden güçlü bir müttefik olarak onunla birlikte çalışır.

Ağır İşlemler İçin JavaScript'in Sorunu

WebAssembly'nin neden bu kadar önemli olduğunu anlamak için JavaScript'in sınırlamalarına bakmalıyız. JavaScript yorumlanan, dinamik olarak yazılan bir dildir. Bir tarayıcı JavaScript çalıştırdığında, insan tarafından okunabilen kodu ayrıştırmalı, anında (Just-In-Time) derlemeli ve yürütme sırasında değişkenlerin türlerini sürekli olarak kontrol etmelidir.

Google'ın V8'i gibi modern JavaScript motorları inanılmaz derecede hızlı olsa da, devasa ikili veri dizileriyle uğraşırken (ki resimler, videolar ve PDF dosyaları tam olarak böyledir) bir duvara çarparlar. 100 sayfalık bir PDF'yi tamamen JavaScript'te işlemek yavaştır, bellek yoğundur ve tarayıcı sekmesini çökertmeye eğilimlidir.

Bu sınırlama nedeniyle, web tabanlı araçlar oluşturan geliştiricilerin bulut sunucularına güvenmekten başka seçeneği yoktu. Tarayıcı kullanıcı arayüzünü (UI) işlerdi, ancak asıl dosya manipülasyonu C++ veya Java çalıştıran bir sunucuya devredilirdi.

Wasm Paradigma Değişimi: Her Şey İstemci Tarafında

WebAssembly denklemi tamamen değiştirir. Wasm kodu, tarayıcıya ulaşmadan önce derlenmiş ve yüksek oranda optimize edilmiş olduğundan, tarayıcının motoru onu neredeyse yerel bir masaüstü uygulaması kadar hızlı yürütebilir.

Bu, Sıfır Sunucu (Zero-Backend) mimarisinin kilidini açar. Dosya işlemenin WebAssembly ile nasıl değiştiğine bakalım:

  1. Eski Yol (Bulut İşleme): Bir bulut dönüştürücüye 50 MB'lık bir PDF yüklersiniz. Dosya internet üzerinden seyahat eder (zaman ve bant genişliği alır). Sunucu bunu alır, bir arka uç betiği (belki C++ ile yazılmış) PDF'yi sıkıştırmak için işler. Sunucu sıkıştırılmış dosyayı kaydeder ve siz onu indirirsiniz. Tamamen sunucunun kullanılabilirliğine, gizlilik politikasına ve internet yükleme hızınıza güveniyorsunuz.
  2. Yeni Yol (WebAssembly): Sıfır Sunucu tabanlı bir web sitesinde 50 MB'lık bir PDF seçersiniz. Web sitesi, derlenmiş bir C++ PDF sıkıştırma kitaplığı içeren küçük bir .wasm dosyasını tarayıcınıza yükler. Tarayıcı, 50 MB'lık PDF'nizi doğrudan yerel sabit sürücünüzden RAM'e okur. WebAssembly modülü, bilgisayarınızın CPU'sunu kullanarak dosyayı yerel olarak sıkıştırır. Sıkıştırılmış dosya hemen sabit sürücünüze geri kaydedilir.

Bu Kullanıcılar İçin Neden Bir Devrim Niteliktedir?

Dosya işlemenin WebAssembly aracılığıyla bulut tabanlı sistemlerden tarayıcı tabanlı sistemlere kayması, son kullanıcılara derin avantajlar sağlar.

1. Eşi Görülmemiş Gizlilik ve Güvenlik Bir dosya cihazınızdan asla ayrılmadığında, aktarım sırasında ele geçirilemez, bir şirketin veritabanından hacklenemez ve veri madenciliği için gizlice analiz edilemez. Hukuk profesyonelleri, sağlık çalışanları ve hassas finansal belgelerle ilgilenen herkes için WebAssembly, verilerinizin gizli kalacağına dair matematiksel kesinlik sağlar. "Dosyalarınızı 1 saat sonra siliyoruz" politikasına güvenmenize gerek yoktur, çünkü dosyalar en başta asla karşı sunucuya yüklenmez.

2. Anında İşleme ve Sıfır Yükleme Süresi Büyük dosyaları bir sunucuya yüklemek, bulut işlemedeki genellikle en büyük darboğazdır. Yavaş bir otel Wi-Fi ağında veya zayıf bir hücresel bağlantıdaysanız, devasa bir videoyu veya belgeyi yüklemek sonsuza kadar sürebilir. WebAssembly ile, dosyayı seçtiğiniz milisaniye işlem başlar. Modern dizüstü bilgisayarlar ve akıllı telefonlar inanılmaz derecede güçlü çok çekirdekli işlemcilere sahip olduğundan, yerel yürütme genellikle bir bulut hizmetinin tüm yükleme-işleme-indirme döngüsünden daha hızlıdır.

3. Çevrimdışı (Offline) İşlevsellik Asıl işleme motoru (yani .wasm dosyası) web sitesini ziyaret ettiğinizde tarayıcınıza indirildiği için, birçok Sıfır Sunucu aracı tamamen çevrimdışı çalışabilir. WebAssembly destekli bir PDF düzenleyiciyi yükleyebilir, internet bağlantınızı kesebilir ve uçaktayken veya uzak bir konumdayken belgeleri birleştirmeye, bölmeye ve sıkıştırmaya devam edebilirsiniz. Web uygulaması tam olarak yerel bir masaüstü uygulaması gibi işlev görür.

4. Düşük Altyapı Maliyetleri (Daha İyi Ücretsiz Araçlar Demek) Ağır işleme sunucuları çalıştırmak yazılım şirketleri için inanılmaz derecede pahalıdır. Bu maliyetleri dengelemek için, bulut tabanlı araçlar genellikle sitelerini rahatsız edici reklamlarla doldurur, katı dosya boyutu sınırları uygular veya pahalı premium abonelikler gerektirir. Sıfır Sunucu araçları, hesaplama maliyetini kullanıcının cihazına aktardığından, geliştiricilerin sunucu maliyetleri neredeyse sıfıra düşer. Bu, geliştiricilerin kullanıcı verilerinden para kazanmaya gerek kalmadan güçlü, sınırsız araçları ücretsiz olarak sunmalarına olanak tanır.

Web Uygulamalarının Geleceği

WebAssembly sadece PDF işleme için değildir. Şimdiden ağır masaüstü yazılımlarını web'e taşımak için kullanılıyor. Figma, son derece duyarlı vektör grafikleri motoru için WebAssembly kullanıyor. AutoCAD, onlarca yıllık C++ kod tabanını Wasm kullanarak web'e taşıdı. Unity ve Unreal Engine, karmaşık 3D oyunları doğrudan tarayıcıya dışa aktarıyor. Artık bütün işletim sistemleri bile bir tarayıcı sekmesinin içinde başlatılabiliyor.

WebAssembly gelişmeye devam ettikçe (bilgisayarın dosya sistemine doğrudan erişim, çoklu iş parçacığı (multi-threading) ve çöp toplama (garbage collection) gibi yeni özellikler kazandıkça) bir "web sitesi" ile "masaüstü uygulaması" arasındaki çizgi tamamen ortadan kalkana kadar bulanıklaşacaktır.

Dosya işleme araçları için gidişat belli. Temel manipülasyonlar için kişisel belgeleri gizemli bulut sunucularına yükleme çağı sona eriyor. WebAssembly, cihazınızın işi yaptığı ve verilerinizin sizin ellerinizde kaldığı merkezi olmayan, güvenli ve ışık hızında web uygulamalarının yeni bir çağını başlatıyor. Tarayıcı artık sadece bir belge görüntüleyici değil; tam teşekküllü bir işletim sistemi ve WebAssembly onun anadili.

Buy me a coffee