Nel momento del design di un sistema, è sempre importante cercare di prevedere i possibili stati di errore. Durante il suo utilizzo però, a volte ci si trova di fronte a un caso di errore imprevisto. A quel punto, in genere un sistema può decidere di terminare la sua esecuzione in 4 modi diversi: Fail Closed, Fail Open, Fail Safe e Fail Over.
Le regole che seguono possono essere applicate sia a sistemi digitali che a sistemi fisici.
Fail Closed
In caso di errore, il sistema viene terminato e non è possibile interagire ulteriormente con esso finché la condizione di failure non è stata identificata e risolta.
Questo metodo di failure dà priorità alla sicurezza rispetto alla disponibilità.
Un esempio fisico potrebbe essere il metal detector all’entrata di un ente governativo o all’aereoporto. Nel caso in cui il sistema fallisca, verrà inibito l’accesso all’edificio finché il metal detector non verrà rimesso in funzione, a costo di causare lunghe file e disagi.
Un esempio digitale potrebbe essere un firewall. Un sistema fail closed, in caso di crash del firewall, deciderebbe di inibire ogni connessione finché questo non venisse rimesso in funzione. Il fail del firewall potrebbe infatti essere stato causato da un attaccante con l’obiettivo di inviare malware o attaccare sistemi interni.
Fail Open
In caso di errore, invece di interrompersi, il sistema continuerà a funzionare come se nulla fosse successo.
Preso l’esempio del sistema digitale precedente, in caso di fail del firewall l’accesso al sistema continua ad essere permesso. E’ sempre importante capire il caso d’uso specifico per scegliere il tipo di failure appropriata. Potrebbe sembrare infatti assurdo permettere a del traffico di fluire in assenza di firewall. Assumendo però che la maggior parte del traffico sia legittimo e che il rischio di intrusione per il sistema protetto sia basso, allora a livello di business potrebbe convenire il Fail Open del firewall. In questo caso ovviamente, un operatore dovrebbe essere avvertito dell’interruzione del funzionamento e cercare di risolvere il problema il prima possibile.
Un altro caso d’uso è quando un nuovo sistema viene rilasciato in produzione. Un metodo Fail Open permette al team di operatori di capire come funzioni il sistema senza aver paura di causare danni. Una volta presa confidenza col nuovo sistema, si potrebbe anche pensare di cambiarlo in modo che fallisca in maniera chiusa.
Fail Safe
In caso di errore, il sistema smetterà di funzionare inibendo la disponibilità, ma non causando mai rischi di sicurezza.
Di solito i meccanismi di fail safe sono realizzati tramite specifici componenti del sistema, che vengono innescati nel momento di errore.
Ad esempio, gli ascensori hanno dei freni meccanici che vengono innescati nel caso in cui i cavi dell’ascensore si rompano. In questo caso, l’ascensore smetterà di funzionare ma i passeggeri saranno comunque al sicuro.
Fail Over
In caso di errore, il sistema viene automaticamente sostituito da un sistema analogo ridondante o in standby.
Come nel caso del fail close, il fail over consente di mantenere una forte priorità sulla sicurezza, bloccando immediatamente gli accessi finché un operatore non interviene manualmente per capire cosa sia andato storto.
E come nel caso del fail open, il failover consente al nostro sistema di mantenere una disponibilità elevata, non scontentando quindi gli utenti e il business owner.
Il failover, rispetto ai meccanismi precedenti, è probabilmente il più dispendioso, dovendo tenere conto del costo necessario per il mantenimento della ridondanza. Tuttavia, nel caso di architetture in cloud e qualora si avesse la possibilità di avviare istanze molto rapidamente, questo costo verrebbe fortemente ridotto.