간단히 말해서 전체 시스템의 이점을 위해 프로그램, 프로세스 및 스레드에 대한 수준을 낮은 수준으로 설계해야합니까?
실패가 발생합니다. 프로세스는 죽는다. 우리는 재난을 계획하고 때때로 그것을 복구합니다. 그러나 우리는 예측할 수없는 프로그램 사망을 거의 설계하고 구현하지 않습니다. 우리는 서비스 가동 시간이 서비스를 계속 유지하기를 원하는 한 오래되기를 바랍니다.
이 개념의 매크로 예는 일부 시나리오에서 AWS 인스턴스를 임의로 종료하는 Netflix의 Chaos Monkey 입니다. 그들은 이것이 문제를 발견하고 더 많은 중복 시스템을 구축하는 데 도움이되었다고 주장합니다.
내가 말하는 것은 저수준입니다. 아이디어는 전통적으로 오래 실행되는 프로세스를 임의로 종료하는 것입니다. 이를 통해 설계에 중복성을 강제하고 궁극적으로보다 탄력적 인 시스템을 생성해야합니다.
이 개념은 이미 이름이 있습니까? 이미 업계에서 사용되고 있습니까?
편집하다
의견과 답변을 바탕으로 내 질문에 명확하지 않은 것 같습니다. 명확성을 위해 :
- 예, 무작위로 의미합니다
- 예, 나는 생산을 의미합니다.
- 아니요, 테스트 용이 아닙니다.
설명하기 위해, 나는 다세포 유기체에 비유하고 싶습니다.
본질적으로 유기체는 많은 세포로 구성됩니다. 세포는 스스로 중복성을 만들어 포크로 죽습니다. 그러나 유기체가 기능하기 위해서는 항상 적절한 종류의 세포가 충분해야합니다. 이 이중화 시스템은 부상을 입을 때 치유를 용이하게합니다. 세포는 죽어서 유기체는 살아 있습니다.
무작위 사망을 프로그램에 통합하면 더 큰 시스템이 중복 전략을 채택하여 실행 가능한 상태로 유지할 수 있습니다. 이 같은 전략이 예측할 수없는 다른 종류의 장애에도 불구하고 시스템을 안정적으로 유지하는 데 도움이됩니까?
그리고 이것을 시도한 사람은 무엇입니까? 이미 존재하는 경우 더 자세히 읽고 싶습니다.