Am discutat cu invitații noștri despre limbajul Java și folosirea sa în dezvoltarea software-ul de producție din Electronic Trading:
Luiz Fernando Teston - Team Lead Java Core @ Flow Traders ,
Laurent Barbisan - Head of Architecture, Agency Trading @ Itiviti ,
Laurent Barbisan: Sunt Head of Architecture @Itiviti și mă asigur că oamenilor le place ceea ce fac. Lucrez la această companie de zece ani. La începuturi, am fost programator.
Ștefan Dunca: Sunt Head of Development @Tora, dar sunt încă programator convins. Îmi place să scriu cod și sper să pot face acest lucru cât mai mult timp posibil. Tora este o companie de produs. Realizăm aplicații pentru instituții care se ocupă cu tranzacționări electronice. Produsul de care sunt responsabil se ocupă de operații de pre- și post-tranzacționare.
Luiz Fernando Teston: Sunt Team Lead al unei echipe numite Java Core @Flow Traders. Ne asociem cu alte echipe, iar produsul nostru stochează ordine de tranzacționare pentru a asigura conformitatea. Când vorbim de integrarea cu alte platforme @Flow Traders, sunt mari șanse ca echipa Java Core să fie și ea implicată. Sunt brazilian și locuiesc cu familia în Olanda. Lucrez cu Java de mai bine de douăzeci de ani.
Ovidiu Mățan: În ce proiecte sunteți implicați?
Luiz Fernando Teston: Avem o platformă care stochează ordine de tranzacționare. Această platformă este consumată de alte proiecte. Avem mai mult proiecte legacy pe care le migrăm pe o platformă mai modernă. Sunt implicat și în inițiative axate pe diversitate menite să crească gradul de observabilitate a platformei. Ne asigurăm că oferim date referitoare la modul în care este petrecut timpul. Avem și alte proiecte precum actualizarea versiunii Java la nivelul întregii companii.
Laurent Barbisan: Scopul nostru principal este de a-i conecta pe toți, astfel încât fiecare să poată tranzacționa pe cont propriu. Scopul meu este de a asigura o conectivitate foarte bună, astfel încât mesajul sau ordinul de tranzacționare care vine de la cineva să fie procesat în cât mai puțin timp posibil. Mai mult, ne asigurăm că performanța este bună și repetabilă. Încercăm să ne menținem echipele aliniate și le încurajăm să încerce lucruri noi. Echipele noastre de dezvoltare se află în Cluj, având aproximativ 120 de angajați ce lucrează cu C# și Java.
Ștefan Dunca: Oferim clienților date în timp real, în scenarii pre- și post-tranzacționare. Le oferim utilizatorilor noștri metrici și indicatori, ca aceștia să decidă care sunt pașii următori, să vândă sau să cumpere. Produsul meu se axează pe activități post-tranzacționare: alocare, reconciliere, comunicare cu părțile terțe implicate în înțelegere. Produsul este scris în Java, cu elemente de JavaScript. În multe afaceri, procesele sunt lineare. Proiectele de tranzacționare nu sunt atât de lineare. Acest proiect se preocupă de ce se întâmplă înainte și după ce este plasat un ordin de tranzacționare. Procesele sunt și mai diverse acum că avem schimburi cu criptomonede unde nivelul de creativitate al celor care plasează acele mijloace de schimb este foarte mare. Echipa noastră are nevoie de cunoștințe solide de matematică și tranzacționare, dar și cunoștințe legate de operațiuni și părți terțe. Pentru serverele din producție, folosim un mix de Java 8 și Java 11. Am planificat să finalizăm migrarea la Java 11 în următoarele luni. Codul nostru se compilează în Java 16 și ne rulăm testele în ultima versiune de Java. Folosim AdoptOpenJDK, dar dorim să efectuăm teste și cu DELIBERICA. Livrăm și componenta JVM și nu presupunem că mașinile clienților au tot ce este necesar pe mașinile lor.
Luiz Fernando Teston: Ce folosiți pentru partea frontend?
Ștefan Dunca: Folosim clasicul Swing. Avem și unele bucăți în JavaFX. Acum, ne cam pare rău că am făcut acest lucru, deoarece Oracle nu mai suportă această versiune. Folosim și tehnologie web pentru grafice.
Ovidiu Mățan: Luiz, ce versiune Java folosiți?
Luiz Fernando Teston: Folosim cam aceleași lucruri, adică un mix de Java 8 și Java 11. Vrem să ne mutăm pe Java 11 pe termen lung. A obține acordul tuturor celor implicați este partea dificilă, nu partea tehnică propriu-zisă. De asemenea, este o provocare să evaluăm dacă există un impact asupra performanței când îndepărtăm o componentă JVM. Majoritatea aplicațiilor folosesc DELIBERICA. Am avut rezultate foarte bune până în acest moment. De exemplu, pentru Java 8, în funcție de versiunea minoră, au portat retroactiv Flight Recorder pentru versiunea Java 8.
Ovidiu Mățan: Încercați să opriți rularea continuă a garbage collection?
Luiz Fernando Teston: Nu limitez partea de latență redusă, dar sunt parametri pentru limitarea timpului de rulare. Este o chestiune de ajustare de setări.
Ovidiu Mățan: Ne puteți spune mai multe despre produsele și sistemele pe care le aveți?
Laurent Barbisan: Avem câteva sisteme care rulează în Java 8. Restul rulează în Java 11. Nu am folosit Java 16 în compilare. Pentru un număr foarte mic de clienți folosim Zing JVM. Este destul de scump, dar nu există pauze.
Ovidiu Mățan: Care sunt principalele provocări în tranzacționările electronice?
Laurent Barbisan: Ceea ce vedem la clienții noștri este că vor să nu mai aibă de-a face cu cel ce tranzacționează (cu traderul). Traderii pot fi scumpi. Totuși, aceștia lucrează în numele clienților lor, prin urmare trebuie să fie eficienți. Scopul nostru este de a automatiza procesul. Oamenii vor procese și date analitice inteligente pentru a tranzacționa pe cont propriu. Noi dorim să implementăm algoritmi inteligenți, bazați pe AI în contextul agency trading. Performanța este și ea o provocare.
Ștefan Dunca: În primul rând, aș dori să răspund la întrebarea precedentă despre garbage collection și să spun că nu există un panaceu. Noi folosim obiecte mutabile și producem zero garbage pentru critical-path services, pentru servicii ce fac un singur lucru, dar pe care îl fac foarte repede. Refolosim aceleași obiecte cât de mult posibil. Totul se întâmplă în componenta server. De asemenea, folosim un garbage collector pentru a dezactiva un garbage collector.
Luiz Fernando Teston: Așadar, câștigați la capitolul utilizare de memorie, dar dați la schimb CPU.
Ștefan Dunca: Folosim memoria intensiv și alocăm mai mult decât avem nevoie. Există și probleme, deoarece utilizarea intensivă a memoriei duce la defragmentare, ceva ce nu dorești să se întâmple în timpul orelor de serviciu. Avem o abordare mixtă și ajustăm setările regulat, chiar săptămânal. În ceea ce privește performanța, nu există test mai bun decât mediul de producție. Încercăm să îl replicăm cât de mult posibil, înregistrând câteva zile de tranzacționare. Chiar și așa, putem avea surprize în producție. Trebuie să fim pregătiți pentru schimbările din piață și din lume.
Ovidiu Mățan: Ce nu puteți folosi în producție din ultima versiune Java?
Ștefan Dunca: Am dori să folosim Garbage Collector și JVC / VJC.
Luiz Fernando Teston: Sunt destul de conservator și destul de mulțumit cu ce oferă limbajul. Îmi doresc foarte mult ca în ultima versiune Java să se introducă tipurile de valori și accesul continuu la memorie. Cât despre provocările din tranzacționările electronice, cred că utilizarea AI are nevoie de seturi mari de date. Provocarea este să avem analiză de date și aceasta să se conecteaze în timp real la deciziile de business ce trebuie luate.
Ovidiu Mățan: Cum gestionați monedele digitale prin comparație cu cele clasice?
Laurent Barbisan: Noi nu vindem servicii de tranzacționare cu monede clienților noștri. Este adevărat că avem câțiva clienți care folosesc software-ul nostru pentru eFIX Trading. Noi suntem o companie de agency trading. Primim o comandă (un ordin de tranzacționare) de la un client și o direcționăm către destinația corectă. O comandă poate fi lansată pe mai multe piețe. Cel ce tranzacționează (traderul) mediază procesul și își pune următoarea întrebare: Când ar trebui să trimit această comandă? Acest proces, acest comportament al traderului, dacă este învățat de un AI, va permite AI-ului să extragă un tipar.
Ștefan Dunca: Ne ocupăm de ambele tipuri de monede. Caspian este produsul nostru destinat tranzacțiilor cu criptomonede. Avem același cod pentru ambele tipuri de monede. Ne conectăm la mai multe tipuri de schimb. Cei mai mulți clienți folosesc acest software pentru a tranzacționa, dar cei mai mari clienți au sisteme de tip bot și AI care sunt implicate. În lumea tradițională, clienții au nevoie de noi pentru a tranzacționa, deoarece nu pot face schimbul valutar direct. Totuși, în cazul criptomonedelor, orice client suficient de mare va tranzacționa direct cu schimbul valutar. Mai mult, noi nu vom putea vedea algoritmii acestor clienți, deci au libertate de a crea ce algoritmi doresc. Pentru acest caz, noi colectăm tot ceea ce se întâmplă în timp real, ulterior rulăm metricile pentru a-i ajuta pe clienți să decidă. Clienții care tranzacționează miliarde pe lună își plasează ordinele de tranzacționare (comenzile) direct în cadrul schimbului (exchange), dar folosesc platforma noastră pentru a decide dacă vor tranzacționa sau nu. În ceea ce privește banii, volumul cel mai mare este deținut de monedele clasice, deși criptomonedele se apropie din ce în ce mai mult.
Ovidiu Mățan: Ce instrument de vizualizare folosiți pentru a înțelege complexitatea pieței?
Luiz Fernando Teston: Nu pot răspunde la această întrebare, deoarece echipa mea este mai departe de cei responsabili de această temă. Și noi lucrăm cu criptomonede, dar nu vă pot oferi mai multe detalii în acest moment.
Laurent Barbisan: În ceea ce privește partea directă de business, folosim grafice și statistici de bază. Intern, în scop diagnostic, pentru numărul mesajelor ce trec prin sistemul nostru, folosim elastic search, ceea ce ne permite să creăm grafice cu evoluția în timp și să identificăm vârfurile.
Ovidiu Mățan: Care sunt planurile voastre de creștere pentru Cluj?
Laurent Barbisan: Intenționăm să mai atragem încă 20 de programatori la Cluj până la finalul anului, având în vedere talentul de aici. Avem un model de business bazat pe plug-in și extensibilitate. Când avem nevoie de funcționalități noi, dezvoltăm noi module, cele mai multe la Cluj.
Ovidiu Mățan: Ce instrument de vizualizare folosiți?
Ștefan Dunca: Oamenii sunt obișnuiți să vadă și să lucreze cu numere, iar noi oferim grafice frumoase cu efecte diverse. Acest lucru este extrem de util managerilor, cei care fac tranzacționările se uită mai mult la numere. În ceea ce privește echipa noastră, facem cercetarea și dezvoltarea la Cluj. Noi suntem cei care ne organizăm și oferim direcția. Intenția noastră este de a angaja încă 20-25 de oameni în lunile următoare.
Luiz Fernando Teston: În ceea ce ne privește, majoritatea programatorilor sunt în Amsterdam, dar avem o echipă în creștere continuă și la Cluj.