In breve, dovremmo progettare la morte nei nostri programmi, processi e thread a basso livello, per il bene dell'intero sistema?
I fallimenti accadono. I processi muoiono. Pianifichiamo un disastro e occasionalmente ci riprendiamo. Ma raramente progettiamo e realizziamo la morte imprevedibile del programma. Speriamo che i tempi di attività dei nostri servizi durino quanto ci teniamo a farli funzionare.
Un esempio macro di questo concetto è Chaos Monkey di Netflix , che termina casualmente le istanze AWS in alcuni scenari. Sostengono che ciò li ha aiutati a scoprire problemi e costruire sistemi più ridondanti.
Quello di cui sto parlando è di livello inferiore. L'idea è che i processi tradizionalmente di lunga durata si chiudano casualmente. Ciò dovrebbe forzare la ridondanza nella progettazione e alla fine produrre sistemi più resistenti.
Questo concetto ha già un nome? È già utilizzato nel settore?
MODIFICARE
Sulla base dei commenti e delle risposte, temo di non essere stato chiaro nella mia domanda. Per chiarezza:
- si intendo a caso,
- si, intendo nella produzione e
- no, non solo per i test.
Per spiegare, vorrei tracciare un'analogia con gli organismi pluricellulari.
In natura, gli organismi sono costituiti da molte cellule. Le cellule si forzano per creare ridondanza e alla fine muoiono. Ma dovrebbero sempre esserci abbastanza cellule del giusto tipo per far funzionare l'organismo. Questo sistema altamente ridondante facilita anche la guarigione in caso di infortunio. Le cellule muoiono così vive l'organismo.
Incorporare la morte casuale in un programma costringerebbe il sistema più grande ad adottare strategie di ridondanza per rimanere fattibile. Queste stesse strategie aiuterebbero il sistema a rimanere stabile di fronte a altri tipi di guasti imprevedibili?
E, se qualcuno ha provato questo, come si chiama? Mi piacerebbe saperne di più se esiste già.