Hteo bih da podelim sa vama naše iskustvo u radu sa CakePHP frameworkom za rad u PHP-u. Pod „nas“ mislim na Dev ekipu iza Campayn a pod „iskustvo“ mislim na dobro i loše koje ide uz bilo koji izbor alata i paradigmi.

Zašto CakePHP?

Znate i sami kako kako se bira najbolji alat za rad u softverskim kućama: uzima se najbolji radi se sa onim sa čime trenutna ekipa zna da radi. Programski jezik se bira na osnovu skillseta trenutne ekipe a frejmvork na osnovu preferensi programera koji je prvi došao u firmu, zasukao rukave i udario kamen temeljac za projekat.

U idealnom svetu, jezik bi se birao na osnovu istraživanja i prilagođenosti problemu, mada u tom istom svetu i kafa teče iz slavina a prodžekt menadžeri znaju programirati….
….svaki sledeći programer koji dođe u firmu samo nastavi tamo gde je prethodni stao, a ako ima sreće možda neće biti blokiran na društvenim mrežama od strane prvobitnog programera.

Projekat je već imao osnovu u CakePHP-u – doduše, u drugom proizvodu i imalo je smisla nastaviti na tome. Pre 6 godina nije postojao jasan pobednik u popularnosti među PHP developerima kao što su to sada Laravel i Symfony. Laravel je tek začet 2011-e, dok je CakePHP postojao još od 2005-e (sećam se jer sam te godine još plaćao wireless internet 120din za 100mega) i važio je za veoma siguran i stabilan izbor, što još uvek i jeste. Sa druge strane, CodeIgniter je bio u punom zamahu, ali svi znamo kako se to završilo – privremeno napušten i pauziran.

A šta je uopšte Campayn?

U pitanju je SaaS ili ti našim jezikom rečeno „softver za iznajmiti“ – proizvod koji služi za spamovanje slanje emailova na date kontakt liste i koristan je za slanje Newsletter-a, promocija i ostalog promotivnog materijala na više adresa, naravno pod uslovom da primaoci uopšte i žele te vaše poruke.

Uključuje user-friendly editor za brendiranje vaših poruka, ubacivanja slika, linkova i ostalog sadržaja kojeg i tetka sa fejsa zna koristiti i omogućuje vam lako praćenje rezultata (tj. vidite ko ignoriše vaše mejlove), segmentiranje kontakata na osnovu raznih kombinacija (možete poslati babi iz Šipova taj najnoviji model Gorenje šporeta, kad bi naš alat bio prilagođen za slanje poruka preko poštara Žike), nameštavanje signup formi kao naprimer onih što iskaču nakon što dođete do pola nekog teksta „koje svi jako volimo“ i autorespondera tj automatskih poruke tipa „Hvala i molim vas nemojte nas baciti u spam sanduče“ i mnoge druge.

Nema smisla da nabrajam 6 godina rada, možete pogledati spisak svih ili bar veći deo funkcija na našem sajtu, a možete nas i cimnuti na Live Chat tamo (molim vas nemojte).

Što se tiče sirove snage i brojki, u pitanju je sistem koji procesira reporting podatke brzinom od 1000+ poziva po minuti, dok istovremeno i dalje trpi svakodnevno korišćenje sajta i alata. Trpi MySQL bazu od preko 100GB sa preko 200 tabela na kodu čije redove se ne usuđujem da prebrojim (a realno, to je kao da brojite napredak izgradnje avione u kilama). Na istoj osnovi smo napravili i spinoff proizvod za nišu u Kanadi, koristeći isti kod i istu bazu i paralelno se razvijaju oba SaaS proizvoda.

Prednosti

  • Pristupačan novim ljudima

Mnogo Indijaca programera je protutnjalo kroz projekat i svako je bio u mogućnosti da bude koristan već za dan-dva a po mogućnosti i duže od dan-dva. Nismo nikad imali problem sa novim ljudima koji ga prvi put koriste. Svi trenutni programeri u ekipi su se prvi put susreli sa CakePHP-om kad su došli na ovaj projekat uključujući i mene. To uklučuje juniore čiji je vrhunac tada bio vanilla PHP + jQuery, programera koji je zaradio lebac na eCommerce sistemima i jednog Laravel artisana (da da – puštamo i bradate hipstere u ekipu).

Čak i da im je cela MVC paradigma (Model View Controller) sasvim nova, veoma se lako prilagoditi. Maltene ni OOP ne moraju znati: imali smo ljude koji su radili prvenstveno na frontendu – i sa tim nisu morali duboko poznavati OOP stranu PHP-a. Sve što je potrebno je par dana max dok se ne po’vataju osnove, a finese dolaze sa vremenom.

