Wrapper API stateless pentru portal academic legacy: de la 1800ms TTFB la 95ms
Portalul universitar oficial (USV) funcționa pe un sistem legacy PeopleSoft izolat în intranet, accesibil utilizatorilor din exterior doar prin conexiuni VPN complexe și compatibil exclusiv cu browsere învechite. Am dezvoltat un proxy stateless în Next.js care a eliminat bariera VPN pentru studenți, reducând TTFB-ul de la 1800ms la 95ms și oferind datele academice instantaneu direct pe dispozitive mobile.
1. Problema Tehnică: Barierele de Acces ale Sistemului Legacy
Sistemul de gestiune academică era găzduit în rețeaua internă a instituției. Pentru ca un student să își verifice notele sau orarul de acasă, procesul presupunea:
- Configurarea VPN: Instalarea și conectarea prin clienți VPN dedicați pe telefon sau laptop.
- Compatibilitate limitată: Interfața web PeopleSoft funcționa corect doar pe browsere vechi (configurate cu moduri de compatibilitate din trecut), generând documente HTML masive de peste 3.8MB per cerere.
- Absența API-urilor: Datele nu erau expuse prin niciun serviciu web structurat (REST/GraphQL), forțând utilizatorii să navigheze manual printr-o structură complexă de tabele HTML.
2. Soluția de Arhitectură: Scraper Stateless în Timp Real
Pentru a evita stocarea datelor cu caracter personal și a respecta conformitatea GDPR, am dezvoltat un proxy stateless în Next.js, rulând containerizat într-un mediu Docker privat.
Arhitectura rețelei și fluxul datelor sunt descrise în schema tehnică de mai jos:
graph TD
Student[Dispozitiv Mobil] -->|HTTPS| CF[Cloudflare CDN Edge]
CF -->|Secure Request| NextJS[Next.js API & Wrapper]
NextJS -->|Tunneling & Session Auth| PortalUSV[(Portal USV PeopleSoft - Intranet VPN)]
NextJS -.->|Stateless parsing| HTMLParser[HTML-to-JSON Scraper Engine]
Detalii de implementare:
- Tunelarea conexiunii: Serverul nostru proxy a fost configurat să mențină conexiunea securizată la intranetul universității, eliminând nevoia studenților de a rula clienți VPN individuali pe dispozitivele proprii.
- Autentificare stateless: Studentul transmitea credențialele o singură dată din formularul web; proxy-ul iniția sesiunea securizată în spate, prelua cookie-urile necesare și le injecta în cererile de date subsecvente, fără a stoca parole sau date cu caracter personal în mod persistent.
- Filtrarea datelor (HTML-to-JSON): Cererile de date returnate de sistemul legacy erau procesate în memorie prin parsere rapide de DOM (bazate pe Node.js). Paginile masive de 3.8MB au fost comprimate în payload-uri JSON curate de doar 85KB, conținând doar datele utile (orar sau note).
- Caching Edge prin Cloudflare: Paginile cu conținut cvasi-static (orar, profesori, săli) au primit politici de caching la nivel de CDN. Acest proces a înregistrat o rată de cache-hit de 88.3%, reducând latența TTFB la 95ms.
3. Metricile de Performanță: Înainte vs. După
În perioada sa de activitate maximă, Noteusv a preluat complet sarcina de randare și optimizare a traficului, protejând în același timp infrastructura internă a instituției.
| Metrică | Portal Legacy USV (Direct + VPN) | Noteusv Wrapper (Proxy & CDN) |
|---|---|---|
| Timp de răspuns (TTFB) | 1800ms | 95ms |
| Metodă de acces extern | Client VPN obligatoriu + Browser vechi | Orice browser modern (Zero configurări) |
| Volum de trafic administrat | - | ~12.000 de studenți unici / lună |
| Consum de date per accesare | ~3.8 MB | ~85 KB |
| Sarcina pe origin server | 100% din cereri procesate dinamic | Redusă cu 85% prin caching edge în CDN |
Reducerea cu 85% a sarcinii pe serverul origin a prevenit blocajele clasice din perioadele de vârf, asigurând o disponibilitate ridicată a datelor pentru studenți. Reducerea solicitărilor redundante pe infrastructura universitară a asigurat o scalabilitate crescută a datelor fără costuri adiționale.
4. Deactivarea și Păstrarea ca Proof of Concept
Tranziția completă a instituției către un nou sistem integrat de management academic („Smart UMS”) și blocarea definitivă a canalelor de acces externe din motive de securitate au dus la deactivarea proxy-ului Noteusv.
Pentru a finaliza ciclul de viață al aplicației într-un mod ordonat:
- Notificare de mentenanță: Am implementat o pagină statică curată (
maintenance.html) găzduită pe un container Nginx minimalist în Coolify, optimizată cu100dvhpentru a se afișa fără erori de scroll pe telefoanele mobile. - Proof of Work: Codul sursă a fost curățat de configurări specifice și arhivat public pe GitHub (USV-PROXY) pentru a servi drept model de bune practici în integrarea sistemelor legacy fără API-uri native.
Aplicăm aceste pattern-uri în proiecte active. Inițiază o evaluare tehnică.