Twelve-factor app

Az idén rendezett HOUG 2016 szakmai napon is előadhattam, előadásomat “Üzemeltethető Java alkalmazások” címmel tartottam. Fő téma a Twelve-factor app és a Cloud native volt. Az előadás diái itt megtekinthetőek.

Az előadás húsz perce alatt csak ízelítőt tudtam adni a Twelve-factor app állításaiból, és azok implementációs kérdéseiről Java és főleg Spring Boot környezetben. A Twelve-factor app a Heroku (Platform as a Service) fejlesztőinek ajánlása felhőbe telepíthető alkalmazások fejlesztésére. Azonban én ajánlom ezen útmutatások, legjobb gyakorlatok betartását akár privát környezetben futó egyszerű alkalmazások fejlesztésénél is, ugyanúgy, mint privát vagy publikus felhőben üzemelő microservice architektúrával összerakott rendszerek esetében.

Ebben a posztban kitérek mind a tizenkét pontra, és ismertetem ennek implementációs vetületeit Java, Spring, de főleg Spring Boot környezetben, sőt személyes tapasztalataimat is megosztom. Ettől függetlenül érdemes elolvasnia, azoknak is, akik más környezetben fejlesztenek.

A szakmai napra egy kis példa alkalmazás is készült, mely elérhető GitHubon.

Viczián István a HOUG konferencián

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!