Headless CMS Nedir?
Web API, servisler, mimariler, REST ve REST API, cross-platform uygulamalar, prograssive web app, single page app, router derken teknik ifadeler ve buna bağlı olarak ilintili pek çok alt başlığın arasında umarım kaybolmanıza neden olmamışımdır.
Tüm bu süreçler bir veriye erişirken, veriyi kullanırken yaşadığım hayranlığın bir iz düşümü. Özellikle içeriğin (content) oluşturulması, yayınlanması ve erişilmesi değerlendirilmesi gereken çok daha ayrı bir bağlama sahip. Düşünsenize, erişilebilir web sitelerinin ~%60’ı WordPress ve her saniye WordPress aracılığıyla 17 içerik yayınlanıyor1.
Elbette tüm bu yoğunluk beraberinde sorunlar, yeni düşünüşler ve çözümlerin de ortaya çıkmasına neden oluyor. Bu yazının konusu olan Headless CMS kavramı da bu düşünüşler ve çözümler vesilesiyle ortaya çıkan kavramlardan / yöntemlerden biri.
Headless Content Management System (CMS)
Headless Content Management System (CMS) tanımından önce Headless‘ın (ya da API-based) nasıl bir karşılığı olduğunu anlamamız gerekiyor. Hazır, az önce WordPress’in inanılmaz kullanım yoğunluğundan da bahsetmişken headless anlatımı için yine WordPress üzerinden ilerleyelim.
Bir WordPress web sayfası front-end ve back-end birlikteliğine sahiptir. Kodlar server tarafında render edilir ve sonuç kullanıcının internet tarayıcısında görüntülenir. React, Angular, Vue gibi framework’ler ile bu süreç yeniden ele alınmakta ve View dediğimiz (MVC yapılarında) katman kullanıcının tarayıcısında işler. Bu sayede server yükü ve kaynaklar dağıtılmış olur. Head bu anlatım içerisinde front-end’i, body ise back-end’i nitelendirmektedir.
Headless ile head (kafa), body'den (gövdeden) ayrılmış olur. Bu ele alış biçimi sayesinde, içerik yönetim sistemi (CMS) sadece back-end’den oluşur. Herhangi bir cihaz aracılığıyla bir içerik görüntülenmek istendiğinde RESTful API (veya GraphQL ile içeriğe (JSON, XML) erişilir; tarayıcı tarafından istek gönderilir, sunucu cevabı gönderir, tarayıcı cevabı işler. İçerik (veri diyelim) herhangi bir yerde tutulabilir (Google Drive, GitHub repo vb.) veya tutulmaz ve farklı servislerden (API) çekilir. CMS sadece içeriğin ele alınmasında görevlidir, başka hiçbir görevi yoktur.
Unutmadan ekleyeyim, Headless CMS’i service-oriented model bağlamında Content as a service (CaaS) ya da managed content as a service (MCaaS) olarak nitelendirebiliriz. Ayrıca, Software as a service (SaaS) CMS olarak da ifade edilebilir.
WordPress gibi içerik yönetim sistemleri (monolith CMS diyelim), tipik olarak içerik (content layer) ve sunum katmanlarına (presentation layer) sahip iken, headless CMS sadece içerik bileşenidir (content component); içerik yönetim işlemlerinin, içerik iş akışlarının (content workflow) organize edilmesi ve içeriğin taksonomiler halinde düzenlenmesi görevlerini üstlenir. Headless CMS presentation layer barındırmadığı için “pure” olarak nitelendirilir ve herhangi bir cihazla (website, mobile, tablet, Internet of Things devices, smart watches gibi) rahatlıkla görüntülenebilir2.
WordPress’i eleştiriyorum gibi algılanmasın. Headless CMS geleneksel içerik yönetim sistemlerinin yerini almak için değil, yeni bir ele alış biçimi olarak API temelli içerik yayınına zemin olarak doğmuştur3. Evet, her iki yapının da kesiştiği bir alan mevcut. Ancak, burada karar içeriğin nasıl edinildiği ve nasıl sunulacağına bağlı olarak verilmeli. Örneğin, WordPress de bu ihtiyaca cevap verecek şekilde WordPress Rest API4 aracılığıyla içeriğe ayrı bir şekilde ulaşılabilmesini ve içeriğin yönetilebilmesini mümkün kılmakta5.
Headless CMS Örnekleri
Headless CMS üzerinden pek çok farklı özellikle headless içerik yönetim sistemine erişebilirsiniz. Aşağıda, öne çıkan bazı örnekleri listeliyorum.