Како смо изградили Campayn на CakePHP фрејмворку
Хтео бих да поделим са вама наше искуство у раду са CakePHP (КејкПХП) фрејмворком за рад у PHP (ПХП) језику. Под „нас“ мислим на Дев екипу иза Campayn а под „искуство“ мислим на добро и лоше које иде уз било који избор алата и парадигми.
Зашто CakePHP?
Знате и сами како како се бира најбољи алат за рад у софтверским кућама: узима се најбољи ради се са оним са чиме тренутна екипа зна да ради. Програмски језик се бира на основу скилсета тренутне екипе а фрејмворк на основу преференси програмера који је први дошао у фирму, засукао рукаве и ударио камен темељац за пројекат.
У идеалном свету, језик би се бирао на основу истраживања и прилагођености проблему, мада у том истом свету и кафа тече из славина а проџект менаџери знају програмирати….
….сваки следећи програмер који дође у фирму само настави тамо где је претходни стао, а ако има среће можда неће бити блокиран на друштвеним мрежама од стране првобитног програмера.
Пројекат је већ имао основу у CakePHP-у – додуше, у другом производу и имало је смисла наставити на томе. Пре 6 година није постојао јасан победник у популарности међу PHP девелоперима као што су то сада Ларавел и Symfony. Ларавел је тек зачет 2011-е, док је CakePHP постојао још од 2005-е (сећам се јер сам те године још плаћао бежични интернет 120 дин за 100 мега) и важио је за веома сигуран и стабилан избор, што још увек и јесте. Са друге стране, CodeIgniter је био у пуном замаху, али сви знамо како се то завршило – привремено напуштен и паузиран.
А шта је уопште Campayn?
У питању је SaaS или ти нашим језиком речено „софтвер за изнајмити“ – производ који служи за спамовање слање имејлова на дате контакт листе и користан је за слање newsletter-a, промоција и осталог промотивног материјала на више адреса, наравно под условом да примаоци уопште и желе те ваше поруке.
Нема смисла да набрајам 6 година рада, можете погледати списак свих или бар већи део функција на нашем сајту, а можете нас и цимнути на чету уживо тамо (молим вас немојте).
Што се тиче сирове снаге и бројки, у питању је систем који процесира репортинг податке брзином од 1000+ позива по минути, док истовремено и даље трпи свакодневно коришћење сајта и алата. Трпи MySQL базу од преко 100GB са преко 200 табела на коду чије редове се не усуђујем да пребројим (а реално, то је као да бројите напредак изградње авионе у килама). На истој основи смо направили и spinoff производ за нишу у Канади, користећи исти код и исту базу и паралелно се развијају оба SaaS производа.
Предности
-
Приступачан новим људима
Много Индијаца програмера је протутњало кроз пројекат и свако је био у могућности да буде користан већ за дан-два а по могућности и дуже од дан-два. Нисмо никад имали проблем са новим људима који га први пут користе. Сви тренутни програмери у екипи су се први пут сусрели са CakePHP-ом кад су дошли на овај пројекат укључујући и мене. То укључује јуниоре чији је врхунац тада био Vannila PHP + jQuery, програмера који је зарадио лебац на eCommerce системима и једног Ларавел артисана (да да – пуштамо и брадате хипстере у екипу).
Чак и да им је цела MVC парадигма (Model View Controller) сасвим нова, веома се лако прилагодити. Малтене ни ООП (објектно-орјентисано програмирање) не морају знати: имали смо људе који су радили првенствено на фронтенду – и са тим нису морали дубоко познавати ООП страну PHP-а. Све што је потребно је пар дана маx док се не по’ватају основе, а финесе долазе са временом.
Такође, један од олакшавајућег фактора јесте одлична документација. Не могу ово довољно да нагласим – увек је ажурна и пуна корисних примера. Оснивачи очигледно воле кување (шта ли их је одало?), па тако се и документација назива куваром (CookBook) а нови алат за намештања пројекта пећница (Oven). За љубитеље сувих спецификација имају и API документацију. Цео код им је одлично документован и већ дуже времена ми ни не треба онлајн документација. Не шкоди и то што постоји већ 10+ година, па имате свакојака решења и блог постове на интернету и StackOverflow.
Ако немате новаца а имате времена, одрадите пробни пројекат из документације. А ако је обрнуто, пријавите се на онлине тренинг од стране CakeDC фондације да би се оспособили за квалитетан рад за два дана.
-
Флексибилан за рад
Флексибилност је у овом случају добра и лоша али пошто смо ми у старту PHP програмери – жртвовање мало строгости ради бржег, лакшег и баговитијег продуктивнијег рада нам је у крви. View слој су *.ctp фајлови, а они су исто што и .php фајлови. Дакле, не губите на флексибилности као рецимо са Смартy или Блејду што у овом помаже у писању мање кода и у пуцању себи у ногу, по потреби наравно.
Сви слојеви ове торте су јасно дефинисани, иако вам фрејмворк говори где иде пишкота а где шлаг, вас ништа не спречава да направите украсне руже од бибера и филинг од мајонеза – али немојте, молим вас. За оне много ретке ситуације када је такво нешто оправдано, ово је плус, а и супер је за кад вам треба нешто „брзо и прљаво“ ради демонстрације концепта. Алати за кување (Cake bake конзола) су сјајан начин да брзо генеришете нове моделе, контролере и тестове.
-
Одлична екипа иза CakePHP-a
Кувари иза CakePHP-а су веома приступачни, можете их увек цимнути на друштвеним мрежама или на Slack-у и искрено ће се потрудити да вас не отерају у три лепе за ваша глупа питања. Спремни су да помогну и јако су ажурни на Github профилу пројекта, где редовно проверавају новопристигле примедбе и багове. Ако тражите први пројекат којем бисте хтели допринети у свету отвореног кода, предлажем њихов GitHub али ако сте очајни програмери, немојте рећи да сам вас ја послао.
Мане софтвера
Спомињали смо флексибилност као врлину, али је то уједно и велика мана ако немате строг процес провере кода (такозвани Code Review). Док смо увели Code Review у редовну праксу свакакви бисери су се увукли у нашу такозвану торту, што је значило да смо касније ми заједно са корисницима ломили зубе на споменутим бисерима.
Такође релативно опасна ствар за почетнике, CakePHP ради све чим га извадите из кутије, па притом уз торту добијате и тацну, свеће и кухињски пулт. Тек касније схватате вашу грешку и онда почиње гашење разних ствари од којих нисте имали користи. Али када то одрадите имаћете супер брз програм опет (ако је то икад и могао да буде).
Мора се споменути и чињеница да 2.x грана CakePHP-a користи Модел слој који ради све користећи низове (arrays). Опет, ми смо PHP програмери па то има смисла, али на великим пројектима то ће створити неке главобоље. Препоручујем да створите навику да пишете тестове који су притом лепо интегрисани у фрејмворк. Све нове пројекте започињите са најновијом верзијом CakePHP-а (тренутно 3.4.x), а ми који смо осуђени на рад са старијом верзијом ћемо вас већ некако стићи.
Закључак
Мислим да је избор фрејмворка био одличан са обзиром на тадашње опције, а са верзијом 3 (коју помно пратим) је цела прича модернизована што даје целом пројекту на озбиљности. Чињеница да и дан данас развијају 2.x верзију је тестамент томе колико је ово сигуран избор. Не знам шта би било да смо после 3 године рада извисили и морали потрошити 6 месеци само на прелазак на други фрејмворк. Одлична документација, добра заједница и стабилан фрејмворк је све што велике идеје могу пожелети. Зато, напред у кување!
Popy
26/01/2017 @ 09:30
Super tekst, otprilike imamo slična iskustva, mada ja ne bih baš smeo da budem ovoliko objektivan jer bi me PM preusmerio na CEO koji bi me preusmerio dalje na HR.
….po radnu knjižicu 😀
Milovan
26/01/2017 @ 09:51
HA! Prepoznah majicu na jedan „Рок Н Рол ћирилицом“. Vidim da je neko bio na Magento konferenciji u Nišu?
Nebojša
26/01/2017 @ 09:55
Odlična je majica. Oboje smo dobili po jednu na PHPSrbija konferenciji. Idemo i ove godine 🙂
Milovan
26/01/2017 @ 10:05
Ovaj sto na kojem radiš, to je pretpostavljam onaj što ga Istok Pavlović reklamirao, što se podešava po visini za sedenje i stajanje? Kakvi su utisci u radu sa njim? Pretpostavljam da sediš dosta kao i ja pa razmišljam o kupovini istog
Nebojša
26/01/2017 @ 10:08
Ne bih da zvučim kao reklama za Dormeo, ali „Otkad ga koristim, više me ne bole leđa“.
Da, u pitanju je Standing desk, koji se podešava na kurblu. Donešen iz IKEA-e, model SKARSTA(povoljan je), a kolege u coworkingu imaju i električne BEKANT modele. Od mene preporuka, baš zato što bih u suprotnom sedeo ceo dan.
Milos
26/01/2017 @ 09:55
Uzivanje je bilo procitati ovaj tekst. Doduse, u pauzi za dorucak na gradilistu.
Ali, jednog dana…
IFjiasjfsopia
07/02/2017 @ 14:43
Zašto ovo a ne MailChimp? Ima li neka uporedna tabela šta daje jedan a šta drugi?
Nebojša
08/02/2017 @ 14:29
Nemamo neku stranicu sa poređenjem, ali ovako ukratko mogu da kažem za Campayn u odnosu na Mailchimp:
– Ima bolji korisnički interfejs
– Lakši za korišćenje
– Bolji Support (hej, i znamo srpski!)
– Jeftiniji smo
– Serveri su nam u Kanadi, pa ne podležemo američkim zakonima o (nedostatku) privatnosti
A mane bi bile:
– manje feature-a, nemamo baš sve što Mailchimp ima
– nemamo slanje preko SMTP-a i API-ja,
Ako neko ima još pitanja, može nas naći na support et campayn.com.
Dragoslav
22/09/2021 @ 15:41
Sve je kako treba na sajtu. A sjajno je sto imas vremena i inspiracije da iskustvo nesebicno delis.