Takođe, jedan od olakšavajućeg faktora jeste odlična dokumentacija. Ne mogu ovo dovoljno da naglasim – uvek je ažurna i puna korisnih primera. Osnivači očigledno vole kuvanje (šta li ih je odalo?), pa tako se i dokumentacija naziva kuvarom (CookBook) a novi alat za nameštanja projekta pećnica (Oven). Za ljubitelje suvih specifikacija imaju i API dokumentaciju. Ceo code im je odlično dokumentovan i već duže vremena mi ni ne treba online dokumentacija. Ne škodi i to što postoji već 10+ godina, pa imate svakojaka rešenja i blog postove na internetu i StackOverflow.

Ako nemate novaca a imate vremena, odradite probni projekat iz dokumentacije. A ako je obrnuto, prijavite se na online trening od strane CakeDC fondacije da bi se osposobili za kvalitetan rad za dva dana.

  • Fleksibilan za rad

Fleksibilnost je u ovom slučaju dobra i loša ali pošto smo mi u startu PHP programeri – žrtvovanje malo strogosti radi bržeg, lakšeg i bagovitijeg produktivnijeg rada nam je u krvi. View sloj su *.ctp fajlovi, a oni su isto što i .php fajlovi. Dakle, ne gubite na fleksibilnosti kao recimo sa Smarty ili Blade, što u ovom pomaže u pisanju manje koda i u pucanju sebi u nogu, po potrebi naravno.

Svi slojevi ove torte su jasno definisani, iako vam framework govori gde ide piškota a gde šlag, vas ništa ne sprečava da napravite ukrasne ruže od bibera i filing od majoneza – ali nemojte, molim vas. Za one mnogo retke situacije kada je takvo nešto opravdano, ovo je plus, a i super je za kad vam treba nešto „brzo i prljavo“ radi demonstracije koncepta. Alati za kuvanje (cake bake konzola) su sjajan način da brzo generišete nove modele, kontrolere i testove.

  • Odlična ekipa iza CakePHP-a

Kuvari iza CakePHP-a su veoma pristupačni, možete ih uvek cimnuti na društvenim mrežama ili na Slacku i i iskreno će se potruditi da vas ne oteraju u tri lepe za vaša glupa pitanja. Spremni su da pomognu i jako su ažurni na Github profilu projekta, gde redovno proveravaju novopristigle primedbe i bagove. Ako tražite prvi projekat kojem biste hteli doprineti u svetu Open Source-a, predlažem njihov Github ali ako ste očajni programeri, nemojte reći da sam vas ja poslao.

Mane softvera

Spominjali smo fleksibilnost kao vrlinu, ali je to ujedno i velika mana ako nemate strog proces provere coda (takozvani Code Review). Dok smo uveli Code Review u redovnu praksu svakakvi biseri su se uvukli u našu takozvanu tortu, što je značilo da smo kasnije mi zajedno sa korisnicima lomili zube na spomenutim biserima.

Takođe relativno opasna stvar za početnike, CakePHP radi sve čim ga izvadite iz kutije, pa pritom uz tortu dobijate i tacnu, sveće i kuhinjski pult. Tek kasnije shvatate vašu grešku i onda počinje gašenje raznih stvari od kojih niste imali koristi. Ali kada to odradite imaćete super brz program opet (ako je to ikad i mogao da bude).

Mora se spomenuti i činjenica da 2.x grana CakePHP-a koristi Model sloj koji radi sve koristeći nizove (array-e). Opet, mi smo PHP programeri pa to ima smisla, ali na velikim projektima to će stvoriti neke glavobolje. Preporučujem da stvorite naviku da pišete testove koji su pritom lepo integrisani u framework. Sve nove projekte započinjite sa najnovijom verzijom CakePHP-a(trenutno 3.4.x), a mi koji smo osuđeni na rad sa starijom verzijom ćemo vas već nekako stići.

Zaključak

Mislim da je izbor framework-a bio odličan sa obzirom na tadašnje opcije, a sa verzijom 3 (koju pomno pratim) je cela priča modernizovana što daje celom projektu na ozbiljnosti. Činjenica da i dan danas razvijaju 2.x verziju je testament tome koliko je ovo siguran izbor. Ne znam šta bi bilo da smo posle 3 godine rada izvisili i morali potrošiti 6 meseci samo na prelazak na drugi framework. Odlična dokumentacija, dobra zajednica i stabilan framework je sve što velike ideje mogu poželeti. Zato, napred u kuvanje!