İçeriğe geç
Cervus Core
Web Geliştirme

Statik site, dinamik uç: sınırı nasıl çizdim

· 2 dk okuma

  • nextjs
  • mimari
  • guvenlik
Statik sayfalar ile üç dinamik uç noktayı ayıran basit bir mimari şeması.

Bir sitenin "her şeyi yapabilmesi" ile "gerçekten neye ihtiyaç duyduğu" arasındaki farkı nasıl sorguladığımı anlatarak başlayayım.

Üç uç noktadan fazlası neden yok

Bu sitede çalışma anında yalnızca üç şey çalışıyor: iletişim formu, bülten kaydı, bir de ileride eklenebilecek sayaç/anket. Bunların dışında hiçbir uç nokta yok — sayfalar derleme sırasında HTML'e dönüşmüş durumda duruyor.

Bu sınırı bilinçli çizdim, üç nedenle:

  • Saldırı yüzeyi. Enjekte edilecek bir sorgu, ele geçirilecek bir oturum, sızdırılacak bir veritabanı yok. Kalan üç uç nokta durumsuz; biri çökse site okunur kalır.
  • Ölçekleme maliyeti. Trafik arttıkça çalışma maliyeti artmıyor; ilk bayt süresi CDN'in yanıt süresine eşitleniyor.
  • Bakım maliyeti. Bozulacak bir sunucu yok. Bir yıl dokunulmayan bir sayfa bir yıl sonra da aynı şekilde çalışıyor.

Bunun bana kazandırdığı

İki somut fark var. Birincisi, ilk bayt süresinin CDN yanıt süresine eşitlenmesi — sunucu tarafında hesaplanacak bir şey olmadığı için. İkincisi, trafik arttıkça çalışma maliyetinin artmaması; sürekli çalışan bir veritabanı ya da uygulama sunucusu olmadığı için fatura sabit kalıyor.

| Uç nokta | Ne yapar | Neden durumsuz kalabiliyor | | -------------- | --------------------------------------------------- | ------------------------------ | | İletişim formu | Doğrular, Turnstile ile denetler, Resend ile iletir | Hiçbir veri diske yazılmıyor | | Bülten kaydı | Üçüncü parti sağlayıcıya iletir | Onay akışı sağlayıcıda dönüyor | | Sayaç/anket | Anahtar-değer deposuna yazar | İlişkisel sorgu istemiyor |

Peki ileride veritabanı gerekirse

Dört tetikleyiciden biri gerçekleşmeden veritabanı eklemiyorum: gerçek bir kullanıcı hesabı ihtiyacı, bir müşteri portalı, ilişkisel sorgu isteyen bir özellik ya da bültenin üçüncü partiden kendine alınması. Bunlardan hiçbiri olmadan veritabanı açmak, çözülmemiş bir problemi bugünden çözmek olurdu.

Statik çekirdek

  • Saldırı yüzeyi: yok denecek kadar az
  • Ölçekleme maliyeti: sabit
  • Bakım: bozulacak sunucu yok

Sunucu ağırlıklı site

  • Saldırı yüzeyi: her uç nokta bir risk
  • Ölçekleme maliyeti: trafikle artar
  • Bakım: sürekli güncellenmesi gereken bir çalışma zamanı

Kapanış

Bu sınır bir eksiklik değil, korunan bir özellik. Üç uç noktadan fazlasını eklemek teknik olarak kolay olurdu — ama mimari maliyeti taşıyan taraf o uç nokta değil, projenin geri kalanı olurdu.

Abdullah Balat

Kurucu ve geliştirici

Bu siteyi kuran, tasarlayan ve içeriğini yazan kişiyim. Hakkımda daha fazlası →

Yorumlar

Yakında

Yorum alanı henüz aktif değil; GitHub Discussions tabanlı bir sistem hazırlanıyor.

Bülten

Yakında

Yeni yazı ve ders yayınlandığında haber vermek için bir bülten hazırlıyorum. Kayıt formu şu an pasif; aktif olduğunda burada duyurulacak.