I siti delle PA in Italia hanno iniziato a fare buoni passi negli ultimi due anni per quanto riguarda la modernizzazione e la user experience ma è ancora tanta la strada da fare. L’ennesima riprova l’abbiamo avuta oggi con il sito ufficiale dell’INPS: in questo caso c’é stata anche una situazione di perdita di dati (data breach). Ma come mai ogni volta che ci sono milioni di accessi a un sito di una PA i siti vanno down?
Secondo la versione ufficiale sembrerebbe che il problema derivi da una configurazione errata della CDN (Content delivery Network) e della cache (la cache è un’area di memoria temporanea e molto veloce che permette di “velocizzare” l’esecuzione del sito): pare che una volta che l’utente compilava i campi all’interno del sito web (la domanda per l’indennità del Covid 19 appunto) i dati di compilazione della form venivano memorizzati in cache che non veniva svuotata quando la domanda era inviata.
Appena un nuovo utente si collegava, vedeva la form di domanda automaticamente compilata con i dati di un altro utente, quello dell’ultima domanda inviata a causa della cache non eliminata (secondo la fonte corriere.it a questo articolo).
IL MIO PARERE
Questo secondo me può essere un problema di progettazione dell’applicativo e soprattutto di un testing poco rigoroso delle funzionalità (avendo un bug di gestione dei dati così importante) e un’assente stress test (avendo un downserver con un numero importante di accessi).
Questo comportamento, è da ricondurre a vari errori sia di progettazione (downserver) e sia di programmazione (bug di visualizzazione dei dati degli altri utenti).
Potrebbe essere che il team che ha progettato l’applicativo non sia stato formato sulle moderne tecnologie software per realizzare un gestionale con architettura distribuita e con milioni di accessi. Potrebbe anche essere che l’INPS abbia problemi sull’espandibilità a causa della retrocompatibilità dei suoi vecchi software o della burocrazia delle loro infrastrutture o non abbia investito su risorse per fare un adeguato testing dell’applicativo (oppure abbia investito ma non fatto verificare il prodotto alla consegna).
TECNICHE MODERNE
Sicuramente al giorno d’oggi ci sono moltissime soluzioni software (soprattutto open source e quindi gratis) con le quali si possono progettare applicativi anche di questo tipo.
Un applicativo del genere ha il suo punto focale nella compilazione e raccolta dati di form con molti accessi contemporanei: per progettare software di questo tipo si potrebbero prendere in considerazione architetture moderne a microservizi e distribuite, in modo da distribuire appunto il carico di lavoro su più macchine. I linguaggi da impiegare invece sono sicuramente linguaggi che permettono l’asincronicità delle operazioni basti pensare a Javascript con Nodejs.
Queste tecniche sono sicuramente le più moderne ma purtroppo in Italia non le applichiamo ancora nelle PA tranne per pochi casi (vedi applicativo di censimento online dell’Istat fatto in Angular) e questo le porta ancora a scalare verticalmente e non orizzontalmente.
COSA VUOL DIRE SCALABILE
Scalare verticalmente significa che se ho una piattaforma web con accessi che crescono in modo scalare, ho bisogno di un hardware più potente ogni volta che ne ho l’esigenza.
Invece scalare orizzontalmente significa che posso distribuire il carico di lavoro su più macchine (nodi) che posso replicare senza errori così da evitare carichi eccessivi su una singola macchina e in modo da evitare che il downserver possa portare discontinuità per un servizio.