Kurumsal İş Akışlarında Neden CMS Kullanmalısınız?

Öncelikle CRUD nedir, CMS nedir? Bunları anlatmakla başlayalım.
İngilizce kısaltması CRUD olan ve aslında 4 operasyonu temsil eden operasyonlar şunlardır:
- Create yani oluşturma. Yazılımda bir belge, döküman oluştururken bu operasyonu kullanırız.
- Read yani okuma. Oluşturulmuş olan belgeleri okumak anlamına gelir. Örneğin oluşturulmuş olan bir sosyal medya paylaşımı var, siz bunu telefonunuzda yüklerken Read operasyonunu kullanırsınız.
- Update yani güncelleme. Gönderdiğiniz bir WhatsApp mesajını güncellerken bu operasyonu kullanırsınız.
- Delete yani silme. Yine aynı şekilde yanlışlıkla göndermiş olduğunuz bir WhatsApp mesajınızı bu operasyon sayesinde silersiniz.

Verdiğim örnekler çok basit olmasına rağmen aslında herhangi bir kurumsal yazılımın temel prensipleri bu operasyonlara dayanır. Bu operasyonların üzerine yazılımcılar olarak kurallar yazarız. Şu kullanıcı hesabı sadece şu durumda güncelleme yapabilsin veya sadece şu belgeleri görebilsin fakat güncelleyemesin gibi kurallar koyarız.
Peki CMS nedir? CMS de aslında CRUD gibi bir kısaltmadır. Content Management System yani İçerik Yönetimi Sistemi anlamına gelir. İçerik Yönetimi Sistemleri yazılımcıların hızlı bir şekilde tablo tanımları yapmalarını sağlar.
Tablo tanımlamalarını herhangi bir excel dosyası gibi düşünebilirsiniz. Örneğin bir yarışma için başvuruları kaydetmem gerekiyor. Katılımcıların İsim Soyisim, Doğum Tarihi ve İlgi Alanları gibi özelliklerini kaydetmem gerekiyor. Bunun için ilk satıra bu başlıkları yazdıktan sonra hemen 2.satıra başvuranların bilgileri doldurmaya başlayabilirim.
Başvuru örneğinde olduğu gibi tablo tanımlamalarını yaptıktan sonra artık sadece o tablonun içini veri ile doldurmak kalıyor. Peki diyelim ki yaklaşık 1000 tane başvuru aldınız ve artık bu başvuruları inceleyerek kimin yarışmaya katılıp kimin katılamayacağını belirtmeniz gerekiyor. Bunun için size ya katılımcıların bulunduğu excel tablosu çıktı halinde verilecek ve siz o excel tablosuna bir sütun daha açarak "Katılmaya Hak Kazandı / Reddedildi" diye gireceksiniz, ya da bu işlemleri tarayıcınız üzerinden CMS panelinize girerek başvuruları inceleyip "Katılmaya Hak Kazandı / Reddedildi" diye gireceksiniz.
Aslında eğer işlemler buraya kadar olacak ise excel çıktı alıp onun üzerine kaydetmenin veya CMS üzerinden veritabanına kaydetmenin pek de birbiri üzerine avantajı yok. Fakat sizin iş ihtiyaçlarınız katılmaya hak kazanan kişilere bildirim yapabilmek için SMS göndermeyi içeriyorsa CMS üzerinden veri girişlerinizi yapmanız önem arz ediyor. Çünkü CMS yazılımları çok rahat bir şekilde modifiye edilebiliyor. Yazılımcınız sizin için bir buton oluşturabilir ve bu butona tıkladığınızda tüm katılmaya hak kazanan katılımcılarınıza SMS gönderebilirsiniz.
Bir CMS Yazılımının Sahip Olması Gereken Özellikler Nedir?
CRUD ve CMS'i olabildiğince tanımlamaya çalıştım. Peki bir CMS yazılımının sahip olması gereken özellikler nedir? Neden bu özellikler önemlidir?
Esneklik
Öncelikle markette mevcut kullanılan CMS yazılımlarının hepsi aynı tür değil. CMS'ler iki türe ayrılıyor, bunlar:
- Traditional CMS: Bu CMS türünde oluşturulan veri ve verinin gösteriminin yapıldığı web sayfası aynı yazılım içerisinde tutulur. Yani siz bu CMS'yi kullandığınızda web sitenizin ön yüzü kullandığınız CMS'ye bağlıdır.
- Headless CMS: Bu CMS türü verinin gösteriminin yapıldığı web sayfasını içermez. Oluşturulacak olan web sayfasını yazılımcı veriyi bu CMS'den çekerek oluşturmalıdır. En esnek CMS türü budur.
Headless CMS, Traditional CMS'ye kıyasla daha esnektir. Örneğin siz web sayfası içermeyen, ön yüz olarak sadece mobil uygulama kullanacağınız bir proje geliştirmek isterseniz Traditional CMS çözümleri biraz anlamsız ve ağır kalır. Çünkü bu tarz CMS'ler kendi içerdiği sayfalarla beraber çalışabilecek şekilde oluşturulmuştur, ana geliştirilme amacı budur. Yine siz bu tarz CMS'leri mobil uygulama ile beraber kullanabilirsiniz fakat bu Headless CMS kadar rahat olmaz.
Ücret ve Lisanlar
Marketteki her CMS'in ücretlendirilmesi aynı değildir. Çoğu CMS Tier bazlı bir ücretlendirme sunar. Ücretsiz tierde şu özelliklere sahip olursun, bir üst tiere şu kadar bir aylık ücret dahilinde geçersen şu kadar daha fazla özelliğin olur gibi. Bu tarz CMS'lerden kesinlikle uzak durmak gerekiyor çünkü buradaki ana amaç yazılımcıyı çekerek bir süre sonra kendisine bağımlı bırakmak. Bir CMS seçerken bu tarz ücretlendirmelere kesinlikle karşıyım. Yazılımcının CMS ve verileri üzerinde tam sahipliği olması gerekmektedir.
Kullanılacak olan CMS yazılımının tamamen açık kodlu olması ve herhangi bir lisans ücretine sahip olmaması gerekmektedir. Directus gibi bir CMS açık kaynak kodlu olmasına rağmen ücretlendirme sayfasında şu şekilde bir ibare bulunduruyor:
If you and your organization have less than $5M in total annual income (revenue and any funding), you do not need to pay for self-hosting Directus.
5 milyon dolar yıllık gelir veya fundinginiz yoksa ücretsiz olarak kullanabilirsiniz diyor. Türkiye bazında düşündüğümüzde 5 milyon dolar tabi ki oldukça yüksek bir değer fakat yine de herhangi bir kısıtlamaya maruz kalmamak için Directus'u da kullanmayı tercih etmiyorum. Kullanılacak olan CMS'nin herhangi bir gizli ücreti bulunmamalı, açık kaynak kodlu olmalı ve esneklik için headless olmalı. Bunun için de en iyi çözüm Payload CMS.
Payload CMS
Açık kaynak bir yazılım aradığımda ilk olarak OSS Insight websitesini incelerim. Headless CMS seçerken de yaptığım buydu. OSS Insight web sitesinde yazılımlar koleksiyonlara alınıyor ve aylık Star geçmişleri kaydediliyor. Headless CMS için oluşturulan koleksiyona da şu bağlantıdan ulaşabilirsiniz: https://ossinsight.io/collections/headless-cms
Strapi, Directus ve Payload CMS dikkatimi çeken projeler olmuştu. OSS Insight dışında Reddit yazılarına da göz attığımda Sanity CMS de oldukça övülmüştü.
Directusu yukarıda belirttiğim sebepten dolayı zaten elemiştim fakat yine de şunu söylemeliyim ki tasarım olarak çok hoş bir CMS. Lisans sorunlarını gözümde büyütmesem belki de bir numaralı tercihim olabilirdi.
Strapi de oldukça iyi, zaten star sayısı olarak Payload CMS'yi geride bırakmış durumda fakat koleksiyon oluşturma, hookları yönetme konusunda pek verimli bulamadım. Özellikle hookları yönetme konusunda sadece birkaç döküman bulabildim ve Payload CMS gibi rahat değil.
Hookları koleksiyonlara veri girişi yapmadan önce veya yaptıktan sonra çalışan fonksiyonlar olarak düşünebilirsiniz. Örneğin yukarıdaki başvuru örneğinden gidecek olursak bir başvuru kaydı yaptıktan sonra başvuruyu yapan kişiye mail atmanız hook sayesinde olur. Mail atabilmek için afterCreate hook fonksiyonu ayarlarsınız ve başvuru oluşturulduktan sonra başvurudaki mail için bu hook fonksiyonu çalıştırılır.
Payload CMS'de koleksiyonlar ve hooklar sadece kod üzerinden tanımlaması yapılır. Bu aynı zamanda yazılımcının LLM agentları ile beraber çalışabilmesine de olanak tanır. Oluşturduğunuz koleksiyonlar veritabanına yansır ve admin panelinde görüntülenir. Oluşturduğum bu blog web sitesi bu koleksiyonlardan veriyi çekerek sayfayı oluşturuyor.

