카오스 엔지니어링 한스푼 추가한 Kafka MM2 성능 테스트!
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의 기능: 컨테이너 중지, 컨테이너 내 실행 중인 프로세스 중지, 네트워크 에뮬레이션을 통해 네트워크 장애, 대역폭 제한, 패킷 손실 등 ** 자세한 테스트 내용은 하기 링크 참고 해주시기 바랍니다.