Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Ondra Machulda
@OndraM
Jak jsme přepisovali
Jobs.cz na Symfony
1. sraz přátel Symfony Praha
29. říjen 2015
Anotovaná verze...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu2
CREDIT GOES TO...
@j...
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é...
Titulka Jobs.cz od října 2014
Titulka i nové části webu jsou responzivní.
Teď máme ještě i mobilní verzi m.jobs.cz,
kterou ale chceme brzy vypnout.
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu6
●
postupně nahrazuje...
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 pr...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu8
LESSONS LEARNED
co j...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu9
●
novou aplikaci jsm...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu10
●
UI pattern librar...
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 p...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu12
●
přenositelné komp...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu13
ŠKOLENÍ SYMFONY
●
k...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu14
●
dělali jsme napoj...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu15
– struktura aplikac...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu16
●
performance měřit...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu17
FUNKČNÍ TESTY
●
Čas...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu18
●
součást aplikace:...
LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu19
●
controllery nemám...
Ondra Machulda
@OndraM
Nächste SlideShare
Wird geladen in …5
×

Jak jsme přepisovali Jobs.cz na Symfony

326 Aufrufe

Veröffentlicht am

28. července 2014 jsme začali po částech přepisovat Jobs.cz z interního frameworku do Symfony. Pokud i vy plánujete přepisovat aplikaci do Symfony, mohlo by vás zajímat, co jsme se za uplynulý rok a čtvrt naučili - na čem jsme si vylámali zuby, co bychom znovu udělali jinak a co se nám naopak vyplatilo.

Video: https://www.youtube.com/watch?v=u6PA7EUO0WA

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Jak jsme přepisovali Jobs.cz na Symfony

  1. 1. 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
  2. 2. LMC s.r.o. Lighthouse Towers, Jankovcova 1569/2c, 170 00 Praha 7, Tel.: +420 224 810 053, www.lmc.eu2 CREDIT GOES TO... @jirka_novak @robinpokorny @s7anley @vvondra @krejcek @cizinskamartina @davidkmenta @PopluharPeter
  3. 3. 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é.
  4. 4. Titulka Jobs.cz od října 2014
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  20. 20. Ondra Machulda @OndraM

×