Wasm yeni CGI
- Wasm'ın rolü: Wasm (WebAssembly), web uygulaması modelinde yeni bir değişim getirmeye hazırlanıyor. Odak noktası, yüksek performanslı uygulamaların kolayca kurulup sürdürülebilmesini sağlamak.
- Geçmiş web uygulaması modeli: CGI, web'i bir belge arşivinden bir uygulama ağına dönüştürdü. FastCGI, performans sorunlarını çözmek için geliştirildi ve daha sonra serverless bilişime evrildi.
- Serverless bilişim: Amazon Lambda gibi serverless bilişim modelleri, sunucu yönetmek yerine "fonksiyon" yönetmenizi sağlar. Bu da istek hacmine göre hızla ölçeklenebilme avantajı sunar.
Sunucuda Wasm
- Wasm'ın genişleyebilirliği: Wasm yalnızca tarayıcıda değil, sunucuda da çalışabilir ve bu da sunucu tarafı uygulamalar için daha hafif bir izolasyon modeli sunar.
- Wasm çalışma ortamı: Wasm modülleri sanal makinede çalışır ve çeşitli dillere derlenebilir. Bu, serverless ortamlarda performans artışına katkı sağlayabilir.
Wasm'ın trade-off'ları
- Thread'ler ve JIT derleme: Wasm, thread'leri varsayılan olarak desteklemez ve JIT derleme mümkün değildir. Bu durum performansı etkileyebilir.
- Bellek arayüzü: Wasm modülü ile host arasındaki veri taşınması kopyalama gerektirebilir ve bu da performansı etkileyebilir.
Gelecek perspektifi
- Wasm'ın gelişimi: Wasm çalışma ortamları ve geliştirme araçları ilerledikçe, scripting dilleri Wasm runtime'larına sahip olacak. Bu, uygulamaların çalışma hızını büyük ölçüde artırabilir.
- Edge computing: Wasm, edge computing aracılığıyla hesaplamanın kullanıcıya yakın yerde yapılmasını mümkün kılar ve bu da performansı artırır.
# GN⁺ özeti
- Wasm, web uygulaması modelinde yeni bir değişime öncülük ediyor ve bu sayede yüksek performanslı uygulamalar kolayca kurulup sürdürülebiliyor.
- Serverless bilişim ile Wasm'ın birleşimi, sunucu yönetiminin karmaşıklığını azaltırken istek hacmine göre hızlı ölçeklenme avantajı sağlıyor.
- Wasm yalnızca tarayıcıda değil, sunucuda da çalışabiliyor ve bu da sunucu tarafı uygulamalar için daha hafif bir izolasyon modeli sunuyor.
- Wasm'ın gelişimi, scripting dillerinin Wasm runtime'larına sahip olmasını sağlayarak uygulamaların çalışma hızını büyük ölçüde artırabilir.
- Edge computing sayesinde hesaplama kullanıcıya yakın yerde yapılabilir ve bu da performansı artırır.
1 yorum
Hacker News görüşü
Amazon, Lambda ile sunucusuz bilişim çağını başlattı. Google App Engine ise Lambda'dan 6 yıl önce piyasaya çıktı.
WASM ile Java Applets, ActiveX, Silverlight, Macromedia Flash gibi önceki teknolojiler arasındaki farkı anlamak zor. Web tarayıcısında güvenilmeyen üçüncü taraf derlenmiş kodunu çalıştırma konusunda ders aldığımızı sanıyordum.
JIT derleme, güvenlik gerekçeleriyle dinamik WASM kodu üretimine izin verilmediği için mümkün değil. Bu, kod hot reload gibi işleri düzgün yapabilmek için gerekli temel bir özellik.
Güvenlik iddialarını inandırıcı bulmuyorum. Çalışma zamanında JS hot reload ya da kod üretimi yapılabiliyor ve WASM çalışma zamanı dinamik olarak yeniden yüklenip bellek korunabiliyor, ama kullanıcı deneyimi kötü olur.
Bunun teknik olarak neden imkansız olduğunu bulamadım. Eğer bu bir güvenlik önlemiyse, kolayca aşılabilir olurdu.
WASM bytecode'u, .NET IL, Java bytecode vb. gibi JIT derleme için tasarlanmış şeylerle kavramsal olarak benzer.
WASM projesinin net bir yönü ve başarı konusunda güçlü bir iradesi olmadığını düşünüyorum. Temel özellikler hâlâ eksik.
WASM, belirli bir dilin VM'ini genel amaçlı bir VM ile değiştiriyor. Bu da derleyici veya yorumlayıcıyla neredeyse her şeyi çalıştırabilmek anlamına geliyor.
WASM; JavaScript'in yerine, Docker'ın yerine, Java'nın yerine, CGI'ın yerine gelecek şey gibi konumlandırılıyor. Yani her şey olmaya çalışıyor.
WASM'in, PHP uygulamaları gibi kolayca barındırılıp dağıtılabilmesi gerektiğini düşünüyorum. Muhtemelen henüz o noktada değil.
Yazılımın eski bir kuralını hatırlatıyor: Yeterince büyük ve eski her uygulama, eninde sonunda çalıştığı tüm yazılım yığınını yeniden uygular.
Sunucu tarafı WASM'in büyük vaadi, düzenli güncelleme gerektirmeyen kalıcı bir platform sunması.
Geleceğin local-first olduğunu düşünüyorum. Uygulamalar ağırlıklı olarak kullanıcının tarayıcısında çalışmalı ve sunucudan çok az yardım almalı.
WASM, kullanıcının tarayıcısında başarılı olabilir. Microsoft bunu C#/Blazor için kullanıyor.
Sanki JVM'i ve onun ekosistemini yeniden icat ediyoruz.
WASM'in bulutta lambda fonksiyonu çalıştıran kodun yerini alma yönünde ilerleyeceğini düşünüyorum.
WASM geleneksel olarak host platformda çalışan bir şey olarak görülse de, bunun böyle olması şart değil.
WASM'in sandbox özellikleri sayesinde işletim sisteminin dışında ya da ring0'da çalıştırılabilir.