En pocas palabras, ¿debemos diseñar la muerte en nuestros programas, procesos y subprocesos en un nivel bajo, para el bien del sistema en general?
Las fallas suceden. Los procesos mueren. Planeamos para el desastre y de vez en cuando nos recuperamos de él. Pero raramente diseñamos e implementamos programas impredecibles de muerte. Esperamos que los tiempos de funcionamiento de nuestros servicios sean siempre que nos cueste mantenerlos en funcionamiento.
Un ejemplo macro de este concepto es el Chaos Monkey de Netflix , que termina al azar las instancias de AWS en algunos escenarios. Afirman que esto les ha ayudado a descubrir problemas y a construir sistemas más redundantes.
A lo que me refiero es a un 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 estaba claro en mi pregunta. Para mayor claridad:
- sí, quiero decir al azar,
- sí, quiero decir en producción, y
- no, no solo para pruebas.
Para explicar, me gustaría hacer 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 eventualmente 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 forzaría al sistema mayor a adoptar estrategias de redundancia para que permanezcan viables. ¿Ayudarían estas mismas estrategias a que el sistema permanezca estable frente a otros tipos de fallas impredecibles?
Y, si alguien ha intentado esto, ¿cómo se llama? Me gustaría leer más sobre esto si ya existe.