Static Site Generator Kullanmanın Avantajları

static site generator çalışma şekli
Static Site Generator'ların çalışma şekli.
Kaynak: SlideShare

MailChimp ana sitesinin static site generator ile hazırlanması şaşırtıcı olmadı. Statik siteler son zamanlarda büyük firmaların yeniden gözdesi oldu. Google 2014 arama trendleri sayfasını statik site olarak hazırlamasının ardından çeşitli servislerini statik sayfalar ile hazırlamayı tercih ediyor. Avantajlarını araştırdıktan sonra ben de kendi sitemi ve blog sayfalarımı static site generator ile hazırlamaya karar verdim.

Static site generator nedir?

Static site generator araçları, hazırlanış aşamasında html template yapıları ve veri tabanı gibi CMS özellikleri ile geliştirme ortamı sağlarken, çıktı olarak sadece html sayfaları oluşturan sistemlerdir. Staticsitegenerators.net sitesine göre Github üzerinde 437 tane sitatic site generator bulunmakta. Aynı siteden projelere verilen yıldızları ve güncellenme sıklıklarını da inceleyebilirsiniz.

Kendi sitemi geliştirirken DocPad adlı static site generator'dan yararlandım.

Neden statik sayfa kullanımına geri dönüldü?

Web'deki bu eskiye dönüşün ardında iki temel sebep var:

  1. Statik siteler dinamik sitelere göre çok daha az kaynak tüketiyor ve daha performanslı
  2. Statik sayfaları oluşturmak eskisi gibi eziyet değil, artık çok gelişmiş yardımcı araç seçenekleri var

Statik Sitelerin Avantajları

Statik site oluşturmamın avantaj ve dezavantajlarını kendi açımdan listeledim.

1) Düşük kaynak ihtiyacı

Uzun yıllar WordPress için geliştirmeler yaptım ve WordPress hakkında blog yazıları yazdım. WordPress CMS sistemleri arasında en kolay kurulum ve kullanıma sahip olanı. Ancak bugün normal karşıladığımız sistem gereksinimleri hiç de azımsanacak gibi değil.

Ortalama bir WordPress site çalışmak için aşağıdaki sistem gereksinimlerine ihtiyaç duyar:

Tüm bunlara sahip olmak yeterli değil, eğer başarılı bir cache sistemi kurulmazsa, yüksek trafikli WordPress sitelerde aşırı CPU kullanım sorunu ortaya çıkıyor. Sayfaların hazırlanıp ziyaretçilerin taleplerine cevap vermek WordPress gibi esnek yapıdaki sistemler için yüksek CPU gücü gerektiren bir işlemdir. Bu durum sunucu maliyetlerinin artmasına sebep oluyor.

Tüm bunların sonucunda, sitenizi taşırken yeni hosting firmanızda bu ayarlardan birinin eksik olması ya da mevcut hosting firmanızın sistemini güncellemeye karar vermesi sitenizin çalışmamasına sebep olacaktır.

Durum statik sayfalara geldiğinde ise çok daha basit ve kolay: dosyalarınızı servis edecek bir sunucu olması yeterli.

Statik siteler için sunucunuzun sadece html, css, js ve gerekli görsel dosyalarınızı saklaması ve servis etmesi yeterli. Static site generator'lar çıktı olarak yalnızca bu dosyaları veriyor.

Ben kendi sitem için Github sunucularında barındırılan Github Sayfalar hizmetini kullandım. Bu sayede sunucu bakımı, hosting masrafı gibi dertlerden de kurtuldum.

2) Hız

Araştırmalara göre internet kullanıcılarının büyük bir kısmı sayfa açılış süresi 3 saniyenin üzerine çıktığında bekemekten vazgeçip siteyi terk ediyor. Bu sonuçlardan yola çıkarak Google ve diğer arama motorları da sayfa açılış hızını bir SEO kriteri olarak kabul etti.

