EvitaDB – inovace pro e-shopy od FG Forrest je zase o kus dál
Moderní databáze evitaDB pro e-shopy naplňuje očekávání našich vývojářů. Podívejte se na první výsledky z nasazení a nové funkce našeho vlastního produktu.
Koncem října v Praze proběhl další ročník Java konference Geecon. Dvoudenní akce byla nabitá přednáškami na aktuální témata, která hýbou Java světem.
Geecon se konal v prostorách kina CineStar v obchodním centru Černý most. Přednášky probíhaly souběžně v několika kinosálech. Komu docházely síly, mohl je ve foyer obnovit pomocí kávy nebo nekonečné zásoby sladkého pečiva. V předsálí byl k vidění nespočet stánků sponzorů a firem z oboru, u kterých jsme se odreagovali řešením zábavných či zapeklitých úkolů.
Přednášky, které mě zaujaly:
Ukázka Java reactor a integrace na Spring5
Demo k dispozici.
Mark ukázal dobře připravené demo téměř od nuly. Pomocí spring boot starteru si vygeneroval kostru projektu. Během pár minut připravil funkční REST servisu, kde za pomoci reactive frameworku představil použití reactive streamu jako rozhraní.
Pro uložení dat v demu byla použita mongoDB a spring data CRUD repository (org.springframework.data.mongodb.repository.ReactiveMongoRepository).
Představení projektu přímo od TestContainers a na Github
Slides k dispozici.
Připravené třídy pro inicializaci docker kontejnerů přímo z junit.
Přednášející ukázal, jak kontejnery používají v zeroTourmet (jrebel) a že jsou schopni v ZeroTurnaround testovat i java agenty, u kterých by jinak bylo standardní testování obtížné.
Na samotný popis technologie kontejnerů se v prezentaci bohužel moc nedostalo, přesto tato technologie vypadá použitelně. Umožní například inicializaci DB přímo v samotném testu, není potřeba dopředu připravovat prostředí pro spuštění testu. Kromě použití pro DB lze kontejner použít také pro libovolný docker image.
Výhodou tohoto spouštění je, že není nutné dopředu v aplikaci konfigurovat url a port pro konkrétní docker. Junit si může převzít konfiguraci z testcontaneru. Během prezentace zazněla i možnost mockování libovolného serveru a použití dockeru pro seleniové testy.
Ukázka Inicializace kontejneru s mysql v junit testu:
Slides této přednášky byly kompletně připravené v bash shelu, dokonce i s ASCI grafikou a animacemi! V závěru zaznělo motto „Nepoužívejte docker v produkci”.
Quentin předvedl, jak se dá z dockeru dostat na root file systém. Dále zdůraznil, že docker není virtuální stroj, ale skutečně jen kontejner. Neposkytuje dostatečnou izolaci od okolí a pro produkční provoz navíc představuje komplikaci s monitoringem.
Představení knihovny GraphQL Java Tools
K dispozici demo a slides.
Motivační přednáška pro používání SonarQube
K dispozici slides.
Roman nejprve představil SonarLint – plugin pro IDE (Eclipse i Idea), který by se měl stát povinnou součástí všech IDE. Dokáže napovědět docela dost věcí, které IDE nechá bez povšimnutí. Představil také SonarQube a předvedl snadné spuštění kompletně funkční instance v dockeru:
SonarQube je nástroj pro průběžné monitorování kvality kódu. Podporuje zobrazení chyb v různých úrovních nebezpečnosti. Zobrazuje code coverage a ukazuje, zda na projektu dochází ke zhoršení nebo zlepšení. Kromě informací o code coverage prozradí i úspěšnost junit.
SonarQube je možné integrovat s CI serverem (jenkins, gitlab, … ), v SonarQube pak nastavit quality gate – výstupní bránu, která určí, zda projekt může být nasazen, nebo zda obsahuje nedostatky, které je nutné nejprve vyřešit.
K dispozici slides.
Robert představil, jakým způsobem funguje kompletní vývojové prostředí ve společnosti Adobe. Základní motto přednášky: „Automatizovat – scriptovat maximum možného“.
Těžko uchopitelná přednáška, která vyvolala celkem velkou debatu
K dispozici slides.
Tomer zastává názor, že dependence injection (IoC obecně) přináší více problémů než užitku. Použití frameworků a anotací pro řízení dependencí přináší pouze do codebase další meta jazyk a ve výsledku nepřináší žádný benefit. Naopak přidává práci a komplikace například pro psaní junit.
Parádně připravená přednáška, kde Jacek představil java8 implementaci Akka stream
K dispozici demo.
Na demu ukázal Jacek import CSV souboru, kde připravil jednotlivé části pro načtení, parsování, filtrování, konverzi a uložení dat. V principu Akka streams využívají 3 typy komponent. Producera na začátku, flow pro zpracování a consumera pro závěrečnou akci.
Kromě Akka streams Jacek ukázal funkcionální knihovnu Vavr. Jedná se o nadupanou knihovnu pro funkcionální přístup téměř k čemukoli, co se v Java běžně používá. Ukázka funkcionálního zpracování kódu, který vyhazuje výjimku:
Většina přednášek byla na dobré úrovni a přinesla mnoho zajímavých informací. Některé přednášky však byly „pouze“ o vyprávění příběhu, jak jsme se dostali až tam, kde jsme. Zklamalo mě ale, že jsem v seznamu přednášek nenarazil na jedinou, která by mapovala novinky ve Spring 5 a Java 9. Snad příště!