Headless CMS, içeriği yalnız yöneten ve bir API üzerinden sunan içerik yönetim sistemidir; sayfaları ayrı bir ön yüz, örneğin Next.js ile kurulmuş bir site üretir. Çok dilli, çok kanallı, performans ve özel tasarım önceliği olan ve içeriği düzenli üreten ekiplere uygundur. Küçük, az güncellenen sitelerde ek parça ve geliştirici bağımlılığı getirir.
"Headless" kelimesi, CMS'in "başının", yani içeriği sayfaya döken tema katmanının ayrılması anlamına gelir. İçerik bir yerde yönetilir, sayfa başka bir yerde üretilir. Bu ayrım bazı projelerde büyük esneklik sağlarken bazılarında gereksiz karmaşıklık yaratır. Bu yazı farkı, bedelleri ve karar adımlarını anlatıyor.
Geleneksel CMS ile headless CMS farkı
Geleneksel bir CMS'te içerik, şablon ve sayfa üretimi aynı sistemde çalışır: editör içeriği girer, tema onu sayfaya dönüştürür. Headless kurguda CMS içeriği yapılandırılmış veri olarak saklar ve bir API ile verir; sayfayı ayrı bir uygulama üretir. WordPress'in REST API'si de bu kullanımı mümkün kılıyor: içeriğin tamamen ayrı uygulamalara taşınabileceği belirtiliyor 3. Yani aynı yazılım hem geleneksel hem headless kullanılabilir.
| Konu | Geleneksel CMS | Headless CMS |
|---|---|---|
| Sayfa üretimi | CMS'in teması | Ayrı ön yüz uygulaması (ör. Next.js) |
| İçerik biçimi | Çoğunlukla sayfa ve yazı odaklı | Alanlara bölünmüş, yapılandırılmış içerik |
| Kanal | Ağırlıklı olarak tek web sitesi | Web, mobil uygulama, başka kanallar |
| Tasarım özgürlüğü | Tema ve eklenti sınırları içinde | Ön yüzde tam kontrol |
| Önizleme | Genellikle hazır gelir | Ayrıca kurulur 1 |
| Eklenti ekosistemi | Geniş, hazır çözümler | Ön yüz özellikleri çoğunlukla geliştirilir |
| Teknik gereksinim | Kurulum ve tema bilgisi yeterli olabilir | Ön yüz geliştirme gerekir |
| Güvenlik yüzeyi | Yönetim paneli ve site aynı sunucuda | Panel ve site ayrılabilir |
Bu tablo bir üstünlük sıralaması değil. Geleneksel CMS'in hazır önizlemesi, geniş eklenti ekosistemi ve tek parça yapısı birçok proje için doğru tercihtir. Platform seçimini daha geniş açıdan WordPress mi özel yazılım mı yazısında ele aldık.
İçerik modeli nedir?
Headless CMS'in kalbi içerik modelidir: hangi içerik türlerinin olacağı, her türün hangi alanlardan oluşacağı ve türlerin birbirine nasıl bağlanacağı. Örneğin bir kurumsal sitede "hizmet", "sektör", "ekip üyesi" ve "blog yazısı" ayrı içerik türleri olabilir; "hizmet" türünde başlık, kısa açıklama, uzun metin, görsel ve ilgili sektörlere bağlantı alanları bulunur.
Platformlar bu kavramı farklı adlarla anlatıyor ama mantık aynı:
- Strapi; birden çok kayıt tutan koleksiyon türlerini, tek kayıtlı türleri ve başka türlere eklenebilen yeniden kullanılabilir alan gruplarını (bileşenleri) ayırıyor 4.
- Sanity'de içerik modeli kodla yazılan şemalarla tanımlanıyor; belge türleri alanlardan oluşuyor, sürüm geçmişine sahip oluyor, taslak olarak tutulup yayımlanabiliyor ve editör formu şemadan otomatik üretiliyor 5.
İyi bir içerik modeli, içeriği görünüşüne göre değil anlamına göre böler. "Ana sayfa sol kutu metni" yerine "hizmet özeti" gibi bir alan, aynı içeriğin ana sayfada, hizmet sayfasında ve mobil uygulamada kullanılmasını sağlar. Kötü kurulmuş bir model ise editörü her sayfa için geliştiriciye muhtaç bırakır.
Next.js ile ilişkisi: önizleme ve yayın akışı
Headless CMS tek başına bir site değildir; içeriği sayfaya dönüştüren bir ön yüz gerekir. Next.js bu ön yüz için sık kullanılan çerçevelerden biridir ve dokümanında headless CMS ile çalışmanın iki kritik konusunu doğrudan ele alır.
Önizleme. Next.js'in Draft Mode özelliği, editörün taslak içeriği yayımlanmadan sitede görmesini sağlıyor. Draft Mode açıkken önbelleğe alınmış ya da önceden üretilmiş içerik atlanıyor ve veri doğrudan kaynaktan çekiliyor; diğer ziyaretçiler ise önbellekteki yayımlanmış sürümü görmeye devam ediyor 1. Doküman, önizleme adresinin CMS ile uygulama arasında paylaşılan gizli bir anahtarla korunmasını ve yönlendirmenin güvenli yapılmasını da adım adım anlatıyor 1.
Yayın. Sayfalar genellikle önceden üretilir ve önbellekten sunulur. Next.js'in artımlı statik yeniden üretim (ISR) yaklaşımı, tüm siteyi yeniden derlemeden statik içeriğin güncellenmesine imkân veriyor; belirli aralıklarla ya da talep üzerine, örneğin içerik yayımlandığında belirli bir yolun veya etiketin önbelleğini geçersiz kılarak çalışabiliyor 2. Vercel'in dokümanı da içerik odaklı platformlarda editörlerin CMS değişikliklerini yeniden dağıtım yapmadan yayımlayabildiği bir kurguyu örnek veriyor 6.
Bu iki akış kurulmadığında headless projelerin en sık şikâyeti ortaya çıkar: "Yazdığım şeyi göremiyorum" ya da "yayımladım ama sitede değişmedi". Önizleme ve yayın akışı, proje kapsamına baştan yazılması gereken iş kalemleridir. Next.js dokümanı ayrıca birden fazla sunucu örneği çalıştırıldığında talep üzerine geçersiz kılmanın yalnız çağrıyı alan örneği etkilediğini, bunun için paylaşılan bir önbellek gerektiğini not ediyor 2; kendi sunucunuzda barındıracaksanız bu ayrıntı önemlidir.
Avantajlar ve bedeller
Headless kurgunun getirdikleri:
- Tasarım ve performans kontrolü: Ön yüz tamamen size aittir; tema sınırı yoktur, sayfalar önceden üretilip CDN'den sunulabilir 6.
- Çok kanallı içerik: Aynı içerik web sitesi, mobil uygulama ve başka kanallarda kullanılabilir 3.
- Ayrık güvenlik yüzeyi: Yönetim paneli ile ziyaretçinin gördüğü site ayrı yerlerde durabilir.
- Yapılandırılmış içerik: İyi bir içerik modeliyle çok dilli siteler ve tekrar eden içerik blokları daha düzenli yönetilir.
Bedelleri:
- Geliştirici bağımlılığı: Yeni bir sayfa düzeni ya da yeni bir içerik türü çoğu zaman geliştirme gerektirir. Geleneksel CMS'teki "eklentiyi kur, bitti" yolu burada genellikle yoktur.
- Önizleme ve yayın kurulumu: Hazır gelmez; kurulur, test edilir ve bakımı yapılır 1.
- Maliyet yapısı: Başlangıçta ön yüz geliştirme ve içerik modeli tasarımı ayrı kalemlerdir. Üstüne CMS hizmetinin kullanıcı, kayıt ya da istek bazlı ücretlendirmesi ve barındırma maliyeti eklenebilir. Rakam yerine etkenlere bakın: editör sayısı, içerik hacmi, dil sayısı, trafik ve kendi sunucunuzda mı yoksa hizmet olarak mı kullanacağınız.
- Parça sayısı: CMS, ön yüz, barındırma, form servisi ve arama gibi bileşenler ayrı ayrı izlenir ve güncellenir. Bakım ortadan kalkmaz, dağılır; kalemleri web sitesi bakımı yazısında sıraladık.
Kimlere uygun, kimlere değil?
| Senaryo | Değerlendirme |
|---|---|
| Birkaç sayfalık, yılda birkaç kez güncellenen tanıtım sitesi | Genellikle gerekmez; geleneksel CMS ya da statik site yeterli |
| Düzenli içerik üreten, birden fazla editörü olan pazarlama ekibi | Uygun olabilir; içerik modeli ve önizleme iyi kurulursa |
| Çok dilli kurumsal site | Uygun; yapılandırılmış içerik dil yönetimini kolaylaştırır |
| Web ve mobil uygulamada aynı içeriği kullanan marka | Güçlü aday; çok kanallı kullanım headless'ın asıl alanı |
| Hazır eklentilere çok bağlı, teknik ekibi olmayan işletme | Dikkatli olunmalı; her yeni özellik geliştirme gerektirir |
| Performans ve özel tasarımın öncelikli olduğu kampanya ve ürün sayfaları | Uygun; ön yüzde tam kontrol sağlar |
Çok dilli kurgularda içerik modelinin nasıl kurulduğu ayrı bir konu; ayrıntıları çok dilli web sitesi nasıl kurulur yazısında bulabilirsiniz.
Headless'a geçerken sık yapılan hatalar
Headless projelerde sorunlar genellikle teknolojiden değil, planlama eksikliğinden çıkar:
- Sayfa tasarımını içerik modeli sanmak. Her sayfa için ayrı, tek kullanımlık alanlar açmak modeli hızla dağıtır. Tekrar eden blokları ortak bileşen olarak tanımlamak, hem editörün işini hem bakımı kolaylaştırır 4.
- Editörü sürecin sonunda çağırmak. Alan adları, zorunlu alanlar ve form düzeni editörün günlük işine göre kurulmazsa panel kullanılmaz hâle gelir. Sanity gibi sistemlerde editör formu doğrudan şemadan üretildiği için şema kararları editör deneyimini belirler 5.
- Önizlemeyi sonraya bırakmak. Önizleme, proje bittikten sonra eklenmesi zor bir parçadır; içerik modeliyle birlikte tasarlanmalıdır 1.
- Önbellek stratejisini düşünmemek. İçerik yayımlandığında hangi sayfaların yenileneceği planlanmazsa ya eski içerik görünür ya da gereksiz yere tüm site yeniden üretilir 2.
- Mevcut içeriğin taşınmasını küçümsemek. Eski sistemdeki içerik çoğu zaman sayfa düzeniyle iç içe geçmiştir; yeni modele aktarmak için temizlik ve eşleme gerekir. Yeniden yönlendirmeler de bu işin parçasıdır.
- Arama, form ve üyelik gibi işleri unutmak. Geleneksel CMS'te eklentiyle çözülen bu işler headless kurguda ayrı servis ya da geliştirme gerektirir; kapsamda baştan yer almalıdır.
Karar adımları
- İçerik envanteri çıkarın. Hangi içerik türleri var, kaç adet, kim güncelliyor, ne sıklıkla?
- Kanalları belirleyin. İçerik yalnız web sitesinde mi kullanılacak, yoksa mobil uygulama ve başka kanallarda da mı?
- Editör deneyimini tanımlayın. Önizleme, taslak, onay akışı ve zamanlanmış yayın gerekli mi 1?
- İçerik modelini kâğıtta tasarlayın. Türleri, alanları ve ilişkileri görünüşe göre değil anlama göre çıkarın 4 5.
- Ekip kapasitesini değerlendirin. Ön yüzde değişiklik gerektiğinde geliştirici erişiminiz var mı, bakım kimde olacak?
- Maliyet yapısını karşılaştırın. Lisans ya da hizmet ücretinin hangi ölçüye bağlı olduğunu, barındırma ve geliştirme kalemlerini yan yana koyun.
- Yayın akışını test edin. Bir içerik yayımlandığında sitenin ne zaman ve nasıl güncellendiğini bir deneme projesinde görün 2.
- Çıkış planı yapın. İçeriğinizi standart bir biçimde dışa aktarabildiğinizden emin olun.
Headless kurguda içerik modelinden önizleme ve yayın akışına kadar neleri üstlendiğimizi headless ve Next.js hizmet sayfamızda bulabilirsiniz.
Sık sorulan sorular
Geleneksel CMS içeriği hem yönetir hem de kendi temasıyla sayfaya döker. Headless CMS yalnız içeriği yönetir ve bir API üzerinden verir; sayfaları ayrı bir ön yüz uygulaması, örneğin Next.js ile kurulmuş bir site üretir. Böylece aynı içerik web sitesi, mobil uygulama ya da başka kanallarda kullanılabilir.
Evet. WordPress'in REST API'si, içeriğin tamamen ayrı uygulamalara taşınmasına imkân veriyor. Bu durumda editörler alışkın oldukları WordPress panelinde çalışmaya devam eder, site ise ayrı bir ön yüzle üretilir. Bedeli, temaların ve görsel düzenleme yapan eklentilerin çoğunun ön yüzde doğrudan çalışmamasıdır.
Görebilir, ama bu kendiliğinden gelmez, kurulması gerekir. Next.js'in Draft Mode özelliği, editörün taslak içeriği önbelleği atlayarak görmesini, diğer ziyaretçilerin ise yayımlanmış sürümü görmeye devam etmesini sağlıyor. CMS'teki önizleme düğmesinin bu adrese bağlanması ve güvenli bir gizli anahtarla korunması proje kapsamına yazılmalıdır.
Maliyet yapısı farklıdır. Geleneksel CMS'te tema ve eklentilerle hızlı başlanabilir; headless kurguda ön yüzün geliştirilmesi, içerik modelinin tasarlanması ve önizleme kurulumu ayrı iş kalemleridir. Buna CMS hizmetinin kullanıcı, içerik ya da istek bazlı ücretlendirmesi ve barındırma eklenebilir. Uzun vadede bakım yükünün nasıl dağıldığı toplam maliyeti belirler.
Çoğu zaman gerekli değildir. Birkaç sayfalık, nadiren güncellenen bir site için geleneksel bir CMS ya da statik bir site daha az parça ve daha az bağımlılıkla aynı işi görür. Headless; çok dilli, çok kanallı, yüksek performans ya da özel tasarım isteyen ve içeriği düzenli üreten ekipler için anlam kazanır.
Kaynaklar
- 1Next.js Docs. How to preview content with Draft Mode in Next.js
- 2Next.js Docs. How to implement Incremental Static Regeneration (ISR)
- 3WordPress.org. REST API Handbook
- 4Strapi Docs. Content-type Builder
- 5Sanity Docs. Schemas and forms
- 6Vercel Docs. Vercel CDN overview
websitemx Editör Ekibi
Bu yazı ekibimizin editoryal sürecinden geçti: kaynaklar tek tek doğrulandı, sayısal iddialar kaynağa bağlandı. Yayın ilkelerimiz
Yüksek Performanslı Site (Next.js)
Next.js ve headless CMS ile yüksek performanslı, ölçeklenebilir siteler.
