카오스 엔지니어링과 카오스 몽키
카오스 몽키
· 서비스를 공급하는 인스턴스에 일부러 랜덤으로 장애를 일으키는 것
· 목적: 1. 가장 약한 부분이 어디인지 파악하여 엔지니어가 문제에 대처하는 자동화된 트리거를 성정 ->
한밤중에 장애 발생으로 엔지니어가 호출될 일이 없음
2. 지역 단위의 중단을 시뮬레이션하는 실험을 정기적으로 실행해 조기에 모든 시스템 약점을 파악해 수정 가능
· 카오스 몽키의 종류:
1. Latency monkey: RESTful 클라이언트-서버 통신 계층에 인공적인 지연 유발
2. Conformity monkey: 최상의 조건이 아닌 인스턴스를 찾아 종료 (예:자동 스케이링 그룹에 속하지 않은 인스턴스를 찾아 재시작)
3. Doctor monkey: 인스턴스들의 상태를 점검하고 CPU 부하율 등의 정보들을 모니터링하여 불안정한 인스턴스를 탐지하여 제거
4. Janitoy monkey: 클라우드 환경이 잡음으나 낭비 없이 작동하도록 보장, 사용되지 않는 리소스들을 찾아 제거
5. Security monkey: Conformity monkey의 확장으로 보안에 위배되거나 최약점을 찾고 공격하는 인스턴스 종료
6. 10-18 monkey: 다양한 언어와 문자를 사용하여 여러 지역에서 고객에서 서비스를 제공할 경우 설정 및 런타임 문제 감지
7. monkey: AWS의 가용성 영역을 전체적으로 중단
카오스 엔지니어링
· 위에서 설명한 문제를 인위적으로 발생시켜 미리미리 준비하는 엔지니어링 방식
· 카오스엔지니어링의 원칙
1. 시스템의 정상 상태를 정의해 정상 동작의 기준을 설정
2. 대조군과 실험군 양쪽에서 모두 이 정상 상태가 계속된다는 가설을 세움
3. 서버 멈춤, 하드 드라이버 고장, 네트워크 연결 끊김과 같은 실제 상황을 반영하는 변수 도입
4. 대조군과 실험군 사이의 차이점을 확인해 가설이 틀렸음을 입증