Kraj tradicionalnih CMS rešenja

Vladimir Jovanović
Vladimir Jovanović
7 min readSep 1, 2017
Jedina konstantna stvar na koju možete da računate u životu je promena.

U poslednje vreme dosta pišem o tome da je vreme tradicionalnih CMS rešenja prošlo. U grupu tih tradicionalnih rešenja spadaju i programi kao što su Drupal, Joomla i Wordpress. Možda prosečnim korisnicima to ne izgleda tako, ali mi koji se bavimo razvojem odavno vidimo da ta rešenja ne mogu više da se takmiče sa novim tehnologijama i potrebama tržišta. Postali su dinosaurusi koji su ogromni, spori i teško prilagodljivi novoj realnosti. Naravno, proći će još neko vreme dok ne bude bilo primetno njihovo izumiranje, a ovde ću opisati šta vi možete da uradite da već danas da spremno dočekate doba koje dolazi.

Problematika iz prakse

Kada se pogleda većina sajtova na Internetu, primetićete da se sadržaj na njima veoma retko menja. U to spadaju sve te prezentacije firmi, lični sajtovi, zabavni sajtovi i sl. Takvih sajtova ima najviše i u ukoliko se bavite poslom pravljenja ili dizajniranja istih, velika šansa je da ćete praviti sajtove koji potpadaju baš pod ovu grupu. Klijentima je uvek potrebno da predstave svoju firmu kroz informacije o svojim proizvodima, uslugama, kao i da pruže kontakt podatke radi lakše dostupnosti.

Druga vrsta internet aplikacija koje kompanije koriste je ona koja direktno služi za vođenje njihovih poslova. Te aplikacije su najčešće unikatno programirane ili se koriste kao integrisana poslovna rešenja. Najčešće one nisu dostupne javnom Internetu i o njima u ovom članku neću pisati.

Potrebe klijenata

Pravljenjem sajtova sam počeo da se bavim krajem devedesetih godina prošlog veka. Za sve ove godine, potrebe klijenata se nisu bitno promenile. Promenio se samo naš način na koji ta rešenja ispostavljamo. Mi koji smo razvijali sajtove tada, počeli smo sa jednostavnim prezentacijama koje su bile pravljene u čistom HTMLu uz malo CSSa. To su bile statičke prezentacije na kojima su sadržaj mogli da menjaju samo oni koji su te prezentacije i pravili. Bio nam je potreban najosnovniji hosting da bi ti sajtovi radili i više ništa sem toga.

Kako su godine prolazile, u miks razvoja su ušle nove front-end i back-end tehologije sa bazama podataka. Potom su došla besplatna CMS rešenja sa kojima smo klijentima mogli da ponudimo da sami pišu i menjaju svoj sadržaj.

Zanimljiv podatak — kada se osvrnem na sve sajtove koje sam napravio od 2000. do sada, a pravio sam većinom unikatne sajtove skrojene specifično prema potrebama klijenata, pa i CMSove sa unikatno pravljenim grafičkim šablonima (eng. template), da li znate koji procenat klijenata je koristio pogodnosti koje im pruža CMS? Odgovor je — možda do 2% njih. Svi ostali su završili sa CMS rešenjima u kojima sadržaj ili nisu menjali ili su opet angažovali mene da im menjam sadržaj. Pored toga, CMS rešenja je potrebno redovno krpiti i ažurirati kako ih hakeri ne bi oborili, a hosting je morao da bude kvalitetan kako bi mogao da osigura normalan rad i prilikom veće posećenosti sajtu.

Dešavalo se i da klijenti nisu želeli da plaćaju za održavanje, pa da ih posle nekog vremena hakeri zaista i obore jer više niko nije vodio računa o sigurnosti CMSa. Dešavalo se i da su hteli napredna CMS rešenja za jednostavan sadržaj, ali na jeftinim serverima, što je uzrokovalo probleme oko konstantne dostupnosti sajta. Sve su to praktični problemi za koje nema lakih rešenja.

