🌱 Otuz İki Yıl Sonra Geleneksel CGI Mimarisine Dönüş
Yazılım dünyasının her yıl onlarca yeni JavaScript framework'ü, karmaşık mikroservis mimarileri ve katmanlı bulut çözümleriyle şiştiği bir dönemde, bazı geliştiriciler köklere dönmeyi seçiyor. Doktora düzeyinde karmaşıklık barındıran modern web stack'lerine inat, 1994 yılının CGI (Common Gateway Interface) teknolojisini günümüz ticari standartlarıyla buluşturan bir girişimci, yazılım dünyasında sessiz ama derinden bir yankı uyandırdı. marketyour.games adını taşıyan proje; kullanıcı hesapları, içerik üreticileri için arama panelleri, klasörleme sistemleri, Stripe ödeme altyapısı ve Postmark e-posta entegrasyonuyla eksiksiz bir SaaS ürünü olarak kurgulandı.
Bu projenin en çarpıcı yanı ise tamamen progresif bir yaklaşımla tasarlanmış olması ve istemci tarafında (client-side) hiç JavaScript gerektirmemesi. Kurucu, her şeyin modern olduğu bir dünyada, arka planı oluşturan mimarinin ve sunum katmanının otuz yıl öncesinin felsefesiyle inşa edilebileceğini kanıtladı. Tek bir derlenmiş ikili dosya (binary), bir SQLite veritabanı ve sadece üç harici kütüphaneyle tüm sistemin bir insanın kafasına sığabilecek kadar sade ve anlaşılır olabileceği tezi, modern yazılım mühendisliğinin şişkinlik problemlerine doğrudan bir meydan okuma niteliği taşıyor.
⚡ BCHS Yığını ve Bağımlılıklardan Arınmış Mimari
Geliştiricinin tercih ettiği teknoloji yığını, modern endüstri standartlarının tam zıttı yönünde konumlanıyor: OpenBSD, C, httpd ve SQLite, yani BCHS felsefesi. Bu mimaride ne modern bir web framework'ü, ne karmaşık bir şablon motoru, ne de ayrı bir veritabanı sunucusu bulunuyor. Doğrudan C diliyle yazılan program, CGI ortam değişkenlerini okuyor ve HTTP yanıtını ham HTML olarak üretiyor. Veritabanı işlemleri için ise SQLite'ın C API'si doğrudan kullanılıyor, ortada ne Docker konteynerleri ne de Kubernetes kümeleri var.
Sistemin en büyük teknik avantajlarından biri, yeni bir sürüm yayınlandığında sunucuyu yeniden başlatma veya kesinti (downtime) yaşama zorunluluğunun ortadan kalkması. Tek bir binary dosyasını sunucudaki ilgili dizine kopyalamak güncelleme için yetiyor; yeni gelen istekler doğrudan yeni binary dosyasını çalıştırmaya başlıyor. OpenBSD'nin öntanımlı olarak sunduğu pledge ve unveil gibi güçlü güvenlik mekanizmaları, C dilinin bellek yönetimiyle ilgili olası risklerini sandviç bir izolasyonla ortadan kaldırarak CGI uygulamalarını modern çağda bile son derece güvenli kılıyor.
🎯 Entegrasyon Zorlukları ve Kütüphane Seçimleri
Tabii ki sıfırdan C dilinde modern bir web uygulaması yazmak, dış dünya ile iletişim kurarken bazı pratik çözümleri zorunlu kılıyor. Stripe üzerinden ödeme almak ve Postmark ile kurumsal e-postalar göndermek için harici HTTP istekleri yapılması gerekiyor. Geliştirici bu noktada yükü minimumda tutarak sadece üç kütüphaneye dayanıyor: Ağ istekleri için libcurl, rastgele tanımlayıcı üretimi, parola hashleme ve Stripe webhook'ları için HMAC doğrulaması amacıyla libsodium, ayrıca JSON verilerini işlemek için libcjson.
Bu kütüphanelerden libcjson ve SQLite, tek bir C dosyasından oluşan (amalgamation) yapıları sayesinde projeye ek karmaşıklık getirmeden dahil ediliyor. Projenin yapı bağımlılıkları sadece iki ana kütüphaneyle sınırlı kalıyor. Bu durum, modern node_modules klasörlerinde binlerce paketin ve gigabaytlarca bağımlılığın uçuştuğu günümüz yazılım ekosisteminde, bir geliştiricinin kendi yazdığı kodun her satırına hakim olmasının ne kadar tatmin edici ve sürdürülebilir bir mühendislik pratiği olduğunu gözler önüne seriyor.
💡 Bağımsız Yazılımcılar İçin Mimaride Sadakat Dersleri
marketyour.games projesinin Hacker News ve benzeri platformlarda 25 ve üzeri puanlarla tartışmaya açılması, yazılımcı topluluklarında derin bir nostalji ve hayranlık karışımı tepkiler doğurdu. Birçok geliştirici, modern web ekosisteminin getirdiği "framework yorgunluğundan" bıkmış durumda ve bu tarz radikal sadelik denemelerini büyük bir ilgiyle takip ediyor. Her isteğin taze bir süreç (process) başlatması fikri, yüksek ölçekli sistemlerde ilk başta maliyetli gibi görünse de, binlerce istek altında bile şaşırtıcı derecede kararlı ve verimli çalışabiliyor.
Solo kurucular ve bağımsız geliştiriciler için bu serüvenin çıkardığı en somut ders; her zaman trend olan araçları körü körüne takip etmek zorunda olunmadığıdır. Doğru araçları, doğru felsefeyle birleştirdiğinizde, onlarca yıllık kanıtlanmış teknolojiler günümüzün en modern ticari problemlerini bile kusursuz bir şekilde çözebilir. Karmaşıklığı azaltmak, bakım maliyetlerini sıfırlamak ve yazılımın kontrolünü tamamen elinizde tutmak istiyorsanız, C dilinin ve sade CGI mimarisinin gücü hala güncelliğini koruyor.