En pocas palabras, ¿deberíamos diseñar la muerte en nuestros programas, procesos e hilos a un nivel bajo, por el bien del sistema en general?
Las fallas suceden. Los procesos mueren. Planificamos el desastre y ocasionalmente nos recuperamos de él. Pero rara vez diseñamos e implementamos programas impredecibles de muerte. Esperamos que los tiempos de actividad de nuestros servicios sean siempre que nos interese mantenerlos en funcionamiento.
Un macroejemplo de este concepto es Chaos Monkey de Netflix , que termina aleatoriamente las instancias de AWS en algunos escenarios. Afirman que esto les ha ayudado a descubrir problemas y construir sistemas más redundantes.
De lo que estoy hablando es de nivel inferior. La idea es que los procesos tradicionalmente de larga duración salgan aleatoriamente. Esto debería forzar la redundancia en el diseño y, en última instancia, producir sistemas más resistentes.
¿Este concepto ya tiene un nombre? ¿Ya se está utilizando en la industria?
EDITAR
Según los comentarios y las respuestas, me temo que no fui claro en mi pregunta. Para mayor claridad:
- Sí, quiero decir al azar,
- Sí, quiero decir en producción, y
- no, no solo para probar.
Para explicar, me gustaría dibujar una analogía con los organismos multicelulares.
En la naturaleza, los organismos consisten en muchas células. Las células se bifurcan para crear redundancia, y finalmente mueren. Pero siempre debe haber suficientes células del tipo correcto para que el organismo funcione. Este sistema altamente redundante también facilita la curación cuando se lesiona. Las células mueren para que el organismo viva.
La incorporación de la muerte aleatoria en un programa obligaría al gran sistema a adoptar estrategias de redundancia para seguir siendo viable. ¿Estas mismas estrategias ayudarían al sistema a mantenerse estable frente a otros tipos de fallas impredecibles?
Y, si alguien ha intentado esto, ¿cómo se llama? Me gustaría leer más al respecto si ya existe.