Kao dizajneru, meni je veoma bitno da sajtove koje pravim budu sigurni i dizajnerski unikatni. Ako nisu i ako se koriste CMS rešenja sa kupljenim šablonom, po čemu će se istaći u moru ostalih sajtova koji koriste identičan grafički šablon? Ne vidim vrednost takvih sajtova jer se oni automatski izjednačavaju sa svim ostalima.

Flatsome temu za Wordpress je preuzelo preko 50.000 korisnika, što je efektno eliminisalo svaku unikatnost sajta

Problem je što je danas potrebno dosta vremena da se unikatno grafičko rešenje i napravi. Pored jedinstvenog dizajna, za sajt je obavezno da bude prilagodljiv i različitim uređajima, širinama ekrana i pregledačima. Kada se takav dizajn pravi za CMS, prilagođavanje je ograničeno mogućnostima tog programa. To je ono što mi smeta sa dizajnerske strane jer uvek moram da mislim na to šta je CMS sposoban da ispostavi.

Drugi problem koji produžava vreme programiranja je prilagođavanje dizajna jeziku grafičkog šablona tog CMSa. Svaki CMS ima svoj način na koji se pišu grafički šabloni. To nas ograničava i u pogledu front-end tehnologije koju želimo da koristimo jer taj CMS možda koristi neke zastarele JS biblioteke koje nisu kompatibilne sa onim što ste vi zamislili.

Treći problem je što za većinu sajtova koji se rade preko CMSa je što morate da imate i dodatke (eng. plugin, component, module) koji proširuju osnovne mogućnosti programa. To mogu da budu galerije slika, dodaci za poboljšan SEO, specijalni meniji, popup prozori i sl. Da ne spominjem da svaki od tih dodataka sa sobom vuče i svoje stilove koje opet treba prilagoditi dizajnu, kao i JS biblioteke koje dodatno opterećuju i usporavaju CMS. Svaki od tih dodataka produžava učitavanje sajta, sakati performanse i otežava održavanje i primenu zakrpa. Što ih više ima na sajtu, sajt je nestabilniji.

Sve to zarad mogućnosti koje 98% vaših klijenata nikada neće koristiti sami.

Ovo je trenutak da se stavi prst na čelo i da se razmisli o ovom načinu poslovanja.

Novo rešenje za stare probleme

Zbog svih ovih problema sam počeo da pravim sve više svojih alata za razvoj koji bi mi ubrzali programiranje šablona tih CMSova. Počeo sam da razmišljam koje serverske tehnologije bi mogle da mi ubrzaju te CMSove, pa sam zakupio i podesio fantastičan cloud server da može da koristi HTTP2, HTTPS, uvek poslednju i najaktuelniju verziju PHPa. Smišljao sam i svoje nove načine za pisanje responzivnog CSSa. Naravno, sve to mi je pomoglo da se izrada i kvalitet tih sajtova poboljša, ali je glavni problem ostao i dalje tu — zašto praviti celu tu zavrzlamu zarad klijenata koji nikada neće koristiti pogodnosti koje im pruža CMS?

Rešenja do kojih sam došao su da za jednostavnije projekte koristim generator statičkih sajtova, a da za naprednije programiram razdvojeni CMS (eng. decoupled, headless).

Generator statičkih sajtova

Ova tehnologija nam omogućava da sajtove pravimo na sličan način na koji smo programirali i grafičke šablone CMS-ova. Razlika je u tome što nismo ograničeni mogućnostima CMSa, a grafički šablon možemo da napravimo bez bilo kakvih tehnoloških ili dizajnerskih ograničenja.

Generator koji koristim se zove Panini i odličan je za one koji rade kroz NPM i Gulp, dok ostali mogu da pogledaju neki sa ove liste, prema svojim potrebama.

Ukoliko imate dovoljno kreativnosti i smisla za organizaciju, generator možete programirati na taj način da je dodavanje novog sadržaja krajnje jednostavno. Krajnji rezultat su kompajlirane HTML strane koje koriste vaš CSS i JS na način na koji vi želite.

