Esistono esempi di implementazione e risposta efficace a una "scimmia del caos"?

15

Jeff Atwood ha recentemente scritto un post sul blog su Netflix's implementazione di una "scimmia del caos". È un articolo di altissimo livello. Sono curioso di sapere se qualcuno ha effettivamente implementato questa tecnica per testare un sistema.

Immagino che cosa stia davvero cercando di chiedere: quali strategie implementate per garantire che la tua architettura possa sopravvivere a una parte del sistema che si blocca?

    
posta Robotsushi 29.06.2011 - 19:03
fonte

1 risposta

5

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.

    
risposta data 29.06.2011 - 20:33
fonte

Leggi altre domande sui tag