Nella storia dello sviluppo dei sistemi IT distribuiti, le questioni relative alla gestione degli errori e agli scenari di fallimento sono state a lungo messe in secondo piano, a favore della logica di business. Tuttavia, la crescita delle dimensioni e la complessità dell'infrastruttura hanno dimostrato nel tempo che scenari di gestione degli errori poco sviluppati portano a guasti su larga scala e perdita di dati.
Il problema è che sistemi complessi subiscono diversi tipi di guasti: dall'inaccessibilità di singoli servizi all'incoerenza dei dati o ai guasti parziali delle connessioni. Spesso i clienti interpretano i "guasti" come solo ovvi fallimenti (per esempio, server non disponibile), ignorando le catene di errori inter-servizio o la degradazione dell'esperienza utente.
Una soluzione efficace si basa su un approccio sistemico:
Caratteristiche principali:
Qual è la differenza tra un'eccezione a livello di applicazione e un'eccezione a livello di infrastruttura?
Spesso i candidati confondono gli errori di business (per esempio, "utente non trovato") con guasti reali (per esempio, "database non disponibile"). L'applicazione deve sempre distinguere chiaramente tra i due tipi di eccezioni e garantire diverse strategie di gestione (rollback, notifiche, allerta).
Quali scenari di guasto dovrebbero essere modellati per un’API interna, se non è pubblica?
Gli scenari di guasto sono rilevanti per qualsiasi API: anche se l'API è interna, i guasti possono sempre verificarsi (anche all'interno di un'unica contesto di automazione), e devono essere modellati chiaramente, per lavorare correttamente con dati non affidabili/assenza di dati.
Il sistema dovrebbe nascondere tutti gli errori all'utente per massimizzare l'UX?
No, la totale occultazione degli errori porta a disinformare l'utente. È importante trovare un equilibrio tra informatività (in modo che l'utente capisca cosa fare dopo) e sicurezza (senza svelare i dettagli di implementazione).
Caso negativo: In un grande progetto di e-commerce, un analista di sistema ha lasciato la gestione di tutti gli errori di rete a carico dell'architettura. Durante aggiornamenti di emergenza e guasti del servizio di posta, il sistema non inviava notifiche sugli ordini e gli utenti non capivano se i loro ordini erano stati creati.
Pro:
Contro:
Caso positivo: L'analista di sistema insieme all'architetto ha modellato scenari separati per ciascun servizio critico: assenza della coda di messaggi, malfunzionamenti dei gateway di pagamento, degradazione del servizio di ricerca. Sono stati scritti messaggi user-friendly per i clienti.
Pro:
Contro: