Statik site mi, dinamik site mi? Hangisi doğru?
Basit bir tanıtım/portföy sitesi için statik site mi, dinamik site mi? Firebase veya veritabanı gerçekten gerekli mi — maliyet, güvenlik ve güncelleme açısından adım adım anlatıyorum.
Geçen gün bir arkadaşım kendine tanıtım sitesi yaptıracaktı. İnşaat mühendisi; bitirdiği villaların ve sitelerin fotoğraflarını, videolarını koyacak, bir yandan da bunları Instagram’da paylaşıyor. Ona “arkada Supabase ya da Firebase kullan” demişler. Bana sorunca “gerek yok” dedim ve epeyce tartıştık.
Bu yazı o tartışmanın toparlanmış hâli: içeriği çoğunlukla sabit olan bir site için statik mi gitmeli, dinamik mi? Neye göre karar verdiğimi, hangi durumda hangisinin doğru olduğunu örneklerle anlatıyorum. Amacım “şu teknoloji en iyisidir” demek değil — çünkü mesele hangisinin daha iyi olduğu değil, işine hangisinin uyduğu.
Kısa cevabı baştan vereyim: bir portföy, tanıtım ya da blog gibi içeriğin çoğu sabit kalan sitelerde statik site yeter; hem daha ucuz, hem daha hızlı, hem daha güvenli olur. Ama “statik” kelimesi birkaç yanlışı akla getiriyor; asıl iş, o yanlışları düzeltmek.
Statik site, dinamik site nedir?#
Karar vermeden önce bu iki kelimenin ne demek olduğunu netleştireyim, çünkü isimleri kafa karıştırıyor.
Statik site, bütün sayfaları ben siteyi hazırlarken bir kere üretip hazır dosyalar (HTML) olarak tutan sitedir. Biri siteye girdiğinde sunucu o hazır dosyayı olduğu gibi gönderir; o an hiçbir şey hesaplamaz, hiçbir veritabanına bakmaz. Sayfa zaten hazırdır.
Dinamik sitede ise sayfa önceden hazır değildir. Biri her girdiğinde sunucu sayfayı o an oluşturur: veritabanından veriyi çeker, sayfayı birleştirir, sonra gönderir. Yani her ziyarette arkada bir program çalışır. WordPress mesela böyle çalışır.
Fark asıl burada önemli:
- Statikte ortada çalışan bir program ya da veritabanı yoktur; site sadece hazır dosyalardan ibarettir. Bu yüzden çok hızlı açılır, çok ucuza (çoğu zaman bedavaya) barınır ve hacklenecek bir şey de yoktur — ortada ele geçirilecek bir sunucu ya da çalınacak bir veritabanı yok.
- Dinamikte her ziyaret için arkada bir sunucu ve veritabanı çalışır. Bu, içerik gerçekten anlık değişiyorsa (giriş yapan kullanıcılar, sipariş, herkese farklı içerik…) gereklidir; ama karşılığında sürekli çalışan, güncellenmesi ve korunması gereken bir sistem demektir.
Bir de şunu baştan söyleyeyim, çünkü en büyük yanlış anlama burada: statik, “sonradan değiştirilemez” demek değildir. Sadece “sayfa ziyaret anında değil, önceden üretilir” demektir. Bunu bir sonraki bölümde açıyorum.
”Statik” eski demek değil#
Statik deyince çoğu kişinin aklına 2010’ların elle HTML yazılıp sunucuya atılan siteleri geliyor. “Statik = bir daha değiştiremezsin, her değişiklik için tek tek dosya elleyeceksin” sanılıyor. Bugün durum bu değil.
Modern statik site üreticileri (Astro, Hugo gibi) şöyle çalışıyor: içeriğini yazıyorsun, sonra site baştan sona kendini üretiyor ve yayınlanıyor. Ben mesela bu blogda yeni bir yazı eklerken tek yaptığım bir dosya yazıp göndermek:
# yeni içeriği ekle, gönder — gerisini sistem hallediyor
git add .
git commit -m "yeni proje: X villası"
git push
Bu kadar. Birkaç dakika içinde yeni içerik sitede. Sunucuya girip bir şey kurcalamıyorum, hiçbir dosyayı elle sunucuya taşımıyorum.
Yani “statik” kelimesi sitenin çıktısı için doğru (ziyaretçiye hazır sayfa gidiyor), ama içeriği istediğin kadar değiştirebiliyorsun. İkisi ayrı şey. Statik olması, güncellenemez olması demek değil.
Önce şu soruyu sor: içerik sabit mi, değişken mi?#
Statik mi dinamik mi diye uzun uzun düşünmeden önce tek bir soru çoğu zaman yeter: sitenin içeriği sabit mi, yoksa sürekli mi değişiyor?
Sabit içerik, senin koyduğun şeyin öyle kalması demek — arada bir yenisini eklersin ama sayfa herkese aynı görünür. Bir portföy, bir tanıtım sitesi, bir blog, bir menü… hepsi böyle.
Değişken içerik ise ziyaretçiye göre ya da anlık değişen içeriktir: giriş yapan kullanıcılar, sepet ve sipariş, herkese özel bir panel, canlı bir liste (stok, fiyat, rezervasyon)…
Arkadaşımın sitesinde ne var? Bitirdiği projelerin fotoğrafları ve videoları. Yani içerik sabit — yeni bir villa bitince bir proje daha eklenir, o kadar. Ortada ne kullanıcı hesabı var, ne sipariş, ne anlık değişen bir veri. Dolayısıyla dinamik bir sisteme ihtiyacı yok; çünkü dinamiğin çözdüğü sorun onun sitesinde hiç doğmuyor.
Peki ya Firebase, Supabase gibi hazır sistemler?#
Burada Firebase’i örnek verdim ama tek o değil — Supabase, Appwrite, PocketBase, daha bir sürü benzeri var. Kimi paralı, kimi ucuz, kimi bedava. Ama hangisini seçtiğin ya da kaç para olduğu asıl mesele değil. Bu iş için hepsinde sonuç aynı: içeriği sabit bir siteye, sürekli bakman, güncellemen ve güvenliğini sağlaman gereken fazladan bir sistem ekliyorsun. Bedava olması da bunu değiştirmiyor — “ücretsiz” demek “gerekli” demek değil.
Peki bu sistemler tam olarak ne yapıyor? Kısaca: sana bir veritabanı (içeriğin durduğu yer), bir dosya deposu (resim/video) ve bir de giriş/oturum (kullanıcı hesabı) veriyorlar. Faydalı şeyler — ama hepsi dinamik bir sitenin parçaları. İçeriğin sabitse bunların hiçbiri gerekmez.
İki de somut sıkıntı var:
- Fatura sürprizi. Bu servislerin çoğu “kullanım bazlı” ücretlendiriyor: ne kadar veri indirilirse o kadar ödersin. Bir portföy sitesi resim ve video ağırlıklı olacağı için, biraz trafik gelince fatura beklediğinden yüksek çıkabiliyor. Bedava katmanı olanlarda da bir sınırı aşınca aynı durum.
- Güvenlik. Bir veritabanın olduğu anda onu doğru ayarlaman gerekir. Bu servislerin erişim kurallarını yanlış kurmak, internetteki en sık veri sızıntısı sebeplerinden biri. Statikte böyle bir dert yok, çünkü ortada ayarlanacak bir veritabanı yok.
Peki içeriği kim, nasıl güncelleyecek?#
Statik siteyi eleştirenlerin haklı olduğu tek nokta şu: kod bilmeyen biri içeriği nasıl güncelleyecek? Cevap, kimin güncelleyeceğine göre değişiyor.
Sen güncelleyeceksen (ve dosya işlerinden korkmuyorsan): içeriği düz bir metin dosyası olarak yazıp gönderiyorsun, site kendini derliyor. Benim kendi sitem böyle — panel bile yok, dosyayı yazıp gönderiyorum. Teknik biri için en sade yol bu.
Kod bilmeyen biri güncelleyecekse (mesela mühendis arkadaşım): siteye bir yönetim paneli ekliyorsun. Bu panellerin genel adı “Headless CMS”. İsim kulağa teknik geliyor ama olay basit: içeriği yönetmeni sağlayan (yazı ekle, fotoğraf yükle) ama sitenin görünümüne karışmayan bir panel. Adındaki “headless” (kafasız) tam da bunu anlatıyor: sitenin görünen yüzü — yani “kafası” — bu panelde yok; onu Astro çiziyor, sen sadece içeriği giriyorsun.
“Headless CMS” tek bir ürün değil, bir kategori; altında farklı markalar var. Astro ile en iyi çalışan ikisi şunlar:
- Keystatic: Astro’ya en yakın olanı. Doğrudan sitenin içine kuruluyor ve Astro’nun içerik yapısıyla uyumlu çalışıyor. Arkasında bir ekip (şirket) olduğu için bakımı düzenli; paneli sade ve modern.
- Sveltia: Hafif ve hızlı bir panel. Uzun süredir kullanılan Netlify/Decap CMS’in modern hâli olduğu için, o araca alışkın biri kolayca kurar.
İkisi de ücretsiz ve ikisinde de kullanım aynı: kişi panele giriyor, “yeni proje” diyor, fotoğrafları sürüklüyor, açıklamayı yazıyor, “yayınla”ya basıyor. Arka planda panel bu içeriği sitenin dosyalarına yazıyor, site kendini derliyor — ama kullanan kişi ne kod ne dosya görüyor.
En önemlisi: bu panel siteyi statik tutuyor. Yani hem kolay bir yönetim panelin oluyor, hem de site hâlâ hızlı, güvenli ve bedava kalıyor; dinamik bir sisteme ya da veritabanına geçmene gerek yok.
Peki bu siteyi nereye koyacağım?#
“Statik bedavaya barınır” dedim; peki tam olarak nereye? Statik siteleri ücretsiz barındıran birkaç yer var — en bilinenleri Cloudflare Pages, Netlify ve GitHub Pages. Üçü de aynı mantıkla çalışıyor: siteyi bir kod deposuna (GitHub gibi) bağlıyorsun, sen her içerik gönderdiğinde siteyi kendileri derleyip yayına alıyor. Normalde bir site için ya aylık hosting alırsın, ya VPS/VDS ya da bir sunucu kiralarsın; burada bunların hiçbirine gerek yok, kurulacak bir şey de yok.
Ben bu blogu Cloudflare Pages’te barındırıyorum. Yeni bir yazı gönderdiğimde birkaç dakika içinde siteyi yeniden derleyip yayınlıyor; üstelik dünyanın her yerinden hızlı açılsın diye içeriği kendi ağına dağıtıyor. Barındırma için herhangi bir ücret ödemiyorum.
Fotoğraf ve video ne olacak?#
Bir portföy sitesinin asıl yükü metin değil, görseller. Onları doğru yerde tutmak önemli.
Fotoğraflar çok ve yüksek çözünürlüklü olacak. Bunları sıkıştırıp (küçük ama net) sunmak lazım; Astro bunu kendisi yapabiliyor — her ekran için uygun boyutu üretip sayfayı gereksiz yere ağırlaştırmıyor. Fotoğraf sayısı çok artarsa, dosyaları Cloudflare R2 gibi ucuz (belli bir sınıra kadar bedava) bir depoya koyabilirsin.
Videolar için ise en önemli tavsiye şu: videoyu kendi barındırmana gerek yok, hatta barındırma. Video ağır bir dosyadır; her izlenişte hem siteyi yavaşlatır hem de (o kullanım bazlı servislerde) faturayı şişirir. Bunun yerine videoyu YouTube ya da Vimeo’ya yükleyip siteye gömüyorsun. Zaten arkadaşım videolarını Instagram’a da atıyor; yani videolar en baştan başka yerde duruyor, siteye sadece bir bağlantı geliyor. Bu, statik-dinamik tartışmasından bağımsız bir şey: video her hâlükârda böyle yapılır.
Ama iletişim formu lazım — o dinamik değil mi?#
Portföy sitesinde çoğu zaman bir iletişim formu istenir: “adınız, mesajınız, gönder.” İlk bakışta dinamik bir şey gibi duruyor — form gönderiliyor, bir yere ulaşması gerekiyor. Ama bunun için de kendi veritabanını ya da sunucunu kurman gerekmiyor.
İki basit yol var:
- Hazır form servisleri (Formspree, Web3Forms gibi): forma birkaç satır ekliyorsun, ziyaretçi doldurup gönderince mesaj doğrudan e-postana düşüyor. Arkada senin bir sunucun ya da veritabanın çalışmıyor; işi onların servisi görüyor. Çoğunun ücretsiz katmanı da var.
- Form bile koymadan: çoğu iş için bir WhatsApp’a tıkla-yaz butonu ya da e-posta bağlantısı daha da pratik. İnşaatçı bir arkadaş için mesela WhatsApp altın değerinde.
Yani “iletişim formu” da statik bir siteyi dinamiğe çevirmenin sebebi değil.
Dinamik ne zaman gerçekten gerekir?#
Buraya kadar statiği anlattım ama dinamik siteler kötü değil — sadece farklı bir iş için var. Şu durumlardan biri varsa dinamik bir sistem (ve bir veritabanı) gerçekten gerekir:
- Kullanıcı hesapları: insanlar üye oluyor, giriş yapıyor, herkes kendi içeriğini görüyor.
- E-ticaret: sepet, sipariş, ödeme, stok takibi.
- Anlık değişen veri: canlı fiyat, rezervasyon takvimi, sürekli güncellenen bir liste.
- Çok kişinin sürekli içerik girdiği büyük bir site.
Ben dinamiğe karşı değilim; yıllardır WordPress’le de siteler kuruyorum ve çoğu iş için WordPress gayet doğru bir seçim (bu blogu neden yine de WordPress değil Astro ile kurduğumu ayrı bir yazıda anlatmıştım). Mesele şu: yukarıdaki ihtiyaçlardan hiçbiri yoksa, dinamik bir sistem sana fayda değil, sadece fazladan yük getirir. Arkadaşımın portföyünde bunların hiçbiri yok — o yüzden statik.
Özet: nasıl karar veriyorum#
Karar aslında tek bir soruya iniyor:
Sitenin içeriği çoğunlukla sabit mi kalacak, yoksa sürekli mi değişecek?
Cevap “sabit” ise — portföy, tanıtım, blog gibi — statik site yap. Daha hızlı, daha ucuz (çoğu zaman bedava) ve daha güvenli olur. İki de ek not:
- İçeriği kod bilmeyen biri güncelleyecekse, siteye bir yönetim paneli (Headless CMS — Keystatic ya da Sveltia) ekle. Site yine statik kalır.
- Video varsa kendin barındırma; YouTube ya da Vimeo’ya koyup göm.
Cevap “değişken” ise — kullanıcı hesabı, sipariş, anlık değişen veri gibi — dinamik site yap ve veritabanını kur. Bunları statik bir site yapamaz; burada dinamiğin getirdiği sunucu ve veritabanı boşuna değil, tam da bu iş için gerekli.
Arkadaşımın sitesi için sonuç: Astro ile statik bir site, güncelleme için bir yönetim paneli, videolar YouTube’da. Aylık maliyet neredeyse sıfır, site hızlı açılıyor, hacklenecek bir yapı yok, mühendis de içeriğini kendi ekliyor. “Firebase şart” denen yerde, aslında hiçbirine gerek yoktu.
Yorumlar
Yorumlar GitHub hesabıyla yapılır. “Göster”e tıklayınca Giscus (giscus.app) yüklenir.