Payload CMS'den veriyi her türlü platformdan çekebildiğim için bu blog web sitesinin bir mobil uygulama versiyonunu rahatlıkla oluşturabilirim. Tabi ki blog websiteleri için bu pek bir anlam ifade etmiyor ama Payload CMS ile herhangi bir kısıtlamaya maruz kalmadan bunu yapabilmekteyim.
Peki yazının ana konusuna gelirsek, Kurumsal İş Akışlarında Neden CMS Kullanmalısınız?
CMS sizin verilerinizi yönetebileceğiniz bir admin paneli sunar. Bu jenerik panel üzerinden iş akışlarınızda bulunan kurallar çerçevesinde filtreleme yapıp, yetkilendirmeler oluşturabilirsiniz. En basit bir başvuru kaydetmede bile ne tür sorunlar ile karşılaşabileceğimizi yukarıda bahsettim ve bu işlemleri bir CMS olmadan oluşturmak yazılımcı açısından çok zaman alıcı ve zahmetli. Bunun yerine yazılımcının her zaman güvenebileceği ve her zaman geliştirilecek olan bir yazılımın varlığı bu iş akışlarını hızlandırmakla kalmıyor aynı zamanda bir standarda da oturtuyor. Bu yüzden de Kurumsal İş Akışlarında kesinlikle CMS kullanmalısınız.



