AWSKRUG devops 소모임과 AWS Summit Seoul에서 정영진님이 발표하신 카오스 엔지니어링에 대해 흥미가 생겨 카오스 엔지니어링에 대해 알아보기 위해 조사를 했다!
먼저 카오스 엔지니어링이란 production의 오류에 대한 서비스를 강화하여 일관된 안정성을 얻을 수 있도록 도와주는 방법론이다. 즉, 분산 시스템에서 예측치 못한 상황에도 견딜 수 있도록 실험을 통해 신뢰성을 확보하는 방법론이라고 볼 수 있다.
정영진님께서는 AWS EKS 환경에서 오토스케일링을 위해 Karpenter를 쓰는 경우 노드 그룹이 죽거나 DB 연결에 문제가 생기거나 네트워크가 끊기는 등 장애 상황을 미리 검증하기 위해 카오스 엔지니어링을 적용하셨고 테스트로는 AWS Fault Injection Service를 이용하셨다.
이외에도 넷플릭스가 개발한 Chaos Monkey나 Chaos Gorilla, Kube Monkey 등이 있다.
(Chaos Monkey는 프로덕션 환경에서 인스턴스를 임의로 종료하는 관찰하는 도구이고 Gorilla는 가용 영역을 삭제, Kube Monkey는 pod 삭제하는 도구)
카오스 엔지니어링은 총 4단계로 진행이 된다.
- 정상 동작을 나타내는 시스템의 측정 가능 통계치로 ‘정상 상태’ 정의
- 통제 그룹과 시험 그룹 시스템이 정상적인 상태로 지속될 것이라고 가정
- 서버 장애, 하드 디스크 오작동, 네트워크 끊김 등과 같은 실제 문제에 대한 도입(테스트)
- 시험 그룹과 통제 그룹을 비교하여 가설 검증
4단계에서 만약 가설이 기각되는 경우 시스텀 전반적인 동작이 일어나기 전에 개선을 진행해야한다.
또한, 아래와 같이 카오스 테스트 원칙이라는 것도 존재하는데 이는 앞선 과정에 적용할 때 이상적인 카오스 엔지니어링의 방식을 설명한다.
- 정상 상태 행동에 관한 가설 구축 (시스템의 내부 속성보다는 측정 가능한 결과에 초점)
- 현실 세계의 문제 시도(카오스 변수는 현실의 문제를 반영하도록)
- 실제 프로덕션 환경에서 실험
- 자동화를 통한 지속적 실험
- 폭발 반경 최소화
카오스 엔지니어링을 통해 미리 알려져 있는 이벤트(장애 상황에 대해)를 테스트를 해보고 시스템이 해당 상황에서 견딜 수 있는지 확인해보는 절차는 서비스의 안정성을 확보하기 위해선 필수 절차라는 생각이 들었다.
그리고 해당 영상은 석찬님이 2018년도에 발표하신 자료인데 영상으로 참고해도 좋을 것 같다 !
참고
'Cloud' 카테고리의 다른 글
AUSG 6기 후기!! (5) | 2023.05.19 |
---|---|
테라폼이란? (0) | 2023.04.30 |
오픈 스택 (0) | 2021.10.23 |
네트워크 가상화 (0) | 2021.10.23 |
클라우드 컴퓨팅 (0) | 2021.08.29 |