DevCamp 6.0 - 6 tímov, veľa kódu a pohody

18.06.2018

Tentokrát sa náš vývojársky výjazd konal na chalupe Sokolík v Proseči vo Východných Čechách.

Počas výjazdu sme boli rozdelení do tímov a venovali sa celkovo šiestim vopred vybraným témam. Cieľom projektov bolo buď vytvorenie prototypov nových aplikácií alebo optimalizácie či vylepšenie niektorých procesov. Výsledky práce z DevCamp 6.0 tak môžu byť použiteľné ako interne, tak aj na našich klientskych projektoch.

DevCamp 6.0

Tento rok sme sa venovali nasledujúcim témam:

Automatizácia a orchestrácie serverových prostredí a kontajnerových aplikácií

Tím: Tomáš Zajíček, Aleš Kratochvíl, František Herein

„Najprv sme testovali predvybrané nástroje pre automatizáciu konfigurácie serverových prostredí – Salt, Chef a Ansible. Na základe praktických poznatkov z testovania a porovnania jednoduchosti používania a nasadenia jednotlivých nástrojov do našej prevádzky sme pre ďalšie použitie v prevádzkovej časti DevOps vybrali Ansible, pre ktorý sme vytvorili playbooky pre konfiguráciu našich štandardných serverových prostredí, verzovania v Git úložisku, s predpokladom využitia štandardného git flow pre propagáciu a review zmien v konfiguračných súboroch. Ďalej bola pripravená produkčná inštancia systému AWX, ktorá umožňuje spúšťať a zobrazovať výsledky Ansible playbookov. Ansible v spojení s Git repozitárom a rozhraním AWX umožňuje prevádzkovému tímu rýchlo a pritom kontrolovane definovať konfiguráciu a propagovať jej zmeny do serverových prostredí, čo je výhodné najmä pri stále sa zväčšujúcom počte serverov, ktoré sú často tvoriace klastre.

Pre orchestráciu aplikácií kontajnerovaných Dockerom sme sa rozhodli vyskúšať open source orchestroví systém Kubernetes s vytvorením vlastného on premise clusteru. Rovnako ako v prípade Ansible potom platí, že konfiguračné skripty Kubernetu písané vo formáte YAML boli uložené v Git repozitároch a všetky zmeny konfigurácie deploymentu aplikácií verziované a podliehajú code review.“

Analýza formulára na SDP platforme

Tím: Jan Kučera, Jozef Krcho, Tomáš Konrády

„V rámci DevCampu sme rozšírili funkcionalitu JavaScript kolektoru tak, aby zasielal informácie o užívateľskom správaní vo formulári. Prostredníctvom Kafka streams následne vykonávame agregáciu správ v rámci jednej unikátnej užívateľskej interakcii s formulárom.

V rámci vývoja backendu sme potom vytvorili rozšírenie do pomocného nástroje fake-log-collector, ktorý nám namiesto náhodných správ generoval "scenáre" simulujúce interakciu užívateľa.

Počas vývoja sme narazili na komplikácie, ako Kafka Stream engine spracováva okna správ (message windowing), rovnako ako na fakt, že API Kafka streams naráža na limitácie Javy. V závere posledného dňa sa nám nakoniec podarilo vizualizovať prichádzajúce dáta prostredníctvom vizuálneho nástroja Grafana.“

Operational inteligencie (application performance monitoring) na SDP Platforme

Tím: Lukáš Matějka, Aleš Rybák, Milan Hruban, Martin Bartoš

„V rámci tohtoročného DevCampu sme sa sústredili na scenár pripojenia Stream Data Platformy a nástroja na aplikačný monitoring. Cieľom bolo zobraziť prehľadný report, ktorý v reálnom čase zobrazuje výkon načítania jednotlivých webových stránok a to ako z pohľadu klienta (doba vykreslenia stránok meraním napísaným v JavaScripte), tak z pohľadu servera (doba spracovania a chybovosť serverovej odpovedi). Užívateľ tak môže z reportu vidieť konkrétne štatistiky - napríklad najnavštevovanejšie stránky (zobrazujúci produkt a jeho potenciálny nákup), ktoré majú najhorší výkon z pohľadu doby načítania. Doba načítania a zobrazenia je totiž jeden z dôležitých faktorov pre použiteľnosť stránky a často rozhoduje o tom, či koncový užívateľ stránku opustí alebo nie.

