Moj prvi dodir sa Web Content Management sistemima (WCMS) bio je još tokom studija. Naime, zadatak koji mi je bio poveren odnosio se na razvoj web sajta kompanije iz oblasti transporta pomoću Joomla CMS-a, koji mi je u datom trenutku profesionalnog razvoja izgledao kao lak i jednostavan alat za kreiranje sajta: dodavanje par stranica i integrisanje nekoliko plugin-ova, a sve u skladu sa zahtevima projekta.
Iskreno govoreći, sam sistem je delovao dosta rudimentaran, sa par zanimljivih karakteristika koje su davale određeni šarm i korisnost istom. Naravno da sam od samog starta uočio izuzetnu korisnost za netehničke korisnike, ali sa moje tačke gledišta, sam sistem nije imao upotrebnu vrednost na velikim, komercijalnim projektima.
I onda sam počeo da radim za kompaniju specijalizovanu u pružanju tehničke ekspertize u implementaciji CMS rešenja za velike korporativne klijente (Fortune 1000).
Razlika između CMS i WCMS je izuzetno mala. CMS rešenja se u klasičnom smislu koriste za upravljanje svakodnevnim biznis dokumentima, mada mogu da se koriste i za upravljanje multimedijom. WCMS su podgrupa CMS-a i odnose se na upravljanje sadržajem na web sajtu.
Jedno od CMS rešenja u kojima se kompanija u kojoj radim specijalizovala jeste SDL Tridion . Na prvi pogled, SDL Tridion mi je ličio na bilo koji drugi CMS, ali sam ubrzo shvatio nivo moje zablude. Često sam u situaciji da me ljudi pitaju šta je Tridion, odnosno šta podrazumeva posao Tridion developera. Prvo što volim da uradim u datoj situaciji jeste da im pokažem narednu sliku, te da napomenem da je Tridion sve to i mnogo više:
Slika 1. Pregled SDL Tridion arhitekture
Dakle, hajde da pogledamo neke od mogućnosti CMS rešenja koje posao software developera čine interesantnim i izazovnim:
1. Servisnost (tehnička podržanost)
Prva stvar koja mi je bila objašnjena kada sam počinjao da radim, jeste da je Tridion softwer koji je podržan. Za korporacije čiji se biznis bazira na 24/7 dostupnom sajtu, dostupnost tehničkog osoblja koje se bavi instalacijom, konfiguracijom i monitoringom proizvoda, identifikovanjem bagova, a sve u cilju rešavanja problema u samom proizvodu, predstavlja jedno od ključnih mogućnosti. Sama servisnost vrlo često dovodi do nižih operativnih troškova prilikom implementacije. Šta to konkretno znači za developera? Pre svega, efikasnost u implementaciji i isporuci.
2. Ekstenzivnost (nadogradivost) softvera
Većina CMS-ova su nadogradiva. Nedostaje vam neka funkcionalnost u samom CMS-u? Vrlo lako možete da je razvijete i inkorporirate u samo rešenje koristeći veliki broj različitih API-jeva. Ovo je vrlo moćna karakeristika koja sama po sebi omogućuje da CMS postane “nešto više” za klijenta.
Sami API-jevi su različiti, variraju od CMS-a do CMS-a, pružaju različite mogućnosti i bazirani su na različitim programskim jezicima (C#, Java ili nešto treće). Rad na ekstenzijama (dodacima) podrazumeva dobro poznavanje C# ili Java programskog jezika, HTML-a, JavaScript-a i CSS-a. S obzirom da se podaci razmenjuju u XML ili JSON formatu, onda je poznavanje istih nužnost, te se nameće kao standard. Većina implementacionih aktivnosti se odnosi upravo na rad sa različitim API-jevima u cilju razvoja dodatnih funkcionalnosti. Vrlo često potrebno je i poznavanje rada sa bazama podataka, gde se dati okvir aktivnosti kreće od kreiranja baze i manipulacije podacima, do održavanja i administracije iste.
3. Personalizacija
Personalizija predstavlja koncept koji podrazumeva serviranje sadržaja posetiocima web sajta na osnovu njihovih preferenci. Posetilac web sajta se iz podataka koji se odnose na potrebe, želje, osobine i ciljeve (godište, pol, geo lokacija, kupovna istorije itd…) svrstava u određenu grupu – personu. Zahtev koji se pred developere postavlja u ovom slučaju je dvojak:
- Implementacija pravila za definisanje persona (korisničkih profila).
- Implementacija serviranja personalizovanog sadržaja posetiocu web sajta koji je asociran sa određenom personom.
4. Integracija sa sistemima za prevod
Sistemi za prevod su nužni ukoliko radite sa velikim klijentima koji svoj korporativni portal prevode na veliki broj jezika. Developer je u ovom slučaju zadužen za podešavanje postojećih konektora, ili razvoj potpuno novih, pri čemu su obe opcije moguće, ali ne i isto interesantne. Sami konektori predstavljaju REST web servise, najčešće implentirane u C# ili Java programskom jeziku. CMS developer je vrlo često u situaciji da razvija i jedne i druge.
5. Integracija sa DAM sistemima
U većini slučajeva klijent se odlučuje da svoju multimediju (koja može da bude izuzetno obimna) čuva na posebnim platformama i ovi sistemi za čuvanje i upravljanje digitalnim sadržajem se nazivaju DAM (Digital Asset Management) sistemi. Ovo kao rezultat zahteva od developera da implementira konektore ka istim ili da razvije rešenja koja omogućuju upravljanje eksternim multimedija sadržajima iz samog CMS sistema. Vrlo često, CMS-ovi podržavaju nativnu integraciju sa određenim DAM sistemima, pa samim tim integracija postaje lakša, ali to ne znači da je put popločan za developere. Developeri su i pored toga vrlo često u situaciji da razvijaju rešenja čiji je cilj podržavanje biznis zahteva u vezi manadžmenta same multimedije (razvijanje alata za pretragu, organizaciju, modifikovanje ili pregled multimedije). Isto tako, developer se vrlo često može naći u situaciji da razvija alate za export/import multimedija iz jednog CMS rešenja u drugo prilikom migracije.
6. Skalabilnost
Skalabilnost u ovom slučaju podrazumeva analizu celokupnog sistema, utvrđivanje uskih grla u vidu performansi, kao i predlaganje konkretnih unapređenja. Ovde se posao developera preklapa sa poslom sistem arhitekte, gde je potrebno utvrditi promene u arhitekturi kako bi se obezbedilo najoptimalnije funkcionisanje sistema. Na primer, ukoliko se utvrdi da je publikovanje sporo (publikovanje je proces transformacije artefakata iz CMS-a u HTML, XML, JSON ili druge blokove kako bi bili vidljivi na web sajtu), developer tada na osnovu metrika performansi može da predloži uvođenje novog servera, povećanje resursa na samom serveru, ili kompletan redizajn sistema ukoliko je to zaista neophodno. Optimizacija sistema u ovom slučaju zahteva da developer poseduje “treće čulo” za identifikovanje uskih grla.
7. Sistem administracija
Većinu vremena, posao developera se bazira na razvoju različitih alata, servisa ili aplikacija, ali ponekad se odnosi i na sistem administraciju. U ovom slučaju, to je posledica same kompleksnosti CMS rešenja. Veliki broj komercijalnih CMS sistema su složene platforme sa arhitekturom specifičnom za svakog klijenta ponaosob. Sa kompleksnošću rešenja dolaze i prednosti i nedostaci, samim tim premeštajući posao developera u DevOps polje. Posao CMS developera se u ovom slučaju bazira na identifikovanju problematičnog dela sistema (da li je to mrežni problem, loše performanse servera ili baze, loše deploy-ovana aplikacija itd.), što u pojedinim slučajevima ume da bude izuzetno teško. Ovde je bitno napomenuti da se vrlo često sam sistem sastoji od kombinacije Linux i Windows servera, dokera, aplikacija implementiranih u Javi, C# ili Basic-u što naravno predstavlja dodatni izazov, jer zahteva dodatni set veština.
Glavni “problem” ovog članka je što bi bio u stanju da danima pričam o različitim karakteristikama i mogućnostima CMS rešenja, što bi samo po sebi trebalo da čitaocu ovog članka pomogne da izvuče određene zaključke. Rad na složenim sistemima samo po sebi zahteva širok skup različitih osobina i veština. Mi, CMS developeri i konsultanti, se svakim danom sve više i više osećamo kao deca u prodavnici igračaka. Svaki dan smo u situaciji da radimo na delu sistema sa kojim ranije nismo imali prilike da se susretnemo, ovladavajući novim znanjima i veštinama i svaki put kada mislimo da smo ovladali sistemom, izađe nova verzija istog sa novom arhitekturom, novim API-ima i servisima, gde onda naš posao počinje iznova. Ovaj posao nije za svakoga, ali za nas, avanturističkog duha, SAVRŠEN JE.
Ukoliko imate pitanja, slobodno nas kontaktirajte.