TSM - Experts Panel: Java Software Architecture

Ovidiu Mățan - Fondator @ Today Software Magazine

Ne-am bucurat de lansarea din luna iunie a revistei TSM pe acoperișul sediului celor de la msg systems Romania. Am discutat despre tehnologii și limbajul Java în special alături de invitații noștri:

Ovidiu Mățan: Farmecul panelului acestuia este că, spre deosebire de celelalte de până acum, nu am venit cu întrebările gata pregătite, ceea ce ne permite să fim mult mai spontani. Savurez acest moment de spontaneitate și pentru că în perioada asta, susțin un training de Java, ceea ce m-a obligat la mai multă rigurozitate. Tot cu ocazia acestui curs, am descoperit plăcerea de a vedea enumuri faine. În Java, enumurile erau, de obicei, chestiile acelea foarte plictisitoare în care ai valori și eventual un switch pe ele. Acum, în ultimele versiuni, enumul poate să implementeze interfețe, metode abstracte, dar și să-și creeze constructori etc.

Revenind la tema de astăzi, Denisa, spune-ne la ce proiecte lucrezi la MSG?

Denisa Lupu: Lucrez pe Insurence momentan și la un proiect de la Allianz. De asemenea, lucrez și la Career Start, ca mentoring, pe Java. Vă aștept, dacă urmează să fie studenți, la Career Start.

Paul Trestian: Lucrez la Accesa de vreo trei ani, pe proiecte din zona Financials. Proiectele la care am lucrat sunt în Big Data, zona de Cloud, GSP mai exact. În ultimul proiect care se termină mâine, Integrări cu provider de blockchain pentru bănci, are ca scop integrarea etherum ca blockchain, pentru început.

Ați făcut integrarea cu blockchainul sau cu un API?

Paul Trestian: Cu un API care e manageriat de un provider for super safe și o integrare spre alt provider. Integrările s-au făcut cu Java și comunicarea între aplicațiile interne prin messaging queues.

Legat de asta, unul dintre subiectele de la training era serializarea/deserializarea obiectelor Java și nu le găseam o utilitate practică. Oare se folosesc vreodată? Le-ați utilizat într-un proiect de producție? Eu nu le-am folosit, dar există și se cere, inclusiv, pentru certificare, cum să scrii și să citești un obiect Java.

Alex Popescu: Salut! Întâmplător, le-am folosit o dată în șaisprezece ani. Era un MQ de la IBM, care așa le trimitea el. Eu am lucrat foarte mult în banking și Insurance. Acum, de când am trecut pe automotive, totul e mai interesant, mai dinamic și mai axat spre Cloud. Am început un proiect nou, de două săptămâni, despre care nu pot spune foarte multe decât că este automatisation driving.

Folosiți microservicii în Java?

Alex Popescu: Da, câteodată.

Paul Trestian: Da, chiar pe proiectul acesta am folosit micro-microservicii. Specific, în acest caz, am făcut un fel de micro-microservicii, am făcut un parent spring boot wraper de care aveam nevoie, cu niște configurări. Fiecare operație de tranzacție sau de cerere de balance al unui wallet era într-un microserviciu separat.

Denisa, cum sunt la voi, serverele? Ai monolit, load balancer?

Denisa Lupu: Este mai layered, dar aș spune că folosim, mai mult, macroservicii. Am beneficiat de microservicii, dar ne descurcăm cu layerele noastre și chiar încercăm să implementăm ideea de evolutionary architecture, de a experimenta continuu și de a aduce, nu doar feature-uri noi, dar și de a crește calitatea proiectului.

În caz de failure, ce faceți? Restartați serviciile?

Denisa Lupu: Nu facem direct manage la realease-uri, e un pic mai complicat acolo, dar pentru partea de experimentare, este destul de verificată, încât să nu trebuiască să facem un failover.

Dacă ar trebui să menționezi un design pattern preferat, care ar fi acela?

Alex Popescu: Nu cred că am un design pattern preferat, fiindcă le aplici în funcție de nevoie și de context.

Paul Trestian: Dacă ar fi unul simplu, cu siguranță builder patternul, dar poate și pentru că l-am folosit, într-o perioadă, destul de mult.

Din postura de arhitect Java, când vine un proiect nou și te implici în el, care sunt primele cerințe la care te uiți și pe care le vrei definite cum trebuie?

