2021'de yazılım geliştiriyorsanız, Jamstack'i duymuş olabilirsiniz. Bu yeni mimari yaklaşımın neyle ilgili olduğunu merak ediyor olabilirsiniz. Jamstack, bugün dünyada hızla genişleyen popüler yazılım mimarilerinden bir tanesidir.

Bu yazımda size Jamstack hakkında temel bilgiler vereceğim. Jamstack avantajlarından ve Jamstack kullanmanın faydalarından bahsedeceğim. Ayrıca 2021 yılında Jamstack ile geliştirmeye başlamaya yardımcı olacak bir rehber de hazırladım.

Jamstack Nedir ?

Jamstack, web'i daha hızlı, daha güvenli ve daha kolay ölçeklendirmek için tasarlanmış bir mimaridir.

Geliştiricilerin sevdiği ve maksimum üretkenlik sağlayan birçok araç ve iş akışı üzerine kurulmuştur.

Ön işleme (pre-rendering) ve ayırmanın (decoupling) temel ilkeleri, web siteleri ve uygulamaların geleneksel mimariye göre daha güvenli ve dayanıklı sunulmasını sağlar.

JAM

Javascript, API'ler ve Markup anlamına gelen Jamstack, ilk olarak Mathias Biilmann (Netlify'nin CEO'su ve Kurucu Ortağı) tarafından ortaya atılmıştır. Hızlı ve güvenli web siteleri oluşturmak için tasarlanmıştır.

Jamstack mimarisi 3 temel bileşenden oluşur:

Javascript

API isteklerini ve yanıtlarını başta olmak üzere web sitenizin tüm dinamik işlevlerini ele almak için kullanılır. Jamstack'teki Javascript pek çok biçimde olabilir ve çoğunlukla istemci tarafında bulunur. Örnekler, React, Angular, Vue vb. ön uç (frontend) framework'lerdir.

API'ler

Jamstack sitelerde arka uçta ne kullandığınızın pek bir önemi yoktur. Veriyi dilediğiniz sunucu veya servisten API aracılığıyla alarak ön uçta kullanabilirsiniz. Bu sayede arka uç(backend) ihtiyacını ortadan kaldırarak karmaşıklık azalır.

Sunucu tarafı işlevler ve veritabanı komutları bir API ile uygulanır. API'lere, Javascript odaklı HTTP çağrıları ile ön uçtan erişilir.

İşaretleme

Statik site oluşturucuları ve derleme araçları, kodları (html, css, javascript, markdown, sass, less vb) ziyaretçiye gösterilmeden önce işleyerek hazırlar.

Gatsby, Jekyll, Hugo, Docusaurus vb birçok statik site oluşturucu kullanılmaktadır.

Jamstack siteleri, web sunucularına konmadan önce oluşturulurlar. Statik olarak doğrudan bir statik barındırma altyapısına veya CDN (Content Delivery Network) sunuculara yerleştirilirler.

Bu sayede sunucu tarafında siteyi işlemek için çalışan bir kod çalıştırılmaz. Statik olarak hazır site tarayıcıya indirilir ve çalıştırılır.

Neden Jamstack ? Jamstack'in Faydaları Nelerdir ?

Jamstack mimarisi, sitelere ve iş akışlarını projelendirmek için bir çok fayda sağlayabilir. Temel faydalar şunlardır:

Geliştirici Deneyimi:

Jamstack web siteleri bir web sunucusu veya arka uç olmadan oluşturulduğundan karmaşıklığı azaltır. Geliştiricilerin ön uç ve içerik sağlama tarafına daha fazla odaklanmalarını sağlar.

Jamstack ile dağıtım, geleneksel bir web sitesi geliştirme yığınından (Lampp stack) daha kolaydır. Dağıtım, önceden oluşturulmuş statik dosyalarınızı bir CDN'e veya statik barındırma altyapısına dağıtır. Bu statik dosyalar, istek yapıldığına ziyaretçiye sunulur.

Jamstack siteleri çok çeşitli araçlarla (Gatsby, Hugo, Jekyll, Eleventy, NextJS vb) oluşturulabilir. Spesifik teknolojilere veya az bilinen frameworklere bağlı değildirler. Bunun yerine, yaygın olarak bulunabilen araçlar ve kurallar üzerine inşa edilirler.

