DevCamp 6.0 - 6 týmů, hodně kódu a pohody

18.06.2018

Tentokrát se náš vývojářský výjezd konal na chalupě Sokolík v Proseči ve Východních Čechách.

Po dobu výjezdu jsme byli rozděleni do týmů a věnovali se celkem šesti předem vybraným tématům. Cílem projektů bylo buď vytvoření prototypů nových aplikací nebo optimalizace či vylepšení některých procesů. Výsledky práce z DevCamp 6.0 tak mohou být použitelné jak interně, tak i na našich klientských projektech.

DevCamp 6.0

Letos jsme se věnovali následujícím tématům:

Automatizace a orchestrace serverových prostředí a kontejnerových aplikací

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

„Nejprve jsme testovali předvybrané nástroje pro automatizaci konfigurace serverových prostředí – Salt, Chef a Ansible. Na základě praktických poznatků z testování a porovnání snadnosti používání a nasazení jednotlivých nástrojů do našeho provozu jsme pro další použití v provozním části DevOps vybrali Ansible, pro který jsme vytvořili playbooky pro konfiguraci našich standardních serverových prostředí, verzovanou v Git repositáři, s předpokladem využití standardního git flow pro propagaci a review změn v konfiguračních souborech. Dále byla připravena produkční instance systému AWX, která umožňuje spouštět a zobrazovat výsledky Ansible playbooků. Ansible ve spojení s Git repositářem a rozhraním AWX umožňuje provoznímu týmu rychle a přitom kontrolovaně definovat konfigurovaci a propagovat její změny do serverových prostředí, což je výhodné zvláště při stále se zvětšujícím počtu serverů, které často tvořící clustery.

Pro orchestraci aplikací kontejnerovaných Dockerem jsme se rozhodli vyzkoušet open source orchestrovací systém Kubernetes s vytvořením vlastního on premise clusteru. Stejně jako v případě Ansible pak platí, že konfigurační skripty Kubernetu psané ve formátu YAML byly uloženy v Git repositářích a veškeré změny konfigurace deploymentu aplikací verzovány a podléhají code review.“

Analýza formulářů na SDP platformě

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

„V rámci DevCampu jsme rozšířili funkcionalitu JavaScript kolektoru tak, aby zasílal informace o uživatelském chování ve formuláři. Prostřednictvím Kafka streams následně provádíme agregaci zpráv v rámci jedné unikátní uživatelské interakce s formulářem.

V rámci vývoje backendu jsme poté vytvořili rozšíření do pomocného nástroje fake-log-collector, jenž nám namísto náhodných zpráv generoval "scénáře" simulující interakci uživatele.

Během vývoje jsme narazili na komplikace, jak Kafka Stream engine zpracovává okna zpráv (message windowing), stejně jako na fakt, že API Kafka streams naráží na limitace Javy. V závěru posledního dne se nám nakonec podařilo vizualizovat příchozí data prostřednictvím vizualizačního nástroje Grafana.“  

Operational intelligence (application performance monitoring) na SDP Platformě

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

„V rámci letošního DevCampu jsme se soustředili na scénář propojení Stream Data Platformy a nástroje na aplikační monitoring. Cílem bylo zobrazit přehledný report, který v reálném čase zobrazuje výkon načítání jednotlivých webových stránek a to jak z pohledu klienta (doba vykreslení stránek měřením napsaným v JavaScriptu), tak z pohledu serveru (doba zpracování a chybovost serverové odpovědi). Uživatel tak může z reportu vidět konkrétní statistiky - například nejnavštěvovanější stránky (zobrazující produkt a jeho potenciální nákup), které mají nejhorší výkon z pohledu doby načítání. Doba načtení a zobrazení je totiž jeden z důležitých faktorů pro použitelnost stránky a často rozhoduje o tom, zda koncový uživatel stránku opustí či nikoliv.

Na závěr jsme připravili konkrétní vizualizaci reportu, do kterého proudí agregovaná data v reálném čase.“ 

Optimalizace rychlosti načítání

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

„Hlavním záměrem naší aktivity byla optimalizace rychlosti nebo ještě lépe, plánování performance budgetu. Cílem bylo maximálně eliminovat dobu potřebnou pro doručení webového obsahu koncovým uživatelům a s tím spojené zvýšení customer experience a business value našich řešení. Po zevrubné rešerši přišlo na řadu vyhodnocení a selekce potřebných metrik vztažně k pokrytí charakteru námi nabízených klientských řešení, osedlání potřebných nástrojů jako jsou WebPagetest, Google PageSpeed Insights a rozšíření Lighthouse pro Google Chrome. Následně jsme empiricky determinovali ideální časové rozsahy (mediány) dílčích měřených parametrů, kterými se budeme řídit a na které budeme cílit. Čeká nás ještě spousty práce, např. s automatizací testů nebo průběžným vyhodnocováním, ale je to výzva, ve které vidíme smysl.“  

Aplikace Delivery Pipeline

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

„Aplikace Delivery Pipeline si klade za cíl vizualizovat požadované kapacity firmy na základě známých obchodních případů a jejich časových a kapacitních parametrů. Nejdříve jsme provedli revizi původního dříve vzniklého návrhu aplikace a následně se rozhodli odstartovat ze zelené louky. Původní Material Design jsme vyměnili za React-Bootstrap a to z důvodu lepší znalosti Bootstrapu. Naším prvním úkolem bylo oživit jednotlivé komponenty a propojit je s API. Dále jsme připravili vzhled aplikace, podobu jednotlivých komponent a zprovoznili na mock datech hlavní graf vizualizující tzv. příležitosti proti kapacitě Lundegaardu v čase a FTE.

Třešničkou na dortu a posledním bodem bylo propojení naší aplikace s produkčním CRM systémem Lundegaardu a na závěrečné prezentaci jsme tak prezentovali aplikaci na reálných datech.“ 

Come App

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

„Cílem našeho týmu bylo vytvoření mobilní a webové aplikace pro vizualizaci využívání Lundegaard kanceláří. Zároveň si Václav Jančařík a Lukáš Sulík chtěli osahat technologie Clojure a ClojureScript – jak jinak, než vývojem aplikace bez předchozích zkušeností!“

O vývoj mobilní aplikace se postaral Jakub Kohout s pomocí nástroje React Native. Webovou aplikaci vytvořil Lukáš Sulík jakožto SPA ve funkcionálním jazyce ClojureScript (Clojure, který lze zkompilovat do JavaScriptu). Back end pro výše zmíněné aplikace vyvinul Václav Jančařík v jazyce Clojure, který běží na JVM a umožňuje interoperabilitu s Java knihovnami a nástroji (server lze tedy např. nasadit na Tomcat a dokáže také využít Java adaptéry pro připojení k databázím). Kontejnerované aplikace vyvíjené v jednotlivých týmech jsme poslední den před závěrečnou prezentací nasadili úspěšně do připraveného Kubernetes clusteru, na jehož další využívání pro deployment a provoz našich aplikací se už těšíme.  

Práce bylo hodně, ale také jsme si našli čas se bavit. Užili jsme si relax ve vířivce, koupání v bazénu, saunování nebo běžecké tréninky před firemní štafetou RunCzech O2. Týmového ducha jsme podpořili také při hrách jako paintball, ping pong, basketbal nebo nohejbal. Nechyběly ani večerní hry na Playstation a intenzivní debaty nad dobře vychlazeným pivem. Prostě DevCamp se vším, co má mít!

4 hodiny vývoje ve 40s:

DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody
DevCamp 6.0 - 6 týmů, hodně kódu a pohody