CS 지식

카오스 엔지니어링(Chaos Engineering)이란?

Nowon9159 2023. 7. 7. 16:52
반응형

카오스 엔지니어링 및 연속 복원력 플라이휠 (https://docs.aws.amazon.com/ko_kr/wellarchitected/latest/reliability-pillar/rel_testing_resiliency_failure_injection_resiliency.html)

정의

카오스 엔지니어링은 분산 컴퓨팅 시스템이 갑작스러운 중단을 견딜 수 있는지 테스트한다. 
카오스 엔지니어링은 무작위적이고 예측할 수 없는 행동에 초점을 맞춘 카오스 이론의 기본 개념에 의존한다.
목표는 무작위적이고 예측할 수 없는 동작을 도입하는 통제된 실험을 통해 시스템의 약점을 파악하는 것이다.

간단히 얘기해 분산 컴퓨팅 시스템에 갑작스럽게 중단 및 예기치못한 변수를 줘서 기존 서비스에 영향도가 없는지 테스트 하는 과정이다.
왜? 취약점을 보완하기 위해서

 

카오스 테스트 원칙

  1. 가설 세우기 : 잠재적 약점을 가설을 통해 생각하고 약점이 미치는 영향에 대해 엔지니어 스스로 생각해본다. 서비스를 임의로 종료하면 서비스가 중단되지 않고 계속될 것이라고 질문과 가정을 한다.
  2. 베이스라인 세우기: 최종 상태와 비교할 수 있는 기준선을 세우고 환경의 애플리케이션, 마이크로서비스 및 아키텍처 설계를 이해해야한다. 어떠한 기준선을 세우고 테스트 진행 중 모니터링과 테스트 후 결과 분석에 대한 청사진을 만들 수 있게 된다.
  3. 테스트 진행하기 : 한 번에 하나씩 변수를 도입해서 결과를 확인할 수 있도록 한다. 특정 조건에서 테스트를 중단할 준비를 해서 PRD 환경에 피해가 가지 않도록 하고, 문제 발생 시 롤백 계획도 마련해 놓는 것이 좋다. 테스트하는 동안 세웠던 가설에 대한 반증을 해 시스템에 대한 복원력을 개선하기 위해 집중할 것
  4. 모니터링 및 결과 기록 : 테스트를 모니터링해서 애플리케이션 동작의 변화를 기록하기. 결과를 분석해서 애플리케이션이 어떻게 반응 했는지, 테스트가 팀의 기대치에 부합했는지 확인할 것. 조사 도구를 사용해서 속도 저하 및 장애의 정확한 근본 원인을 파악하시오.

팀에서 다음과 같은 항목을 테스트한다.

  • 그들이 알고 있고 이해하고 있는 것들
  • 알고는 있지만 완전히 이해하지 않은 것들
  • 이해는 하고 있지만 확실치 않은 것들
  • 완전히 인식하지도 이해하지도 못한 것들

시스템 성능과 무결성을 평가하기 위해서 결함과 장애를 유발할수 있는 가능성을 제기하여 시나리오를 생성해 테스트에 활용한다.

 

카오스 엔지니어링 고급

컴퓨터 과학자 L. Peter Deutsch 와 동료들은 분산 컴퓨팅의 8개 오류 목록을 개발했다. 프로그래머와 엔지니어가 분산 시스템에 대해 자주 잘못 가정하는 항목이다. 카오스 엔지니어링을 문제에 적용할 때 좋은 시작점이 될 수 있다.

  1. 안정적인 네트워크
  2. zero latency
  3. 무한한 대역폭
  4. 보안 안정적인 네트워크
  5. 토폴로지 (네트워크 연결 구조)는 절대 변경되지 않는다
  6. 관리자가 한명 뿐
  7. 네트워크 전송 비용이 0이다.
  8. 획일화된 또는 유사한 네트워크로만 되어있다.
    (이기종 네트워크가 아닌 환경)

카오스 엔지니어들은 시스템과 네트워크 문제를 이해하는 데 위 항목들을 핵심 원칙으로 계속 사용하고 있다. 원론적으로 이러한 핵심 원칙이 나오게 되는 이유는 시스템과 네트워크가 결코 완벽하거나 100% 신뢰할수 없다는 것 때문이다. 그래서 고가용성 시스템을 위한 "five nines" 라는 개념도 있다. 100% 보다 99.999%의 가용성을 위해 노력하는 게 엔지니어가 완벽에 가깝게 도달할 수 있는 방법이다.

 

카오스 엔지니어링 도구

  • Simian Armu
  • AWS Fault Injection Simulator
  • Simoorg
  • Monkey-Ops
  • Gremlin
  • PowerfulSeal
  • KubeMonky

 

[참조] : 

https://www.dynatrace.com/news/blog/what-is-chaos-engineering/

https://principlesofchaos.org/ko/

https://www.techtarget.com/searchitoperations/definition/chaos-engineering

반응형