V květnu se uskutečnil další, již osmý ročník konference Spring I/O ve španělské Barceloně. Co je nového ve světě Spring frameworku se za MoroSystems vypravili zjistit Peter z bratislavské a Ondra z hradecké kanceláře.

Dojmy z konference

Ondra: Nemám možnost Spring I/O objektivně srovnat, ale musím říct, že mi akce připadala po všech stránkách profesionálně zmáknutá. Pro mě jakožto prvonávštěvníka Barcelony velice atraktivně zvolené místo konference (veletržní areál Fira de Barcelona) v bezprostředním okolí krásného Katalánského národního uměleckého muzea a Zpívající fontány. Přednáškový program byl nabitý a v každém “slotu” se nacházelo něco zajímavého nebo potenciálně užitečného. Parádní bylo množství přednášek zahrnujících nějaké živé kódění a pak spousta drobných detailů, kterými organizátoři ukázalim, že jsou buď sami developeři nebo skvěle znají svou cílovou skupinu.

Peter: Musím priznať, že na konferenciu Spring IO 2019 v Barcelone som sa celkom tešil. Lákala ma lokalita, kde sa koná a mal som aj skvelé odporúčania od kolegov. Zopár konferencií som už absolvoval, ale táto ma prekvapila svojou pohodovou atmosférou. Všetci boli uvoľnení, vonku svietilo slnko a nikto sa nikam neponáhľal. Možno aj preto konferencia začala tak nejako neformálne až okolo 9:18. Z reprákov sa ozývala štýlová chillout muzička a všetci sa spokojne usmievali, žiaden stres som nezaznamenal. Myslím, že v tomto smere by sme sa mali čo od Španielov priučiť.

Spring_2

Vše bylo reaktivní

Leitmotivem celé konference bylo jednoznačně reaktivní programování, které bylo zmiňováno takřka v každé přednášce, kde to dávalo alespoň trochu smysl (BTW reaktivní programování v Javě velice dobře popisuje stále aktuální článek Spring5: Reactive od Lukáše Marka). Občas to působilo velmi dobře koncepčně pojaté a posluchač se mohl v několika navazujících přednáškách dozvědět, jak se reaktivní přístup promítne do celého stacku aplikace od databáze až po controllery a frontend. Občas to vzbuzovalo dojem trochu uměle budovaného buzzwordu a opakování již vícekrát řečeného.

Spring_3

Co mě zaujalo

  • „Come to the react-side“ – Cílem přednášejících bylo jednaznačně abychom hned po příjezdu domů přepsali veškeré naše projekty do reaktivního stylu. Lákali nás líbivými hesly jako less threads, less memory, vyšším trafficem nebo streamováním. Zajímavá zde byla zmínka o rsocket jakožto aplikačním protokolu optimalizovaném pro reaktivní svět (vyvinuto Netflixem) nebo plánovaný release R2DBC tedy reaktivní API pro relační databáze.
  • Keycloak – Keycloak je open-source access a identity management řešení. Zajímavé to pro mě bylo hlavně tím, že tuto technologii nyní zkoušíme použít pro nový projekt a přednáška mě utvrdila v tom, že na to nejdeme špatně a ukázala mi pár dobrých triků, které můžeme použít.
  • Canary testing – pro mě nový a neznámý termín. Testování při nasazení na produkci. Nový kód je distribuován jen pro část uživatelů. Pomocí určitých metrik (např. treshold paměti, využití CPU, množství zpráv v logu apod.) je vyhodnoceno, zda nasazení proběhlo dobře. V případě špatného výsledku je verze automaticky rollbackovaná k verzi původní. Zajímavý koncept, jak dále automatizovat a urychlit nasazování nových verzí.
  • Skvělá byla přednáška Andy Wilkinsona o testování Spring aplikací. Padlo mnoho zajímavých myšlenek, jako např. “procento pokrytí kódu testy může snadno odvádět pozornost špatným směrem”. Zajímavé a pro mě neznámé byly anotace @DataJpaTest nebo @WebMvcTest, pro tzv. sliced tests – tedy testování jen jedné konkrétní vrstvy stacku aplikace.

