+ All Categories
Home > Software > Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Date post: 13-Apr-2017
Category:
Upload: pehapkari
View: 313 times
Download: 2 times
Share this document with a friend
20
Ondra Machulda @OndraM Jak jsme přepisovali Jobs.cz na Symfony 1. sraz přátel Symfony Praha 29. říjen 2015 Anotovaná verze přednášky
Transcript
Page 1: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Ondra Machulda@OndraM

Jak jsme přepisovali Jobs.cz na Symfony

1. sraz přátel Symfony Praha29. říjen 2015

Anotovaná verze přednášky

Page 2: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 2

CREDIT GOES TO...@jirka_novak @robinpokorny @s7anley @vvondra

@krejcek @cizinskamartina @davidkmenta @PopluharPeter

Page 3: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Takto vypadaly Jobs.cz do září 2014. Design se od roku 2005 změnil jen málo; vnitřnosti byly sice trochu novější, ale také letité.

Page 4: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Titulka Jobs.cz od října 2014

Page 5: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Titulka i nové části webu jsou responzivní. Teď máme ještě i mobilní verzi m.jobs.cz,

kterou ale chceme brzy vypnout.

Page 6: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 6

● 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

Page 7: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 7

● 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

Page 8: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 8

LESSONS LEARNEDco jsme se naučili, co nám pomohlo, co bychom dělali jinak

Page 9: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 9

● 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

Page 10: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 10

● 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

Page 11: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 11

● 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

Page 12: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 12

● 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

Page 13: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 13

Š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 mnohavěcech nasměrovalo dobrým směrem a zabránilorůzným začátečnickým chybám

Page 14: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 14

● 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

Page 15: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 15

– 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

Page 16: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 16

● 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ůžesi člověk aplikaci zpomalit a ani si toho nevšimne...

Page 17: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 17

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

Page 18: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 18

● 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

Page 19: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu 19

● 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

Page 20: Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symfony v Praze)

Ondra Machulda@OndraM


Recommended