Sonuç olarak, Jamstack ile inşa etmek için doğru becerilere sahip hevesli ve yetenekli geliştiriciler bulmak zor değildir. Verimli ve etkin bir şekilde projenin gerçekleşmesi sağlanabilir.

JavaScript ile geliştirme

JAMstack'de arka uç hizmetleri ile veri alıp göndermek için Javascript ve API kullanılırken, ön uçta da ReactJS veya VueJS gibi ön uç frameworkler kullanılır. Tek programlama dili ile tüm web sitesini geliştirmek mümkün olur. Başka dil bilen programcı işe almaya gerek kalmaz.

Bu da kullanıcı deneyiminin geliştirilmesine ve kişiselleştirilmesine imkan tanır.

Performans:

Jamstack siteleri inanılmaz derecede hızlıdır. Web sitesinin tüm varlıkları, derleme sırasında önceden oluşturduğu için ziyaretçiye çok hızlı sunulur. Arka uç gecikmeleri olmaz.

Verimlilik:

Sayfa yükleme hızlarının yüksekliği kullanıcı deneyimi ve dönüşüm oranları üzerinde etkisi yüksektir. Hemen çıkma oranlarını düşürerek dijital pazarlamaya katkıları yüksek olur.

Güvenlik:

Jamstack, barındırma altyapısından çok sayıda hareketli parça ve sistemi kaldırarak, daha az sunucu ile sistemin saldırılara karşı güçlendirilmesini sağlar.

Jamstack siteleri, ziyaretçiden gelen taleplerine sunulan statik dosyalardır. İstek sırasında hiçbir kod çalıştırılmaz, herhangi bir sunucu, arka uç veya hacklenecek bir boşluk bulunmaz. Neredeyse güvenlik açığı yoktur. Tüm dinamik işlevleriniz harici API'lar tarafından da yönetilebilir, bu da saldırıya açık alanların daraltılması demektir. Bu işlem saldırıya dayanıklı olmasa da, üçüncü taraf API'leri çok güvenlidir ve iyi korunurlar.

Ölçeklendirme:

Popüler mimariler, popüler sayfa izlemeleri ve kaynakları önbelleğe almak için belirli bir mantık çerçevesinde yoğun trafik yüklerinin üstesinden gelirler. Jamstack'de bu hazır olarak bulunur. CDN üzerinden sunulduğunda, hangi varlıkların ne zaman önbelleğe alınabileceğini belirlemek için karmaşık bir mantık veya iş akışına gerek kalmaz.

Jamstack siteleri; daha basit dağıtım mantığı ile ihtiyaçdan daha fazla yük kapasitesine sahiptir. Her şey bir içerik dağıtım ağında önbelleğe alınabilir.

Maliyet:

Dosyalar statik olarak sunulduğu için barındırma daha ucuzdur. Ölçeklendirme için daha az kaynak gerekir. Ayrıca ölçeklendirme maliyetleri geleneksel sunucu tabanlı mimarilere kıyasla düşüktür.

Sürdürülebilirlik:

Barındırma karmaşıklığı azaldığında, bakım görevleri de azalır. Site statik olarak önceden oluşturulduğu için basit bir sunucudan veya bir CDN'den sunulduğunda kesintisiz çalışmak için bir uzman ekibine ihtiyaç duymaz.

Esas iş, derleme sırasında yapılmış olduğundan oluşturulan site artık kararlıdır ve yama uygulama, güncelleme ve bakım gerektirebilecek sunucular olmadan barındırılabilir.

Taşınabilirlik:

Jamstack siteleri önceden oluşturulduğu için barındırma hizmetlerini seçerken esnek davranmanızı sağlar. Çok geniş bir yelpaze içinden tercih ettiğiniz barındırma hizmetini seçme imkanı demektir. Herhangi bir basit statik barındırma çözümü, bir Jamstack sitesine hizmet verebilir.

Hizmetlerle Güçlendirme:

Artık gelişen API ekosistemi, Jamstack siteleri için önemli bir kolaylaştırıcı haline geldi.

Belirli alanlarda uzmanlaşmış hizmetlerden API'lar aracılığıyla yararlanma imkanı sayesinde risk ve yükleri azaltılır. Karmaşık uygulamalar geliştirmek daha kolay hale gelir.

