İçeriğe git
cutty.dev
All posts

cutty.dev teknoloji yığını — bilinçli seçimler

cutty.dev'in altında ne var ve neden? Müjdeleme yapmadan — felsefe: sıkıcı, kararlı bir stack, AB'de barındırma ve tek bir kişinin sürdürebileceği mimariye işlenmiş gizlilik.

"benim teknoloji yığınım" girişlerinin çoğu gururla dolu bir yenilik listesidir. Bak, buna sahibim, şuna sahibim ve burada geçen haftadan kalma yepyeni bir kütüphane var. Bu farklı olacak.

Gerçek şu ki, bir projeyi tek başınıza yönetiyorsanız en moda olanı aramazsınız. Sizi gece saat üçte uyandırmayacak bir şey ararsınız. cutty.dev teknoloji yığınının (stack) tüm olayı da budur: modanın yerine sıkıcı olanı, Amerikan tarzı yerine Avrupa tarzını, temelden itibaren gizliliği ve tek bir çift elin bile kavrayabileceği kadar basit olanı seçmek.

Sanki sana kahve eşliğinde açıklıyormuşum gibi sırayla anlatıyorum.

Sunucu tarafında işlenen Astro (ve neden daha "havalı" bir şey değil)

cutty.dev, sunucu tarafında işleme (SSR) özelliğine sahip bir Astro projesidir. Her istek sunucu üzerinden geçer, sayfayı oluşturur ve hazır HTML'i geri gönderir. Sıkıcı mı? Tam olarak öyle olması isteniyor.

Üç şey istiyordum: ağır makineler olmadan sunucu tarafında renderleme, hazır ve düzgün çoklu dil desteği ve ek yük olmadan hız. Astro tüm bunları sağlıyor ve kod okunabilir kalıyor. İki aylık bir aradan sonra ona geri döndüğümde, orada neler olup bittiğini biliyorum. Tek başına yürütülen bir projede bu, bir yıl sonra kimsenin desteklemediği herhangi bir popüler eklentiden çok daha değerlidir.

Havai fişekli bir veritabanı yerine tek bir dosya

SQLite. Tek bir veritabanı, diskte tek bir dosya. Buna ek olarak TypeScript ile konuşan bir sorgu katmanı var; böylece veri yapısını değiştirdiğimde hata üretim ortamında gece yarısı değil, editörümde karşıma çıkıyor.

Neden özellikle bu? cutty "read-heavy" (okuma ağırlıklı) bir yapıya sahip. Birisi kısaltılmış bir bağlantıya tıklar, biz okuma yaparız ve sayacı artırırız. Bu kadar. SQLite, günlük gerçekten büyük rakamlara ulaşana kadar bu trafiği rahatlıkla kaldırır. Peki ya yedekleme? Dosyayı kopyalarsınız. Bu kadar. Replikasyon seremonileri olmadan, kimsenin nasıl çalıştığını hatırlamadığı betikler olmadan.

Burada bir şeye dikkat etmelisin, çünkü bu sıkça düşülen bir tuzaktır: insanlar "SQLite" duyduklarında "geçme ödevi için bir oyuncak" diye düşünürler. Doğru değil. Daha az hareketli parça, bozulabilecek daha az şey demektir. Bu kaliteden tasarruf etmek değil, bilinçli bir karardır.

Sunucu Avrupa'da bulunuyor ve bu bir tesadüf değil

AB'de özel sunucu. Kendi TLS'niz, otomatik HTTPS özellikli ters vekil sunucu (reverse proxy), konteyner tabanlı uygulama.

Bu, cutty'nin verilerle nasıl başa çıktığının temelidir. Verilerin fiziksel olarak tam olarak nerede bulunduğunu biliyorum (AB ve GDPR kapsamındaki müşteriler için bu bir merak konusu değil, bir zorunluluktur), tek bir sağlayıcıya bağlı değilim, hiçbir şey otomatik olarak okyanus ötesine sızmıyor ve maliyetler trafikle birlikte dalgalanmak yerine öngörülebilir durumda.

Evet, Batı'daki konforlu platformlar daha hızlı bir başlangıç sağlardı. Tıklıyorsun, deploy ediyorsun, çalışıyor. Sadece bunun karşılığını kullanıcılarınızın verilerinin nereye gittiğiyle ödüyorsunuz. Benim için bu kötü bir anlaşmaydı.

Çevirileri kendi modelinle, kendi yerinde yap

cutty 25 dilde konuşuyor. Bunu benim altyapımda çalışan yerel, açık kaynaklı bir yapay zeka modeli çeviriyor. Arayüzdeki metni herhangi bir harici sağlayıcıya göndermiyorum.

Faydalar pratiktir. Tek bir çeviri sıfıra mal olur. Kalite üzerinde tam kontrole sahibim ve istediklerim zaman onları güncelleyebilirim. Ayrıca makineye her zaman bir insan gözü gerekir, bu yüzden bu 25 dilden her biri gözden geçirildi. Ancak bunu kendi bünyemde yapıyor olmam, gizliliğin fiyat listesinde bir kalem olmadığı anlamına gelir. Bu, bütünün nasıl inşa edildiğinin bir özelliğidir.

Tailwind, konteynerler ve birkaç küçük karar

Stil mi? Önce fayda odaklı (utility-first), yani Tailwind. CSS-in-JS yok, ayrı stil dosyaları yok, her şey doğrudan şablonların içinde. Sınıf isimleri uydurmakla vakit kaybetmiyorum, kullanılmayan stiller zaten nihai sayfaya dahil olmuyor ve tasarım sistemin kendisi bunu zorunlu kıldığı için bir bütünlük arz ediyor. Tek bir kişi için, gereksiz detaylarla harcanmayan her dakika değerlidir.

Bu bir Docker uygulamasıdır. Yerel ortamda ve üretimde aynı ortam; "bende çalışıyordu" dönemi sona erdi. Ve eğer bir gün gerekirse, tümünü başka bir sunucuya yaklaşık yarım saat içinde taşıyabilirim. Taşınabilirlik, sessiz bir bağımsızlık biçimidir.

Buradan ne çıkardım

Sıkıcı stack kazanır. Astro, SQLite, Tailwind, konteynerler. Her şey olgun, test edilmiş ve belgelenmiş. En az ihtiyacınız olduğu anda hiçbir şey patlamaz.

AB'deki hosting gerçekten üretime hazır. "Ciddi olmak için devasa Amerikan bulutuna gitmelisin" düşüncesi bir masaldan ibaret. Yerel yapay zeka da gerçek; düzgün çeviriler elde etmek için verileri harici bir API'ye teslim etmeye gerek yok. Ve son olarak: Tek bir kişi, tüm bir ekibin işi gibi görünen bir şey ortaya çıkarabilir. Sadece zamanın paradan daha değerli olduğunu unutmamalı ve her parçayı bu açıdan seçmelisiniz.

Kendi başınıza bir şey inşa ederken, her teknoloji için kendinize şu soruyu sorun: Bir yıl sonra bunu tek başıma sürdürebilecek miyim? Eğer cevabınız hayır ise, sanırım yanıtı buldunuz.

Her şey burada çalışıyor: cutty.dev. Bu kararlardan biri hakkında konuşmak isterseniz, [email protected] adresine yazın, aynı gün içinde yanıt veriyorum.