💡 핵심 인사이트
카오스 엔지니어링은 넷플릭스(Netflix)가 창안한 미친듯한 데브옵스 테스트 기법입니다.
시스템이 무너지기를 두려워하며 방어막만 치는 것을 넘어, **"오히려 평온하게 잘 돌아가고 있는 라이브 운영 서버(Production)에 일부러 로봇(카오스 몽키)을 풀어 무작위로 데이터베이스를 끄고 랜선을 뽑는 '혼돈(장애)'을 강제로 주입하여, 우리 시스템이 진짜로 장애에 안 죽고 회복(Resilience)할 수 있는지 백신을 맞혀보는 면역력 훈련"**입니다.
Ⅰ. 카오스 엔지니어링의 탄생 (넷플릭스의 광기)
클라우드(AWS) 환경에서는 수천 대의 가상 서버가 돌아갑니다. 언제, 어떤 서버의 하드웨어가 뻗을지 아마존도 모르고 넷플릭스도 모릅니다 (불확실성의 시대).
- 기존의 테스트: 출시 전에 QA 환경에서 "A 버튼 누르면 잘 되나?" 정도의 얌전한(기대된) 테스트만 했습니다.
- 넷플릭스의 깨달음: "클라우드에서는 서버 하나가 죽는 건 일상이다. 서버 하나가 죽었을 때 연쇄 폭발이 일어나는 게 더 무섭다. 그러니 아예 우리가 평소(낮 시간)에 고의로 서버 전원을 랜덤하게 뽑아버리면서, 시스템이 오토스케일링(자동 복구)으로 잘 살아나는지 매일매일 강제로 훈련시키자!"
이 발상에서 탄생한 미친 원숭이 프로그램이 바로 그 유명한 **카오스 몽키(Chaos Monkey)**입니다.
Ⅱ. 카오스 몽키 삼총사 (Simian Army)
넷플릭스는 이 원숭이들을 진짜 라이브 운영 서버에 24시간 풀어놓았습니다. 이들은 맘대로 돌아다니며 시스템을 박살 냅니다.
- 카오스 몽키 (Chaos Monkey)
- 평일에 업무 시간 중 무작위로 돌아다니다가, AWS에 떠 있는 컨테이너나 가상 서버(EC2) 하나를 무작위로 푹 찔러서 강제 종료(Kill)시켜 버립니다.
- 목표: 서버 한 대가 죽어도, 로드밸런서가 즉시 알아채고 남은 서버로 트래픽을 넘기거나 죽은 서버를 1분 만에 자동 부활시키는지(무중단 회복) 훈련합니다.
- 카오스 고릴라 (Chaos Gorilla)
- 원숭이가 서버 1대를 끈다면, 고릴라는 아예 'AWS의 가용 영역(AZ) 전체' (강남 데이터센터 1곳 통째로)를 네트워크에서 차단해 버리는 거대한 재앙을 만듭니다.
- 목표: 강남 센터가 죽었을 때, 시스템이 1초 만에 일본이나 부산 데이터센터로 트래픽을 넘겨 재해 복구(DR)를 해내는지 훈련합니다.
- 지연 몽키 (Latency Monkey)
- 서버를 끄는 대신, A 서버와 B 서버가 통신할 때 몰래 중간에 껴서 통신 지연(Delay)을 엄청나게 유발합니다. (Timeout 에러 실험).
Ⅲ. 카오스 엔지니어링의 4단계 원칙과 효과
무작정 때려 부수는 테러가 아닙니다. 철저히 통제된 과학적 실험입니다.
- 정상 상태(Steady State) 정의: "우리 쇼핑몰은 초당 1,000결제가 일어나야 정상이다."
- 가설 수립: "추천 서버(DB) 1대를 강제로 꺼도, 결제 1,000건은 아무런 영향 없이 유지될 것이다."
- 실전 주입 (폭파): 진짜 라이브 서버에서 추천 서버의 플러그를 뽑아버립니다. (폭파 반경을 최소한으로 줄여서 진행).
- 결과 분석 및 교정: 만약 결제율이 500건으로 떨어지면? "아뿔싸! 추천 서버가 죽으면 결제창까지 같이 로딩이 멈추는 버그(강한 결합)가 있었네!"라는 걸 주말 새벽 장애가 터지기 전에 **평일 낮에 안전하게 미리 발견하고 코드를 분리(서킷 브레이커 도입)**할 수 있습니다.
📢 섹션 요약 비유: 전통적인 서버 테스트가 샌드백을 매달아 놓고 치는 **'조용한 실내 체육관 훈련'**이라면, 카오스 엔지니어링은 시내를 걷는 특수 부대원의 등 뒤에서 교관이 몰래 수류탄(카오스 몽키)을 던지며 "이래도 안 죽고 방어 진형을 짤 수 있나 보자!"라고 매일매일 극단적인 실전 면역력 주사(스트레스 테스트)를 놓는 광기 어린 예방 접종입니다. 이 주사를 맞고 버틴 시스템은, 진짜 정전 사태가 와도 하품하며 0.1초 만에 자동 복구해 냅니다.