Kafka 관련 카오스 엔지니어링 사례가 많지 않은데, 마침 좋은 내용의 글이 있어 옮겨봅니다.
* 카오스 엔지니어링이란?
복잡한 분산 시스템 환경에서 시스템의 신뢰성을 확인하기 위해, 인위적인 혼돈(Chaos)을 가하여 시스템의 취약한 부분을 찾고 보강하는 방식의 엔지니어링 기법
* Why?
최근 SK데이터센터 장애로 인한 카카오 장애시처럼 불특정 장애조건상태에서 서비스 연속성 여부를 테스트하기 위한 가용성 테스트 방법론의 하나로 넷플릭스에서 시작하여 대규모 분산서비스를 하는 기업들은 SRE의 주요 업무중 하나로 진행 하기도 함.
-- 넷플릭스의 카오스 몽키 Github: https://netflix.github.io/chaosmonkey/
* 테스트 원칙 (출처: IT 위키)
- 정상적인 동작을 기반으로 가설을 만든다.
- 다양한 실제적 사건들을 이용한다.
- 프로덕션(운영) 환경에서 테스트한다.
- 지속적 테스트를 위해 동작을 자동화한다.
- 장애 반경을 최소화한다.
* 절차 (출처: IT 위키)
1. 시스템의 정상적인 상태를 정의
ex) CPU Load, Memory Utilization, Network I/O 등
2. 통제 그룹과 시험 그룹 시스템이 정상적인 상태로 지속될 것이라 가정
ex) 서버 40대 중 10대가 동시에 고장나도 고객 서비스는 정상 동작
3. 현실에서 일어날 수 있는 문제를 반영하여 실험 그룹에 도입
ex) 갑작스런 접속 폭주, 서비스 거부 공격
* 컨테이너 기반의 카오스 엔지니어링은? (하기 링크 참조)
docker기반의 Kafka에 대한 카오스 엔지니어링 테스트 사례입니다.
** PUMBA: 카오스 엔지니어링을 테스팅하기 위해 도커 기반의 환경에 제공되는 카오스 테스팅 도구로, 컨테이너 애플리케이션 간 충돌을 일으키거나 네트워크 장애를 고의적으로 발생시킬 수 있는 기능을 제공.
** PUMBA의 기능: 컨테이너 중지, 컨테이너 내 실행 중인 프로세스 중지, 네트워크 에뮬레이션을 통해 네트워크 장애, 대역폭 제한, 패킷 손실 등
** 자세한 테스트 내용은 하기 링크 참고 해주시기 바랍니다.