5. Titulka i nové části webu jsou responzivní.
Teď máme ještě i mobilní verzi m.jobs.cz,
kterou ale chceme brzy vypnout.
6. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu6
●
postupně nahrazujeme jednotlivé části
– přepsat to najednou by nešlo – trvalo by to hrozně dlouho a nemohli bychom to průběžně testovat
– napíšeme novou část, vyzkoušíme na části lidí, vyladíme a pak tam pošleme všechny
– starou část pak necháme „vyhnít“, neztrácíme čas mazáním – až budou přepsané všechny části, odstraníme
rovnou celou starou aplikaci
●
28. července 2014 – první commit nových Jobs.cz
●
1. říjen 2014 – titulka, login, Inspirace a rady
– i zbytek Jobs.cz obalený „novým“ designem (ale pouze v desktopové neresponzivní variantě)
●
listopad, prosinec – detail inzerátů, odpovídání
●
duben-červen 2015 – opt-in beta hledání, postupné dodělávání a testování funkcionalit
●
červenec – opt-out beta hledání
●
srpen – nové hledání spuštěno prakticky všem
●
říjen – hledání brigád, vypnutí starého hledání
JAK ŠEL ČAS
7. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu7
●
na to, že se na první pohled jedná o pár stránek to ale vypadá, že
jsme to na Symfony přepisovali dlouho
– nepředělávali jsme ale jen PHP backend
●
backend
– přepis z interního frameworku na Symfony
– search engine z Microsoft FAST na Apache SOLR
●
frontend
– responzivita + částečný redesign (vč. uživatelského a A/B testování)
– Twig
– React.js (vyhledávací pole, filtry)
●
přešli jsme z dvoutýdenních releasů na continuous delivery
– což klade na aplikace také trochu jiné nároky
CO JSME PŘEDĚLÁVALI
8. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu8
LESSONS LEARNED
co jsme se naučili, co nám pomohlo, co bychom dělali jinak
9. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu9
●
novou aplikaci jsme měli v repozitáři spolu se starou
– což v několika případech vedlo k provázání mezi nimi (hardcoded
autoloading kvůli šablonám, javascript byl u staré aplikace aj.)
●
provázání staré <=> nové = katastrofa
●
všechny závislosti musí být transparentní
●
nezávislost i za cenu dočasné duplikace kódu
– i když má člověk nutkání nedávat si do nové aplikace nic „nečistého“,
nepřepsaného ze staré (všechno ale nejde přepsat hned)
ZÁVISLOSTI ODDĚLIT CO NEJDŘÍVE
10. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu10
●
UI pattern library (styleguide)
– http://www.jobs.cz/ui/
●
instalovaná přes bower (=> oddělená závislost)
●
ve starých i nových Jobs.cz
NEZÁVISLÁ UI KNIHOVNA
11. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu11
●
začalo se v něm psát už dříve
– jakmile člověk předpokládá, že bude přepisovat do Symfony,
může začít psát šablony ve Twigu
●
Twig jde snadno napasovat kamkoliv
– do jiného frameworku i do vlastní legacy aplikace
●
šablony se pak snadno přesunou
TWIG
12. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu12
●
přenositelné komponenty jde psát i do „staré“ aplikace
– když člověk zdědí starou „zbastlenou“ aplikaci, svádí to k tomu do ní
nové věci také bastlit „postaru“
– to je ale chyba – psaním přenositelných komponent si člověk může
ušetřit práci do budoucna, až bude přecházet na novou aplikaci
●
tedy hlavně: transparentní závislosti, testy (!), „čisté“
třídy bez stromu závislostí aj.
– dělat DI jde i bez kontejneru – „dependency injection pro chudé“
●
jejich přesun je pak snazší
– přidáte do service containeru, pustíte testy a máte hotovo
NEČEKAT S PSANÍM PŘENOSITELNÝCH KOMPONENT
13. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu13
ŠKOLENÍ SYMFONY
●
když člověk začíná s novou technologií, často nestojí
první věc co v ní udělá za moc – to jsme si ale nemohli
dovolit
●
školení od Hugo Hamona ze Sensia nás v mnoha
věcech nasměrovalo dobrým směrem a zabránilo
různým začátečnickým chybám
14. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu14
●
dělali jsme napojení na historické interní backoffice systémy
– nechtěli jsme ztrácet čas jejich přepisem
– přepis se navíc špatně businessově obhajuje
– ve výsledku jsme ale propojováním (systémy moc nemají dokumentaci ani
rozumné API), opravou následných bugů a nepohodlnou prací s nimi možná
strávili více času, než kdybychom to přepsali
●
ne vše ze starých systémů je třeba
– často obsahují robustní, komplikovanou nebo historicky nanesenou
funkcionalitu, která dnes nemusí být třeba a při přepisu by se dala
zahodit/zjednodušit
●
⇒ být radikálnější při hodnocení, co přepsat a co hackovat
MOC JSME HACKOVALI
15. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu15
– struktura aplikace (členění tříd apod.)
– názvosloví (Abstract/Interface v názvech tříd, routy, servicy...)
– codestyle (u nás PSR2 + části Symfony coding standards)
●
zavést co nejdříve
– je skoro jedno, jaké budou (jen když zvolíte něco netypického tak si možná ztížíte
zapracování nováčků), musí být ale jednotné
●
co jde, hlídat na CI serveru, zbytek v code-review
– v code-review neztrácet čas tím, co jde hlídat automatizovaně!
– na codestyle PHP_CodeSniffer a php-cs-fixer
●
změna konsensu je v pořádku, musí se to ale pak hned sjednotit
– sjednotit napříč aplikací a nejlépe přidat pravidlo do codestyle checků
KONVENCE FTW
16. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu16
●
performance měřit od začátku
– aby později bylo srovnání v čase
●
https://blackfire.io/ + performance assertions
●
lazy services v Symfony DIC
MĚŘENÍ PERFORMANCE
když se performance nehlídá automatizovaně, může
si člověk aplikaci zpomalit a ani si toho nevšimne...
17. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu17
FUNKČNÍ TESTY
●
Často se na ně zapomíná, jsou ale
nezbytnou součástí continuous integration
●
Článek o tom, k čemu čemu funkční testy:
http://prvnivcesku.cz/systemove-testovani/
●
Když doděláme nějakou část webu,
napíšeme funkční testy na hlavní scénáře
●
Klidnější spaní vývojářů
– když testy projdou, minimalizuje se šance, že se
v aplikaci něco rozbilo
●
Vlastní nástroj Steward
– PHPUnit + Selenium
– lmc-eu/steward
x
y
18. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu18
●
součást aplikace:
– FrontBundle, BackBundle, CompaniesBundle
●
samostatné, sdílené v LMC
– ApiBundle, LoggingBundle, CacheBundle, UserBundle
– semver, nebo se z toho zblázníš
– satis/Toran Proxy, nebo se upíšeš
NAŠE BUNDLY
19. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu19
●
controllery nemáme jako service – volíme pragmatičtější přístup
●
private/protected metody v controlleru
– zlo, mělo by se to zakázat, když už má smysl něco vyčlenit do metody, nemá to
být neotestované a netestovatelné v controlleru
●
services definované v xml
– lépe se popisuje sématika, doporučoval nám to i Hugo Hamon na školení a osvědčilo se to
●
vlastní DataCollector do Symfony Profileru
– šel vcelku snadno napsat, nebojte se toho
●
solarium + solarium bundle
●
pagerfanta + pagerfanta bundle
●
FOSJsRoutingBundle
– export otagovaných rout do javascriptu, kde se pak dají sestavovat URL podobně jako ve twigu
●
PhpStorm + Symfony plugin
RANDOM – RŮZNÉ POZNATKY