Короче говоря, должны ли мы спроектировать смерть в наших программах, процессах и потоках на низком уровне, для блага всей системы?
Неудачи случаются. Процессы умирают. Мы планируем катастрофу и иногда восстанавливаемся после нее. Но мы редко проектируем и реализуем непредсказуемую программу смерти. Мы надеемся, что время безотказной работы наших сервисов будет продолжаться до тех пор, пока мы будем их поддерживать.
Макро-примером этой концепции является Chaf Monkey от Netflix , которая в некоторых случаях случайным образом завершает работу экземпляров AWS. Они утверждают, что это помогло им обнаружить проблемы и создать более избыточные системы.
Я говорю о более низком уровне. Идея состоит в том, чтобы традиционно длительно работающие процессы выходили случайным образом. Это должно привести к избыточности в дизайне и в конечном итоге создать более устойчивые системы.
У этой концепции уже есть имя? Это уже используется в промышленности?
РЕДАКТИРОВАТЬ
На основании комментариев и ответов, я боюсь, что я не был ясен в моем вопросе. Для ясности:
- да, я имею в виду случайно,
- да, я имею в виду в производстве, и
- нет, не только для тестирования.
Чтобы объяснить, я хотел бы провести аналогию с многоклеточными организмами.
В природе организмы состоят из множества клеток. Клетки разветвляются, чтобы создать избыточность, и в конечном итоге они умирают. Но для функционирования организма всегда должно быть достаточно клеток нужного типа. Эта сильно избыточная система также облегчает заживление при травме. Клетки умирают, так что организм живет.
Включение случайной смерти в программу вынудило бы большую систему принять стратегии избыточности, чтобы оставаться жизнеспособным. Могут ли эти же стратегии помочь системе оставаться стабильной перед лицом других непредсказуемых ошибок?
И, если кто-то пробовал это, как это называется? Я хотел бы прочитать больше об этом, если это уже существует.