TSM - Când arhitectura modelează experiența: o poveste despre UX și system design

Adrian Iacov - Feature Engineer @ ING Hubs Romania

În peisajul actual al dezvoltării software, calitatea unui produs nu se mai judecă exclusiv prin prisma scalabilității, performanței sau robusteței tehnice. La fel de importantă este și experiența pe care o oferă utilizatorului final. Într-un ecosistem în care clienții interacționează tot mai mult cu platforme digitale complexe, succesul unei aplicații este dictat nu doar de cum funcționează în back-end, ci și de cum se simte în front-end. Interfața utilizatorului, timpii de răspuns, fluxurile intuitive și claritatea interacțiunii devin factori decisivi în retenția utilizatorilor și satisfacția clienților.

În acest context, designul de sistem și UX-ul nu mai pot fi tratate ca domenii izolate. Ele coexistă, se influențează și, inevitabil, intră în conflict atunci când prioritățile fiecăreia nu sunt aliniate.

Pentru un public tehnic, întrebarea devine mai specifică: ar trebui arhitectura sistemului să dicteze UX-ul sau este nevoie să proiectăm infrastructura și integrarea în funcție de nevoile de interacțiune? Mai mult, cât de benefică este o influență bidirecțională între aceste domenii? Răspunsurile la aceste întrebări variază în funcție de context, dar devine tot mai clar că o abordare colaborativă, bazată pe dialog permanent între echipe este cheia pentru livrarea de soluții coerente și viabile.

Figura 1. Exemplu Arhitectura

Caz real: constrângeri tehnice care au modelat pozitiv experiența utilizatorului

Într-un proiect enterprise cu arhitectură distribuită, într-un proiect cross-countries din ING Hubs România, echipa tehnică din aria de Business Banking a ales o structură bazată pe microservicii. Motivul? Scalabilitate, independența deploymentului și posibilitatea de a evolua componentele în mod izolat.

Interacțiunea dintre servicii era guvernată de patternuri bine definite: REST (request-response) pentru operațiuni sincrone, callbackuri asincrone pentru notificări de status și mesagerie Kafka pentru propagarea de evenimente între componente decuplate. Această arhitectură favoriza o comunicare clară, dar impunea și limite privind corelarea în timp real a datelor din surse multiple.

Designul inițial al echipei UX presupunea un flow unificat, aproape monolitic din punct de vedere al interacțiunii utilizatorului. Pentru a-l susține, ar fi fost nevoie de multiple agregări de date în timp real și o orchestrare complexă a răspunsurilor. Acest lucru ar fi crescut semnificativ latențele și complexitatea operațională.

În loc să forțeze infrastructura să se plieze pe UI, echipele au colaborat și au decis să adapteze UX-ul la modelul de integrare existent. Astfel, procesul a fost fragmentat în pași logici, fiecare reflectând o componentă arhitecturală distinctă și bine delimitată. Rezultatul? Utilizatorul a avut vizibilitate clară asupra progresului său în aplicație, iar sistemul a fost mai rezilient și mai predictibil în comportament.

Lecția: tehnologia și UX-ul nu ar trebui să se evite

Această situație evidențiază un principiu important: un designer UX care înțelege patternurile tehnice poate anticipa limitările și poate propune soluții fezabile și eficiente. În mod similar, o arhitectură care prevede extensibilitate și o separare clară a responsabilităților poate acomoda mult mai ușor cerințe viitoare din zona de experiență utilizator.

Pentru ca această colaborare să funcționeze, echipele trebuie să adopte practici concrete. Ceremoniile de refinement devin esențiale pentru alinierea între design, business și tech. Participarea activă a designerilor la sesiuni de grooming tehnic, precum și implicarea arhitecților în design critique sau user journey reviews sunt moduri prin care cele două lumi încep să vorbească aceeași limbă. În plus, definirea timpurie a API-urilor contract-based, cu validări UX-driven ajută la clarificarea așteptărilor și evită reconstrucții ulterioare costisitoare.

De asemenea, crearea de prototipuri interactive validate împreună cu echipa tehnică permite ajustarea timpurie a planurilor, înainte de a investi efort semnificativ în implementare.

Arhitectura orientată spre experiență

O arhitectură bine construită nu se măsoară doar în numărul de requesturi per secundă sau în SLA-uri. Se măsoară și în cât de ușor permite schimbări dictate de realitatea utilizatorilor. În acest sens, o arhitectură reactivă, loosely coupled, extensibilă și bine documentată devine un aliat pentru UX, nu o barieră.

Aceasta presupune o granularitate funcțională adecvată, în care microserviciile sunt modelate astfel încât să corespundă unor nevoi de business concrete, evitând agregări complexe sau dependințe circulare. Expunerea datelor trebuie să fie flexibilă, acest lucru putând fi realizat prin diverse metode cum ar fi patternul Backend-for-Frontend (BFF), care să ofere exact datele necesare fiecărui ecran, fără overfetching sau underfetching. Modularitatea este, de asemenea, crucială, astfel încât adăugarea unei noi funcționalități să nu impună refactorizări majore sau riscuri asupra altor componente. În același timp, sistemul trebuie să fie rezilient în fața erorilor, prin mecanisme solide de fallback, retry și timeouts bine configurate, care să mențină aplicația funcțională chiar și în condiții de instabilitate.

În plus, observabilitatea sistemului - incluzând metrice, jurnale și tracing distribuit - contribuie direct la îmbunătățirea experienței. Prin analizarea comportamentului real al utilizatorilor și a traseului lor prin sistem, echipele pot identifica punctele de fricțiune și pot lua decizii informate despre optimizări viitoare, fie la nivel de UX, fie la nivel tehnic.

Figura 2. Ecranul Introdus. Fiecare pas început din UX, apelează un microserviciu independent.

Concluzie: echilibrul tehnic dintre formă și funcționalitate

Pentru echipele tehnice, cheia este colaborarea continuă cu UX și business, nu doar în faza de planificare, ci pe tot parcursul dezvoltării. UX-ul nu trebuie văzut ca un strat superficial sau "frontend fluff", ci ca parte integrantă a calității software-ului.

Pe de altă parte, arhitectura de sistem creează spațiul în care UX-ul poate evolua. O infrastructură flexibilă, construită pe principii solide - precum decuplarea componentelor, contracte API clare, observabilitate completă și posibilitate de extensie fără migrații masive - este un facilitator al inovației în zona de experiență utilizator.

Un produs cu un UX excelent, dar cu o arhitectură instabilă nu va putea susține creșterea sau extinderea internațională. La fel, o arhitectură performantă, dar care blochează inovația în interfață sau impune interacțiuni artificiale nu va genera loialitate din partea utilizatorilor.

Într-un ecosistem bine guvernat, deciziile tehnice modelează pozitiv experiența utilizatorului, iar cerințele de experiență ajută la rafinarea arhitecturii. Într-un final, valoarea livrată nu vine dintr-un singur domeniu, ci din sinergia reală dintre arhitectură, experiență și nevoi reale de business, scopul final fiind livrarea de valoare - funcțională, scalabilă și umană, într-un cadru tehnic solid.