L'isolamento e il degrado aggraziato sono le strategie generali. (Un altro termine che potresti vedere simile all'isolamento è il disaccoppiamento , anche se tendo a vederlo su scala minore, come in OOD / P. Il concetto è lo stesso.)
Si isolano parti diverse di un sistema l'una dall'altra in modo che se una non funziona, le altre possono ancora rispondere alle richieste. Come diceva il blog Netflix , se la ricerca non funzionasse, lo streaming andrebbe comunque bene. Questo significa solo che la ricerca e lo streaming sono stati separati in modo tale che un collo di bottiglia o l'inabilità di uno non hanno influito sull'altro.
Con grazioso degrado, 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 quindi elaborare consigli personalizzati di altri cose da guardare. Se quel sistema non funziona, tornano a mostrare raccomandazioni su cose che sono nel complesso popolari. Il punto è avere un piano B, un piano C, ecc. Da fare o mostrare qualcosa quando il piano A fallisce piuttosto che mostrare nulla o un errore.
Un esempio comune sul lato client di degrado gradevole (indipendentemente dal fatto che l'implementazione sia comune o meno) riguarda 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 veloce o fluido, ma dovrebbe comunque funzionare piuttosto che diventare inutilizzabile.
Queste sono idee molto generali, però. Quasi ogni progetto li implementerebbe in modo diverso, a seconda dei servizi e sottosistemi che forniscono e delle dipendenze tra di loro.