Storia della domanda
Con il passaggio alle architetture a microservizi e ai sistemi distribuiti, è aumentata drasticamente la probabilità di errori nelle interazioni tra servizi, così come la complessità della loro gestione. I vecchi approcci spesso non consideravano l'instabilità delle interazioni di rete, portando a incidenti di grande entità in produzione.
Problema
Il problema principale è che scenari complessi di guasto, degrado dei servizi e errori di integrazione non sono sufficientemente formalizzati nei requisiti. Ciò costringe gli sviluppatori a prendere decisioni sulla gestione degli errori a propria discrezione, portando a una varietà di casi e difficoltà nella loro testazione.
Soluzione
Una descrizione efficace della gestione degli errori dovrebbe includere:
Caratteristiche principali:
È obbligatorio descrivere la gestione degli errori tecnici nei requisiti — non è un compito dello sviluppatore?
Obbligatorio. Una politica di gestione degli errori non riflessa porta spesso a errori nel funzionamento e a malintesi. L'analista di sistema deve discutere il comportamento in caso di errori.
È necessario descrivere casi che si verificano molto raramente (ad esempio, perdita parziale della connessione tra i servizi)?
Sì, perché gli errori che si verificano raramente portano ai più complessi incidenti. Le loro conseguenze possono essere critiche per il business.
È necessario concordare con il business i messaggi visualizzati agli utenti in caso di errore?
Sì. Messaggi corretti, informativi, ma non esagerati o spaventosi devono essere concordati con il business, altrimenti ne risente l'esperienza utente e la fedeltà.
Casi negativi: Nel progetto non sono stati descritti gli scenari di gestione dei timeout tra i servizi. Di conseguenza, a causa di una rete instabile, i servizi "si bloccavano" senza risposta. Vantaggi: Esecuzione rapida degli scenari principali. Svantaggi: Guasti massicci in produzione, feedback negativo dai clienti, chiusura "manuale" degli incidenti.
Casi positivi: L'analista ha descritto scenari di degrado e riavvii, tentativi di ripetizione e messaggi corretti. Vantaggi: Alta stabilità del servizio in caso di guasti, riduzione del numero di incidenti. Svantaggi: Maggiore tempo per sviluppare l'architettura degli scenari.