Isolamento e degradazione elegante sono le strategie generali. (Un altro termine che potresti vedere simile all'isolamento è disaccoppiamento , sebbene tendo a vederlo su una scala più piccola, come in OOD / P. Il concetto è lo stesso.)
Si isolano le diverse parti di un sistema l'una dall'altra in modo che, se uno è inattivo, gli altri possono ancora rispondere alle richieste. Come il blog di Netflix detto , se la ricerca non funzionava , lo streaming andrebbe bene. Questo significa solo che la ricerca e lo streaming erano sufficientemente separati da impedire che un collo di bottiglia o l'inabilità di uno non influissero sull'altro.
Con un degrado aggraziato, se la migliore implementazione di qualcosa non è disponibile, hai qualcos'altro da compilare. Sempre dal post di Netflix, hanno un sistema per guardare le cose che hai guardato e apprezzato e poi aver lavorato su misura raccomandazioni di altre cose da guardare. Se questo sistema non funziona, ritornano a mostrare consigli su cose che sono popolari nel complesso. Il punto è avere un Piano B, un Piano C, ecc. Per fare o mostrare qualcosa quando il Piano A fallisce piuttosto che mostrare niente o un errore.
Un esempio comune sul lato client di degradazione elegante (se l'implementazione è comune o meno) implica l'uso di javascript sui siti web. Se il javascript del browser è disabilitato o semplicemente non disponibile, le pagine del sito dovrebbero comunque funzionare correttamente senza di esso. Potrebbe non essere così veloce o fluido, ma dovrebbe comunque funzionare piuttosto che diventare inutilizzabile.
Queste sono idee molto generali, comunque. Quasi ogni progetto li implementerebbe in modo diverso, a seconda dei servizi e dei sottosistemi che forniscono e delle dipendenze tra loro.