Deno Ekibi Cloudflare'e Katılıyor: Workers ve Durable Objects Kendi Kendine Barındırma İçin Birleşiyor
Deno ekibi Cloudflare'e katılarak Workers ve Durable Objects'in kendi kendine barındırılmasını radikal biçimde basitleştirmeyi amaçlıyor. Ryan Dahl ve Bert Belder, workerd'in kendi kendine barındırılmasını birinci sınıf desteklenen bir yol haline getirmek üzere yeni bir çalışmaya liderlik edecek; bu çalışma celld'den kod ve fikirlerin workerd'e geri birleştirilmesini içerecek.
Deno Ekibi Cloudflare'e Katılıyor
Deno ekibi Cloudflare'e katılıyor. Amaç, Workers ve Durable Objects'in kendi kendine barındırılmasını radikal biçimde basitleştirmek ve geliştiricilerin aynı primitifleri daha fazla yerde kullanabilmesini sağlamak.
Node.js'ten Durable Objects'e Uzanan Yol
Ryan Dahl, uzun yıllar önce Berlin'de bir depoda 500 satırlık bir JavaScript IRC sunucusu ve canlı izleyici katılımıyla Node.js'i tanıttı. Node.js, tamamen asenkron bir programlama modelinin neleri mümkün kılabileceğine dair bir keşifti. Senkron ağ iletişiminin kaldırılması, daha önce çok daha fazla makine gerektiren sistemlerin inşa edilmesini kolaylaştırdı.
Ancak eski IRC demosu tek sunucu ve hatta tek iş parçacığı üzerinde çalışıyordu. IRC'yi ölçeklendirmek sonunda kanalların makineler arasında paylaşıldığı birden fazla makine gerektirir. Modern bir sohbet uygulaması ayrıca mesaj geçmişini, kullanıcı hesaplarını ve diğer verileri depolamalıdır. Ryan Dahl, Deno'yu bu tür daha güçlü soyutlamalar bulmak için başlattı. Deno ile JavaScript yazma deneyimi iyileştirildi, ancak geliştiricilerin runtime etrafında bir araya getirmek zorunda olduğu şeyler temelden değiştirilmedi.
Daha büyük sorunlar ağ uygulamaları etrafındadır: hesaplamayı dağıtmak, durumu koordine etmek, genel olarak veri depolama ve talebi karşılamak için otomatik ölçeklendirme. Deno Deploy'u inşa etmek ve işletmek, bulut altyapısının ne kadar karmaşık hale gelebileceğini gösterdi: birden fazla genel bulut, birden fazla veritabanı ve derinden iç içe geçmiş hizmetler.
Durable Objects: Dağıtık Singleton Soyutlaması
Cloudflare'in Durable Objects'i, SQLite veritabanına sahip dağıtık singleton soyutlaması sunar. Her Durable Object, kendi ilişkisel veritabanına sahip, ayrı ayrı adreslenebilir küçük bir sunucu gibidir. Durable Object'in JavaScript yürütmesi tek iş parçacıklıdır; WebSockets'i işler ve yerel SQLite veritabanına senkron olarak erişilebilir.
Kanal başına bir DO kullanarak bir sohbet uygulaması inşa etmek, veriyi ve WebSocket bağlantılarını parçalayarak uygulamayı ölçeklenebilir kılar. Durable Objects üzerine Queues, KV, Durable Execution (CF'nin Workflow API'si) ve hatta Git depolama gibi diğer hizmetler inşa edilebilir. Cloudflare Blog'a göre Durable Object soyutlaması basit ama inanılmaz derecede güçlüdür.
Workerd ve Celld: İki Açık Kaynak Çalışmanın Birleşmesi
Workerd zaten açık kaynaklıdır. Cloudflare Workers Runtime, workerd, açık kaynaklıdır; paralel bir uygulama değil, Cloudflare'in üretimde çalıştırdığı aynı koddur. Ancak workerd Durable Objects'i yalnızca tek örnekli biçimde uygular; bu yerel test için yeterlidir ancak ölçeklenemez.
Celld ise Rust ile yazılmış tek bir ikili dosyadır. Celld'in tek harici hizmet bağımlılığı nesne depolamadır. Celld'i çalıştırmak için birçok celld örneği ve tek bir nesne depolama kovası yönetilir. Uygulama, her biri ayrı bir altyapı projesi gerektirmeden birçok hizmet içerebilir.
Deno ekibi celld'i Ağustos ayında yayımladı. Cloudflare, workerd ve celld çalışmalarını birleştiriyor. Ryan ve Bert, workerd'in kendi kendine barındırılmasını Workers programlama modeli kullanan uygulamalar inşa etmek ve çalıştırmak için birinci sınıf desteklenen bir yol haline getirmek üzere yeni bir çalışmaya liderlik edecek. Bu çalışma, celld'den kod ve fikirlerin workerd'e geri birleştirilmesini içerecek. Beklemek istemeyenler bugün celld veya workerd'i kendi kendine barındırmaya başlayabilir.
Kilitlenme Teorisi ve Açık Kaynak Stratejisi
İnternette yaygın olarak iddia edildiğine göre Cloudflare, "kilitlenme" yaratmak için Workers'ı diğer bulut platformlarından farklı çalışacak şekilde tasarladı. Bu teoriye göre Workers üzerine inşa edilen yazılımın diğer barındırma platformlarına taşınması zordur; uygulama yazanlar sonsuza kadar Cloudflare'e "hapsolur". Durable Objects kullanan uygulamalar yalnızca farklı yazılmaz, aynı zamanda farklı biçimde mimarilenir. Bu teoriye göre celld bir tehdittir çünkü Workers ve Durable Objects'in açık kaynak uygulaması olarak Workers üzerine inşa edilen uygulamaların diğer sağlayıcılara sorunsuz geçmesini sağlar.
Cloudflare bu kilitlenme teorisinin yanlış olduğunu belirtiyor. Cloudflare, Workers'ı farklı inşa etti çünkü bunun web uygulamaları inşa etmek için daha iyi bir yol olduğuna inanıyor. Fiyatlandırma bir hile değildir; rakiplerden daha verimli, yeni bir mimari yaratıldı ve tasarruflar müşterilere aktarıldı. Cloudflare, bulut yazılımı için daha iyi bir programlama modeli yarattığına inanıyor. Eğer bu faydalar sunulabilse ve geleneksel bulut platformlarıyla tamamen uyumlu olunabilseydi, kesinlikle yapılırdı. Ancak gerçekte inovasyon bazen işleri farklı yapmayı gerektirir. Uzun vadede herkesle aynı olmaktan çok farklı ve daha iyi olmak daha iyidir.
Cloudflare Blog'a göre "kilitlenme" aslında Cloudflare'e zarar verir. Workers'tan gerçekten hiçbir kaçış yolu olmasaydı, en büyük müşterilerinin bazıları baştan onlarla sözleşme imzalamazdı. Cloudflare, Workers for Platforms'u 2022'de Shopify gibi müşterilere sundu; müşteri geri bildirimi netti: Workers Runtime açık kaynak olmadıkça muhtemelen üzerine inşa edemezlerdi. Cloudflare, Workers Runtime'ı açık kaynak haline getirdi. Cloudflare'den workerd kullanarak ayrılan eski müşteriler vardır. Açık kaynak olmasaydı bu müşteriler baştan sözleşme imzalamazdı ve ayrılan her bir müşteriye karşılık kalan birçok müşteri var. Açık kaynak olmak ve insanlara bir kaçış yolu sunmak iyi bir iştir.
Workerd'in Üretim Boşluğu ve Gelecek Planı
Cloudflare, workerd'i gerçekten insanların üretimde kullanması niyetiyle yayımladı. Şimdiye kadar çok az kişi workerd'i üretimde kullandı ve çoğu insan bunun mümkün olduğunu bile bilmiyor gibi görünüyor. Cloudflare bunu her zaman düzeltmek istedi. Cloudflare Blog'a göre Cloudflare, bunu gerçekten işe yaraması için gerekli komşu hizmetler ve araçlar ekosistemini oluşturmada iyi bir iş çıkarmadı; runtime'ı yayımladı ve topluluğun her olası ortama uyarlamaya başlamasını umdu, ancak işler o şekilde yürümedi ve Cloudflare belki de naifti.
Workerd'in üretime hazır olmasında her zaman büyük bir boşluk vardı: Durable Objects. Cloudflare'in Durable Object yönlendirmesinin üretim uygulaması, herhangi bir kendi kendine barındıran kişinin isteyeceği uygulama değildir; yüzlerce konumu işlemek üzere tasarlanmış, site güvenilirlik mühendisleri ekibi tarafından işletilen harici hizmetlere birçok bağımlılığı olan bir canavardır. Cloudflare, kendi kendine barındırma kullanım durumu için farklı bir şeye ihtiyaç olduğunu biliyordu ama bunu inşa etmeye zaman bulamadı. Orijinal sürümden kalma kodda TODO yorumları vardır.
Deno ekibi, bu projede güçlerini birleştirmek istediklerini Cloudflare'e söyledi. Cloudflare Blog'a göre Deno'nun yardımıyla daha iyisini yapabilirler. Cloudflare, bu çalışma hakkında önümüzdeki aylarda daha fazla duyuru yapacak.