Na záver sme pripravili konkrétne vizualizácie reportu, do ktorého prúdia agregované dáta v reálnom čase.“

Optimalizácie rýchlosti načítania

Tím: Tomáš Plecháč, Jakub Mišenko

„Hlavným zámerom našej aktivity bola optimalizácia rýchlosti alebo ešte lepšie, plánovanie performance budgetu. Cieľom bolo maximálne eliminovať dobu potrebnú pre doručenie webového obsahu koncovým užívateľom a s tým spojené zvýšenie customer experience a business value našich riešení. Po podrobnom rešerši prišlo na rad vyhodnotenie a selekcia potrebných metrík vzťahujúcich k pokrytiu charakteru nami ponúkaných klientskych riešení, osedlaní potrebných nástrojov ako sú WebPagetest, Google PageSpeed Insights a rozšírenie Lighthouse pre Google Chrome. Následne sme empiricky determinovali ideálne časové rozsahy (mediány) čiastkových meraných parametrov, ktorými sa budeme riadiť a na ktoré budeme cieliť. Čaká nás ešte veľa práce, napr. s automatizáciou testov alebo priebežným vyhodnocovaním, ale je to výzva, v ktorej vidíme zmysel.“  

Aplikácia Delivery Pipeline

Tím: Adam Hladík, Tomáš Janatka

„Aplikácia Delivery Pipeline si kladie za cieľ vizualizovať požadované kapacity firmy na základe známych obchodných prípadov a jej časových a kapacitných parametrov. Najskôr sme vykonávali revíziu pôvodného skôr vzniknutého návrhu aplikácie a následne sa rozhodli odštartovať zo zelenej lúky. Pôvodný Material Design sme vymenili za React-Bootstrap a to z dôvodu lepšej znalosti Bootstrapu. Naším prvou úlohou bolo oživiť jednotlivé komponenty a prepojiť je s API. Ďalej sme pripravili vzhľad aplikácie, podobu jednotlivých komponentov a sprevádzkovali na mock dátach hlavný graf vizualizujúci tzv. príležitosti proti kapacite Lundegaardu v čase a FTE.

Čerešničkou na torte a posledným bodom bolo prepojenie našej aplikácie s produkčným CRM systémom Lundegaardu a na záverečnej prezentácii sme tak prezentovali aplikáciu na reálnych dátach.“

Come App

Tím: Jakub Kohout, Lukáš Sulík, Václav Jančařík

„Cieľom nášho tímu bolo vytrovenie mobilnej a webovej aplikácie pre vizualizáciu využívania Lundegaard kancelárii. Zároveň si Václav Jančařík a Lukáš Sulík chceli ohmatať technológie Clojure a ClojureScript – ako inak, než vývojom aplikácie bez predchádzajúcich skúseností!“

O vývoj mobilnej aplikácie sa postaral Jakub Kohout s pomocou nástroja React Native. Webovú aplikáciu vytvoril Lukáš Sulík ako SPA vo funkcionálnom jazyku ClojureScript (Clojure, ktorý možno skompilovať do JavaScriptu). Back end pre vyššie spomínané aplikácie vyvinul Václav Jančařík v jazyku Clojure, ktorý beží na JVM a umožňuje interoperabilitu s Java knižnicami a nástrojmi (server možno teda napr. nasadiť na Tomcat a dokáže taktiež využiť Java adaptéry pre pripojenie k databázam). Kontajnerované aplikácie vyvíjané v jednotlivých tímoch sme posledný deň pred záverečnou prezentáciou nasadili úspešne do pripraveného Kubernetes klastra, na ktorého ďalšie využívanie pre deployment a prevádzku našich aplikácií sa už tešíme.

Práce bolo veľa, ale tiež sme si našli čas sa baviť. Užili sme si relax vo vírivke, kúpaní v bazénu, saunovanie alebo bežecké tréningy pred firemní štafetou RunCzech O2. Tímového ducha sme podporili taktiež pri hrách ako paintball, ping pong, basketbal alebo nohejbal. Nechýbali ani večerné hry na Playstation a intenzívne debaty nad dobre vychladeným pivom. Proste DevCamp so všetkým, čo má mať!

4 hodiny vývoja vo 40s:

DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody
DevCamp 6.0 - 6 tímov, veľa kódu a pohody