Artık kimlik doğrulama, ödemeler, içerik yönetimi, veri hizmetleri, arama ve çok daha fazlası hizmtleri dış kaynaktan kullanabilirsiniz.

Jamstack siteleri, bu tür hizmetleri derleme (render) zamanında ve çalıştırma (runtime) zamanında doğrudan JavaScript aracılığıyla tarayıcıdan kullanabilirler.

2021'de Jamstack'e başlarken

Jamstack'e yeni başlayan biriyseniz - Jamstack geliştirme araçlarınızı seçmek için aşağıdaki kılavuzu kullanabilirsiniz.

Statik site oluşturucu seçme

Statik site oluşturucu, Jamstack mimarinizin en önemli parçasıdır, derleme süresi boyunca web sitenizin tüm statik varlıklarını oluşturmak için kullanılır. Popüler statik site oluşturucuları şunlardır:

Statik site üreticilerinin tam listesine popüler sıralamasıyla buradan ulaşabilirsiniz.

Headless (Başsız) CMS Seçme

Headless bir CMS (Content Management System), içeriğinizi oluşturmak, depolamak ve düzenlemek için bir kullanıcı arabirimi sağlar, ayrıca içeriğinize ön uç çerçevenizle erişmek için bir API sağlar.

Strapi, önde gelen bir açık kaynaklı Headless CMS'dir. % 100 Javascript ile geliştirilmiş tamamen özelleştirilebilir ve geliştirici önceliklidir.

Öne çıkan önemli headless CMS'ler:

Tüm Headles CMS'lerin tam listesi

CDN / Statik barındırma altyapısı seçme

CDN Nedir ? Bir kullanıcıya bir web sitesini veya dosya, resim, video vb varlıkları sunmak için optimize edilmiş dağıtık bir ağa verilen isimdir. İngilizce Content Delivery Network kısaltmasıya kullanılır. Kullanıcının taleplerini en yakın altyapıdan sağlayarak sitenin veya varlıkların teslimat performansını arttırır.

Bir CDN, web sitenizin hızını ve performansını büyük ölçüde artıracaktır. Günümüzde çok sayıda CDN mevcuttur ve çoğu otomatik dağıtım, CI / CD ardışık düzenleri, önbellek geçersiz kılma özellikleri ile birlikte gönderilir.

Popüler CDN'ler:

Harici API'ler

Jamstack'in önemli bir avantajı, bir API ile harici kaynaklardan veri kullanma yeteneğidir; bu, kendi arka uç oluşturma ihtiyacınızı ortadan kaldırır. Bu yaklaşım karmaşıklığı azaltır ve sitelerin daha hızlı oluşturulmasına yardımcı olur.

Harici API kaynakları:

Jamstack ile etkin çalışma taktikleri

Klasik FTP ile kodu dağıtmaya gerek kalmadan etkili bir şekilde çalışabilirsiniz.

  1. Tüm kodunuzu Git ile yöneterek Git servislerinde (Github, Bitbucket, Gitlab) saklayın.
  2. Kodunuzu bir CDN'de dağıtın. Bu zorunlu değildir ancak AWS gibi büyük bulut sağlayıcılarına dağıtım yapmaya kıyasla zamandan ve paradan tasarruf edersiniz.
  3. Modern oluşturma araçlarını Webpack, PostCSS ve Babel kullanarak sitenizin tüm tarayıcılarla uyumlu olmasını sağlayın. Modern Statik site yaratıcılarının çoğu, Hugo-extended ve PostCSS gibi bir inşa aracıyla birlikte sunulur.
  4. Otomatik inşa ve atomik dağıtımları kullanın. Bunu Netlify gibi modern CDN'lerle kolayca yapabilirsiniz.
  5. Anında önbellek geçersiz kılınmasını (cache invalidation) sağlayın.

Popüler Jamstack Topluluklarına bağlantılar

Sonuç

Klasik monolitik bir yapıya sahip Lampp stack (Linux Apache, MySQL, PYP, Python) veya ASP.NET gibi araçlarla web sitelerini yapmak yerine Jamstack çok iyi bir seçenek olabilir. Yıllardır web sitesi geliştiren bir yazılım geliştirici olarak, bir çok projenin Jamstack ile yapılabileceğini görüyorum. Siz de bir deneyin pişman olacağınızı pek sanmıyorum.