- Serverless, aslında sunucu olmadığı anlamına gelmez; yalnızca başkasının sunucusunu kullandığınız anlamına gelir
- ServerFree mimarisi, arka uç sunucusu, container veya sanal makine olmadan kod çalıştırabilen bir kavram öneriyor
- Bu mimaride kod tarayıcı içinde çalışır ve yalnızca statik dosyaları sunan bir sunucu gerekir
- Web uygulamasını tarayıcıda çalışacak şekilde paketleme yöntemi gösteriliyor
- Frontend kodu her zamanki gibi build edilir; backend paketlenip web worker içinde çalıştırılır ve veritabanı olarak WebAssembly'ye derlenmiş SQLite kullanılır
Fikir
- İçerik pazarlaması kapsamında bir demo proje yapmaya karar veriliyor ve Hacker News'ten ilhamla, gizlilik yönüyle dikkat çeken bir iş başvurusu takip aracı geliştiriliyor
- Bu proje, web worker, belge uyumsuzlukları ve eksik belgeler gibi sorunları çözerken yeni bir mimari geliştirme sürecine dönüşüyor
Klasik mimariyle ilk deneme (kolay kısım)
- Uygulama, veritabanı şemasını değiştirmek ve izinleri ayarlamak için SubZero CLI kullanılarak geliştiriliyor
- CRUD ve filtreleme özellikleri sunuluyor, ancak demodan çok ürüne yakın bir arayüz özelleştirmesi yapılıyor
- Soldaki boşa giden alanı azaltmak için kenar çubuğu üste taşınıyor
- "Opportunities" sayfasına Show, Create, Edit ve List bileşenleri ekleniyor
- Arka uç koduna dokunmadan karmaşık filtreleme akışları uygulanıyor
- Dashboard iyileştirilerek "açık fırsatlar", "başvuru başına ortalama ilerleme" ve "başvurudan sonra geçen ortalama gün" gibi veriler gösteriliyor
- Production dağıtımı için Docker image oluşturuluyor, veritabanına seed verisi ekleniyor ve container çalıştırılıyor
- Verilerin kalıcı olması için SQLite veritabanı dosyası container dışında tutuluyor
- SQLite veritabanının kalıcılık ve yedekleme sorunlarını çözmek için Turso DB kullanılıyor
ServerFree mimarisine geçiş (eğlenceli kısım)
- SQLite, veritabanı olarak kullanılmak üzere WebAssembly'ye derleniyor
- Verileri depolamak için OPFS (Origin-Private FileSystem) kullanılıyor
- Arka uç kodu, UI thread'ini bloklamamak için web worker içinde çalıştırılıyor
- Tarayıcı uyumluluğu sağlamak için Express, itty-router ile değiştiriliyor
- UI ile backend arasındaki istekleri yakalayıp işlemek için service worker kullanılıyor
- Service worker ile web worker arasında güvenilir iletişim, ana thread üzerinden kuruluyor
- Kimlik doğrulamayla ilgili kod ana thread'den (UI) kaldırılıyor
- Veriler kullanıcının bilgisayarında saklanıyor ve sunucuya gönderilmiyor
Sonuç
- Bu mimari özellikle müşteri verilerinin bağımsız olduğu ve kullanıcılar arasında paylaşılmasının gerekmediği durumlarda faydalı
- Arka uç sunucusu olmadığı için barındırma maliyetleri düşüyor, veri gizliliği güçleniyor ve güvenlik artıyor
- Electric gibi araçlar kullanılarak veritabanının bir kısmı istemciyle senkronize edilebilir ve bazı istekler/sorgular tarayıcıda işlenebilir
1 yorum