HOUG 2016 szakmai nap meghívó

A HOUG idén is megrendezi őszi szakmai napját. A rendezvény időpontja 2016. október 11., a helyszín Magyar Telekom Székház, 1013 Budapest, Krisztina körút 55. A rendezvényen való részvétel (idén utoljára) ingyenes, de előzetes regisztrációhoz kötött.

A program 9:00-kor kezdődik Dr. Magyar Gábor, a HOUG elnökének megnyitójával, majd Molnár Balázs tart egy előadást “My Life and Cloud” címmel.

Utána a program három szekcióban folytatódik, mint Java & Middleware, BI & Applications, valamint DB & Infrastructure. A részletes programról itt tájékozódhatsz. Lesz szó Oracle Middleware megoldásokról, Oracle Commerce Platformról, WebLogic Serverről, microservice-ekről, JSON-ről, Dockerről, cloudról. Sőt lesz egy Java Coding Workshop is.

Én is adok elő 10:10-től “Üzemeltethető Java alkalmazások” címmel.

Manapság a microservices architektúrák elterjedésével, a felhős megoldások térnyerésével és a DevOps gondolkodásmód divatba jöttével egyre nagyobb az igény arra, hogy a Java alkalmazások könnyen üzemeltethetők legyenek. Bár régóta válasz erre a JMX, nem terjedt el annyira, és az igények túlnőttek rajta.

Az üzemeltetők (különösen, ha az üzemeltetésben fejlesztők is részt vesznek) nem fekete dobozként akarnak tekinteni az alkalmazásra, hanem megfigyelni, sőt, beavatkozni is szeretnének. Látni akarják, hogy az alkalmazás külső kapcsolatai (pl. adatbázis, cache, sorok, webszolgáltatások, stb.) rendben vannak-e. Az alkalmazás milyen paraméterekkel lett elindítva. Különböző értékeket, statisztikákat akarnak kinyerni. Ezeket már meglévő monitoring eszközökbe akarják bekötni. Sőt, support keretében akár éleseben futó alkalmazás működésébe beavatkozni.

Lássuk, hogy erre milyen eszközök vannak, milyen elvárásaink lehetnek, és hogyan tudunk akár saját metrikákat, eseményeket definiálni. Lesz szó RESTful webszolgáltatásokról, Spring Bootról, Metricsről, parancssorról, stb.

Regisztrálj te is, és gyere el!

Spring Cloud Config

Aki régebb óta követi a blogomat, tudhatja, hogy az alkalmazások konfigurációjának kezelése, tárolása és betöltése mindig érdekelt. Mivel manapság Spring környezetben dolgozom, adta magát a Spring Cloud Config. A Pivotal (a Spring mögött álló cég) célja a Spring Boot és a Spring Cloud fejlesztésével az, hogy egy olyan egységes, pehelysúlyú, könnyen használható környezetet adjon a microservices architektúra és a cloud kihívásaira, melyet a Spring Frameworkkel adott a nagyvállalati Java fejlesztés megkönnyítésére, valós alternatívát nyújtva a Java EE helyett. A koncepció ugyanaz, főleg létező eszközök egységes keretbe foglalása, elosztott környezetben elterjedt minták alkalmazása.

A Spring Cloud Config használatával könnyen építhető olyan szerver alkalmazás, mely a konfigurációkat tárolja és szolgálja ki a különböző klienseknek. Ezek tárolása különböző lehet, jelenleg fájlrendszer és verziókezelő rendszer (Subversion, Git), és a klienseket REST interfészen szolgálja ki. Képes a jelszavakat és különböző érzékeny konfigurációkat szimmetrikus vagy aszimmetrikus kódolással tárolni. A megváltozott konfigurációról értesíteni tudja a klienseket. Felhasználói felületet nem biztosít a konfigurációk szerkesztésére, hiszen pl. a Git repository képes az állományok verziózott tárolására, hozzáférés szabályozására, ezen kívül rendkívül jó felületek is vannak hozzá (kezdve a parancssorral). A Config Server ezen kívül bármilyen Spring Boot alkalmazásba könnyen beágyazható. A Config Client egy könyvtár mely szintén Spring Boot alkalmazásokban használható a legegyszerűbben, és képes kapcsolódni a Config Server-hez, és a konfigurációkat onnan betölteni. A Spring Unified Property Managementjébe illeszkedik, használva az Environment és PropertySource absztrakciókat.

Ebben a posztban megmutatom, hogy lehet implementálni egy Spring Boot alkalmazást Config Clientként, hogyan kell felépíteni egy Config Servert. Látunk egy példát a titkosításra. Megnézzük, hogy a szerver képes értesíteni a klienseket Spring Cloud Bus infrastruktúrán keresztül (RabbitMQ-t használva). Sőt a végén a spring-boot-admin grafikus adminisztrációs interfészt is megnézzük Sping Boot alkalmazásokhoz.

HOUG 2016 meghívó

Ismét megrendezésre kerül a HOUG, a Magyarországi Oracle Felhasználók konferenciája, idén április 4 - 6 között, a helyszín a szokásos, Hotel Azúr Siófok. Az első napon lesz az Oracle Java konferencia is, ahol az előzetes program szerint olyanokról hallhattok, mint a Java portál megoldások, sőt Elek Márton tart egy Java Microservices Workshopot is. A napot én nyitom “Modern unit és integrációs tesztelés” címmel, 10:30 - 11:00 között. Álljon itt az előadásom bevezetője.

Lehet-e még 2016-ban a unit és integrációs tesztelésről újat mondani? Tegyük fel a következő kérdéseket, és ha a kapott válaszok nem kielégítőek, mindenképp. Először készülnek el a teszt esetek? Van a projekten legalább 80%-os lefedettség? Hiszünk a teszt piramisban? Tudjuk, hogy kell betölteni az adatokat, melyeken a tesztjeink dolgoznak? Minden teszt végén csak egy ellenőrzés van? A tesztjeink egyértelműen dokumentálják a rendszerünket, és egyszerűen karbantarthatók? Fel vagyunk készülve a következő generációs JUnit Lambdára?

Gyere el!

Spring Converter SPI

A Spring Framework talán egyik legnagyobb előnye, hogy bizonyos gyakran használt funkcionalitásra egy frappáns megoldást biztosít, és ezt az egész keretrendszeren belül konzekvensen alkalmazza. Az egyik ilyen funkcionalitás a Spring Converter SPI.

Nagyon gyakran van szükség arra, hogy szöveges értékből egy objektumot gyártsunk. Szöveg szerepelhet sok helyen. Szerepelhet a Spring xml konfigurációjában, Spring Expression Language-ben (SpEL), valamint a HTTP protokoll is alapvetően szöveges. Azonban láthatjuk, hogy akár az xml konfigurációban alkalmazhatunk más, long, double, stb. típusú értékeket, valamint a Spring controllerekben is definiálhatunk ilyen típussal url paramétereket, path változókat, header bejegyzéseket, stb. A Spring a konverziót automatikusan elvégzi. De mi van akkor, ha mi nem ilyen gyakori típusokká akarjuk konvertálni a szövegeinket, hanem pl. egy saját osztály egy példányává.

A Spring nagyon könnyen bővíthető, és ezen konverziós mechanizmus mögött a Converter SPI áll, mely megengedi, hogy saját konvertereket implementáljunk. Sőt, ezeket a konvertereket igazán sok helyen használhatjuk is.

Ezen használati helyeket tekinti át ez a poszt, melyhez példaprogram is készült, és elérhető a GitHubon.