Statik siteler maksimum hızda çalışıyor. Bunun sebebi sunucu tarafında dosyaları hazırlamak için bir işlem yok, sunucu dosyaları olduğu gibi servis ediyor.

3) Versiyon kontrolü

Versiyon kontrol sistemi olmadan bir proje üzerinde çalışmak neredeyse imkansız. Hazır yapılar bunu yazılımsal olarak sağlamıyor, WordPress gibi gelişmiş CMS sistemleri sadece içerik için versiyon kontrolü özelliği sağlıyor. Ancak hatalı bir eklenti veya tema geliştirmesini eski haline döndürmek, yedek almayı unuttuysanız büyük problem oluyor.

Sitemi Github üzerinde barındırıyor olmak beni versiyon kontrol sistemi ayarlamak için sarf edeceğim efordan kurtardı.

4) Güvenlik

Hazır yapılarda sıklıkla güvenlik açığı çıkma ihtimali var. Örneğin WordPress için, bulunduğunuz sürümde bir güvenlik açığı çıkması durumunda siz güncelleme yapana kadar sisteminiz tehdit altında olacaktır.

Statik sitelerde ise kullanıcı etkileşimi doğrudan yapılmıyor. Bu tarz hizmetler farklı servislerden alınabilir. Böylece sitenizi direkt etkileyecek bir güvenlik açığı söz konusu olmaz. Sadece hosting firmanızın kendi güvenliğini sağlaması yeterli. Bu nedenle güvenlik konusunda büyük tedirginlikler yaşanmıyor.

5) Esneklik

Yapıyı kendiniz kurguladığınız için, giriş sayfasını bir landing page olarak ve içerik sayfalarını da blog olarak tasarlamanızda hiçbir engel yok. CMS sistemlerinde ise bu durum çok daha zor ve kısıtlıdır. Hazır blog yapıları ise buna izin vermez.

Statik sayfaların dezavantajları

Avantajlardan bahsedip de dezavantajlardan bahsetmemek olmaz. Statik sitelerin 2 büyük dezavantajı var ve bu nedenle her yapıdaki siteye uygulanamıyor:

  1. Kullanıcı etkileşiminin olmaması

    Güvenlik başlığından bunun bir avantaj olduğunu söylemiştim. Ancak kullanıcılardan bir bilgi girişi isteyecekseniz bunu direkt olarak yapmanız pek mümkün değil.

    Örneğin blog için basit bir yorum sistemi yapacağımızı düşünelim. Tamamı statik bir sitede veritabanı kaydını nasıl gerçekleştireceğiz? Klasik yapılarda bunu yapamayız. Bunun için Disqus gibi bir servisten yararlanmak mümkün. Ancak daha karmaşık etkileşimli işlemlerde bu durum bir dezavantaj olacaktır.

  2. Yönetici arayüzünün olmaması

    WordPress gibi bir sistem üzerinde yeni bir yazı yayınlamak çok eğlencelidir. Ancak yönetici arayüzünün olmadığı statik sitelerde yeni bir yazıyı kullandığınız IDE üzerinden yazarsınız. Her ne kadar markup dilleri makale yazmayı kolaylaştırsa da bu durum son kullanıcı için pek mümkün değil.

Sonuç olarak

Static site generator araçlarının en popüleri Ruby üzerinde çalışan Jekyll. Ancak ben arayüz geliştirme ortamı için nodeJS ve Grunt araçlarından yararlandığım için nodeJS üzerinde çalışan popüler uygulamaları denedim. Amacım en basit ve en hızlı adapte olabileceğim aracı seçmekti. Aşağıdaki araçları inceleme fırsatım oldu:

Sonuç olarak DocPad'in kullanımını kolay buldum. Ayrıca eklenti olarak tam da ihtiyaç duyacağım eklentileri mevcut. Döküman sayfasındaki örnek uygulama oluşturma adımlarını takip edince çabuk alışacağımı anladım.

Sonraki yazılarımda DocPad'in kullanımına da yer vereceğim.

comments powered by Disqus