Statik site, dinamik uç: sınırı nasıl çizdim
· 2 dk okuma
- nextjs
- mimari
- guvenlik
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ındaYorum alanı henüz aktif değil; GitHub Discussions tabanlı bir sistem hazırlanıyor.
Bülten
YakındaYeni 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.