Ryan Dahl'ın JavaScript Container'ları Hakkındaki Düşünceleri
(tinyclouds.org)- Docker, Linux container'larını yaygınlaştırdı: OS düzeyinde sanallaştırma ile yazılım dağıtımını kolaylaştırdı
- Cloudflare Workers ve Deno Deploy, JS Container kavramını (farklı ortamlarda) hayata geçiren örnekler
- JS container'ları önümüzdeki birkaç yılda nasıl ilerleyecek?
Evrensel Betik Dili
- Gittikçe daha fazla şey web tabanlı olarak birbirine bağlanıyor: The web is eating the world
- Web, insanlığın bilgisinin temel ortamıdır ve JS, web altyapısına derinlemesine entegre olduğu için diğer dillerden farklıdır
- Betik dilleri, sunucu tarafındaki birçok sorunu çözer ve iş mantığının daha hızlı ve daha düşük maliyetle yazılmasını sağlar
- Betik dilleri faydalıdır, birbirlerine büyük ölçüde benzerler; JavaScript ise en yaygın kullanılanıdır ve gelecekte de kullanılabilir
- Yani JavaScript'i evrensel betik dili olarak düşünebiliriz
Shell : Executables :: JavaScript : WebAssembly
-
Sunucular için yeni bir üst seviye container olan JavaScript Sandbox ortaya çıkıyor
-
Bu, Linux container'larının hedeflediği sorunları çözmek için ortaya çıkmış bir şey değil
-
Basitleştirmenin bir sonucu olarak ortaya çıktı
→ web hizmeti iş mantığındaki boilerplate'i en aza indirmek
→ tarayıcıyla kavramsal ortaklık kurmak ve programcının bilmesi gereken kavramları en aza indirmek -
Tüm web mühendisleri JavaScript tarayıcı API'lerini zaten biliyor
→ JS container soyutlaması da aynı tarayıcı API'leri temelinde kurulduğu için öğrenilmesi gereken şeyler azalıyor
→ JS'nin evrenselliği karmaşıklığı azaltıyor -
Shell, Unix programlarını çalıştırmak için yorumlanan bir betik dilidir
→ koşullar, döngüler ve değişkenler vardır ama sınırlıdır; bu yüzden programlama yapmak zordur. Asıl işi yürütülebilir dosyalar yapar -
Bu yeni sunucu soyutlama katmanında JS, Shell'in yerini alıyor
→ Bash/Zsh'ye göre betik yazmaya daha uygundur; ancak Shell'in yürütülebilir dosyaları çağırması gibi, JS Sandbox da WASM'i çağırır
→ görüntü yeniden boyutlandırma gibi karmaşık işler gerekiyorsa, bunu JS ile yazmak yerine WASM kullanmak daha iyidir
→ tıpkı bash'te görüntü yeniden boyutlandırma yapmayıp Imagemagick çağırmak gibi
Kuzey Yıldızı
- Betiklerin geleceği tarayıcı JavaScript'idir
- Node.js'in en temel hatası, yeni API'ler standartlaşırken tarayıcıdan uzaklaşıp çok fazla şeyi icat etmiş olmasıdır
→ 2010'da elimizde ES modülleri bile yoktu, ama standartlaştıktan sonra bunları Node'a taşımamız gerekti
→ Promise, Async/Await, Fetch, Streams ve daha birçok şey böyle oldu
→ standart dışı CommonJS require, package.json, node_modules, npm ve global process nesnesi sonunda ya standartlaşıp tarayıcıya eklenecek ya da web tabanlı başka şeylerle değiştirilecek - Yüksek seviyeli container'lar henüz standartlaşmış değil ve tüm bunların nasıl gelişeceğini hâlâ pek bilmiyoruz
- Şu anda Cloudflare Workers ve Deno Deploy, FetchEvent API'yi kullanıyor; ancak daha iyi bir arayüz bulunabilir
Sonuç
- JavaScript genel amaçlı bir betik dilidir
- JavaScript'in yaygınlığı sayesinde, sunucuyu basitleştiren yeni container benzeri soyutlamalar ortaya çıkıyor
- Bu, Linux container'larının ortadan kalkacağı anlamına gelmiyor. O soyutlama düzeyi yararlı olmaya devam edecek
→ insanların yazdığı birçok "iş mantığı" için biraz daha düşük seviyeli bir soyutlama olduğu anlamına geliyor
→ bir web sitesi kurarken systemd ayarları gibi şeyler boilerplate'tir - Muhtemelen birçok "web hizmeti", Linux container'ları yerine JavaScript container'ları perspektifinden düşünülürse basitleştirilebilir
- Biz de Deno'da bu fikri araştırıyoruz
→ sunucu soyutlamasını kökten basitleştirmeye çalışıyoruz
2 yorum
Çeviri yazısı çıkmış.
https://medium.com/@yujso66/…
Kendi açımdan özetlemeye çalışırsam
diye özetlenebilir sanırım.
Anlamayı kolaylaştıracak diğer bağlantılar