Prednosti nad CMS rešenjima:

  • Statičke sajtove nije moguće hakovati jer se ne oslanjaju na dinamičke serverske jezike i baze podataka
  • Veoma su brzi jer koriste kompajlirane HTML strane umesto dinamičkih koje server tek treba da sklopi. Zbog ovoga će i server biti manje opterećen i sigurno neće pući u situacijama visoke posećenosti koje CMS ne bi mogao da izdrži. Ovo se pogotovo odnosi na Wordpress sajtove.
  • Svaki veb server može da prikazuje ove sajtove, a za hosting možete da koristite i Github pages bez ikakvih problema.
  • Lako se prave sigurnosne kopije i migracije.
  • Programeri mogu lako da ih ažuriraju, skoro istom brzinom kao i da rade preko CMSa
  • Moguće ih je programirati kako god želite, bez potrebe da se plaćaju skupi dodaci za SEO, galerije slika i sl. Sve rešavate sami, na svoj način i samim tim ne opterećujete kod.

Ono što statički sajtovi ne rade dobro:

  • Sami po sebi ne mogu da serviraju pravi dinamički sadržaj. Mogu samo preko JS AJAX poziva sa nekog spoljnog API-ja.
  • Klijenti ne mogu da ih ažuriraju sami

Poslednji sajt koji sam napravio na ovaj način je www.ilicdent.com i performanse koje sam postigao koristeći statički generator su zaista sjajne! Pored toga, čak je i HTML kod jasan za čitanje.

Sjajni rezultati za statičan sajt. YSlow se podigne preko 97% kada se ne koristi opcija za CDN

Razdvojena CMS rešenja

Za naprednije projekte nameravam da počnem izradu razdvojenog CMSa. U toj strukturi programa su potpuno razdvojeni frontend i backend odeljci, a međusobno komuniciraju samo preko API-ja. Na taj način otvara se mogućnost da se front-end pravi nezavisno za svaku platformu, bilo da je to veb sajt ili mobilna aplikacija.

Koncept radvojenog CMSa

Back-end odeljak se pravi na taj način da ima administratorski odeljak za korisnike, ali da sav sadržaj servira preko API-ja.

Razvoj ovakvog rešenja je dosta jednostavniji od razvoja klasičnih CMS programa i to će biti jedan od bitnijih razloga zašto će oni uskoro preuzeti primat na Internetu.

Preporučujem da pročitate ovaj članak za više informacija: https://kenticocloud.com/blog/what-is-headless-cms

Što se više budu razvijale front-end tehnologije, to će CMS rešenja biti u sve nepovoljnijem položaju. Na kraju će vam postati glavobolja koja je teška i skupa za održavanje. Danas postoji veliki izbor generatora statičkih sajtova i vreme je da naučite kako se koriste. Vreme razdvojenih CMS rešenja tek dolazi i kada se pojave, pregaziće sve ovo što je popularno danas, ali uz znanje programiranja u nekom od popularnih PHP radnih okruženja kao što su Slim, Lumen, Laravel i sl, možete i sami da se oprobate u pravljenju sličnih.

Dodatak 1

Primer kombinovanja generatora statičkih sajtova i razdvojenog CMS rešenja

Na linku (https://github.com/jelz/gulp-metalsmith/tree/master/tutorial) se nalazi primer kako statički sajtovi mogu da se koriste upareni sa razdvojenim CMS rešenjima.

U ovom slučaju se koristi Metalsmith generator koji se kači na Contentful Cloud CMS iz koga izvlači sadržaj u JSON formatu i to potom pretvara u statičke stranice prilikom kompajliranja u Gulp okruženju. Contentful usluge nisu jeftine, ali na osnovu njihovog primera možete sami da napravite neki jednostavan API u Slimu ili Lumenu i potom koristite upareno sa Metalsmith generatorom.

Ukoliko vam se ovaj članak svideo, a koristi vam u vašem dizajnu i kodiranju, posetite Bitersen stranicu na Facebook mreži jer ću tamo kačiti i ostala rešenja iz veb dizajna do kojih sam sam došao.

Za zanimljivosti iz veb dizajna, programiranja i IT-a, posetite moju stranicu posvećenu tome — Web design | Vladimir Jovanović.

Čitamo se ;)

Vladimir Jovanović
Web designer & developer

--

--