Paul Trestian: Mie, de obicei, îmi place să pun câteva întrebări, de cele mai multe ori mă interesează utilizatorii, loadul, tipul de comunicare și merg destul de devreme în scenariile de error handling.

Din perspectiva codului, cum vezi partea de testare și integrare a codului?

Denisa Lupu: Recent am început să încerc să îi conving pe oamenii de pe proiect să schimbăm toată testarea cu Cucumber pentru că, fiind și automată, să fie business role-urile la vedere. Cred că tuturor de aici li se pare foarte importantă testarea.

Dacă ai avea de făcut, mâine, un release, care ar fi checkurile de validare urmărite?

Denisa Lupu: În ce privește partea de development, există mai multe layere de testare, mai multe fitness functions pentru că inclusiv un review poate fi un fitness function, dacă există un criteriu stabil și obiectiv pe baza căruia se face review-ul respectiv. Neavând o arhitectură în care backendul este 100% la noi, depindem și de alte componente cu care trebuie să ne integrăm.

Dacă mâine ai avea de făcut un proiect de streaming, la ce tehnologii te-ai uita?

Alex Popescu: Depinde, la cel de acum folosesc kafka și folosesc pentru parallel processing spark. De multe ori, nu alegi tehnologia deoarece, foarte rar, apuci să faci un proiect de la zero.

Folosiți A.I și dacă da, la ce?

Alex Popescu: Am avut o experiență interesantă, să construiesc o aplicație de la zero cu ChatGPT, să facă pentru mine tot, nu e perfect, dar e mult mai mult față de anul trecut. Știi la ce mi se pare foarte valoros, din ce am experimentat eu? La partea de learning. Spre exemplu, citesc un tutorial și, la un moment dat, am o întrebare și nu am pe cine întreba, atunci mă duc la el. Poți să dezvolți cu el și îți răspunde pertinent. Spre exemplu, în ceea ce privește codingul, este la nivelul unui junior, însă un junior care știe toate tehnologiile de pe lume.

Paul Trestian: Eu chiar îl folosesc și mi-a fost util. Am avut de modificat kubernetes deployments și de atașat un volum. Și cum nu știu kubernetes prea bine, pentru că sunt încă la început, am apelat la ChatGPT.

Alex Popescu: Sunt multe limbaje a căror sintaxă este dificil de stăpânit. Poate nu ai lucrat așa mult pe Devops și nu știi terraform. Dar cum nu este nici ceva așa de complicat, apelând la ChatGPT faci totul mai rapid.

E ca un fel de preview. Încă nu îți poate da o soluție completă, pe care să te poți baza și îți dă o soluție pe termen foarte scurt.

Denisa Lupu: Îl folosesc și eu atunci când am de învățat ceva nou, așa cum zicea Alex.

Revenind la tehnologii, dacă ar trebui să ne gândim la tehnologii noi, pe care să le avem în vizor?

Paul Trestian: Open AI API. Aș merge și pe soluțiile din Cloud, upgrade la Spring boot 3.

Denisa Lupu: Aș recomanda întotdeauna Spring, când se merge pe varianta cu Java, dar indiferent de tehnologie, trebuie să construim cumva un craftsmanship, pe baza căruia să utilizăm orice fel de tehnologie. Așa, skillurile vin și pleacă, uiți informațiile, reînveți, dar craftsmanshipul și modul în care sunt aplicate și construite proiectele pe baza acestui mod de a gândi și de a privi lucrurile, mi se par mai importante.

Alex Popescu: Eu am un story pe tema asta. Am lucrat la un proiect și l-am început un pic mai clasic, JSF. Iar clientul, din anumite motive, a zis să renunțăm la JSF și să folosim GWT, o chestie google web toolkit. Așa am aruncat șase luni de muncă la gunoi și am început să rescriem totul cu GWT, în același timeframe. A fost destul de enervant pentru developeri, iar proiectul a rulat ani de zile. Acum nu știu dacă mai există GWT, deși la momentul respectiv toată lumea zicea că google web toolkit e cel mai tare.

Eu sunt convins că ceea ce vedem noi acum cu ChatGPT o să fie la fel și peste doi ani nu o să mai vorbim de el. Nu zic că nu o să existe ideea de AI și nu o să folosim algoritmi dar așa cum e prezentat acum, cred că este multă reclamă și o să se întâmple ce a fost cu automotive.

Paul Trestian: Cred că și în zona de AI, acum, încep să apară din ce în ce mai multe soluții peste GPT, cu specific juridic sau e-commerce.