In breve, dovremmo progettare la morte nei nostri programmi, processi e thread a un livello basso, per il bene del sistema generale?
Gli errori accadono. I processi muoiono. Pianifichiamo il disastro e occasionalmente ci riprendiamo. Ma raramente progettiamo e implementiamo la morte del programma imprevedibile. Speriamo che i tempi di attività dei nostri servizi siano lunghi quanto ci preoccupiamo di mantenerli in esecuzione.
Un esempio di macro di questo concetto è Scimmia del caos di Netflix. , che termina casualmente le istanze AWS in alcuni scenari. Affermano che questo li ha aiutati a scoprire i problemi e creare sistemi ridondanti.
Quello di cui sto parlando è il livello più basso. L'idea è che i processi tradizionalmente di lunga durata escano casualmente. Ciò dovrebbe forzare la ridondanza nella progettazione e, in definitiva, produrre sistemi più resilienti.
Questo concetto ha già un nome? È già in uso nel settore?
Modifica
Sulla base dei commenti e delle risposte, temo di non essere stato chiaro nella mia domanda. Per chiarezza:
- Sì, intendo a caso,
- sì, intendo in produzione e
- no, non solo per i test.
Per spiegare, mi piacerebbe disegnare un'analogia con gli organismi multicellulari.
In natura, gli organismi sono costituiti da molte cellule. Le celle si forzano per creare ridondanza e alla fine muoiono. Ma dovrebbero esserci sempre cellule sufficienti dei tipi giusti per il funzionamento dell'organismo. Questo sistema altamente ridondante facilita anche la guarigione quando feriti. Le cellule muoiono così l'organismo vive.
Includere la morte casuale in un programma costringerebbe il sistema più grande ad adottare strategie di ridondanza per rimanere redditizia. Queste stesse strategie potrebbero aiutare il sistema a rimanere stabili di fronte ad altri tipi di errori imprevedibili?
E, se qualcuno ha provato questo, come si chiama? Mi piacerebbe saperne di più se esiste già.