Prvý deň sme si v úvode vypočuli Keynote od Juergena Hoellera, v ktorom predstavil hlavné zmeny a vylepšenia, ktoré sú súčasťou najbližšieho releasu. Účastníkom tiež predstavil, akým smerom sa bude vývoj Springu v najbližšej dobe uberať. V podstate celá prezentácia sa zaoberala dominantnými trendmi vo vývoji softvéru, akými sú primárne reaktívne programovanie a Kotlin.

Veľmi zaujímavé bolo rozprávanie o R2DBC, čo je v skutočnosti neblokujúci JDBC driver pre relačné databázy. Cieľom tohto projektu je navrhnúť jednoduché reaktívne API, ktoré by mohli producenti relačných databáz implementovať. Prišlo mi to ako jedna z nosných tém tohto ročníka, nakoľko mala prienik do množstva iných talkov, ktoré sa na túto technológiu odvolávali. Podľa môjho názoru sa momentálne jedná o zásadnú vec, kedy už bude reaktívny celý stack aplikácie. Po implementácii reaktívnych driverov už nebude existovať žiadna prekážka prepísať existujúce aplikácie postavené na relačných databázach ako reaktívne.

“The State of Java Relational Persistence (Maciej Walkowiak)“ veľmi kvalitná prezentácia, v ktorej autor potvrdil fakt, s ktorým väčšina z nás súhlasí, že SQL relačné databázy sú stále top spôsob ako ukladať dáta v aplikácii a že ešte nejaký čas aj budú. Tiež ma utvrdil vo fakte, že JPA a Hibernate nie je vždy to najlepšie, čo v novej Java aplikácii použiť a že existuje veľa aj lepších alternatív. Veľmi sa mi páčila SQL centrická knižnica na písanie type-safe SQL queries JOOQ. Určite sa na ňu pozriem, keď budem mať príležitosť.

Po skvelom a bohatom obede som sa chcel pozrieť na talk Josha Longa “Bootiful TDD” kde som sa pre obmedzenú kapacitu prednáškovej sály nedostal. Tak som si ju musel pozrieť dodatočne na videu a musím povedať, že tento pán nikdy nesklame.

Zaujímavá bola aj prednáška belgickej dvojice vývojárov “Migrating a modern Spring web application to serverless”. V nej nám predviedli, kam až to môže zájsť, keď sa rozhodnete svoju web aplikáciu prepísať do cloudu. Jediné, v čom ma tá prednáška utvrdila je, že si tým život v žiadnom smere neuľahčíte.

Druhý deň sme sa pozreli na prednášku “Benefits of reactive programming with Reactor and Spring Boot 2”, kde nám vysvetlili, aké výhody prináša používanie reactive stack v Spring Boot 2. Na benchmarkoch boli prezentované rozdiely medzi webovou aplikáciou napísanou klasickým štýlom a aplikáciou napísanou reaktívne. Porovnávalo sa množstvo systémových prostriedkov na počet vybavených požiadaviek v čase.

„Breaking the Magician’s Code: Diving deeper into Spring Boot internals“ prakticky rozobratá inicializácia Spring boot 2, čo všetko sa defaultne štartuje a na čo slúži. Na chybách bolo potom ukázané, ako naštartovať len minimum potrebné pre beh svojej aplikácie a ušetriť tak nejaký čas pri štarte aplikácie.

Konferencia bola skvelo zvládnutá s veľkým množstvom kvalitných účinkujúcich a môžem ju len a len od poručiť. Na konferencii sa mi páčilo jej úzke technologické zameranie na Spring technológie a ich praktické použitie. Myslím, že informácie získané na konferencii sú užitočné a skvelo aplikovateľné v praxi.

Odkazy:

Spring_4