카오스 엔지니어링 (chaos engineering)

컴퓨터과학·AI
한 줄 정의: 운영 중인 시스템에 일부러 장애를 주입해 복원력을 실험으로 검증하는 방법론입니다.

쉽게 풀면

분산 시스템은 서버가 죽거나 네트워크가 느려지는 일이 반드시 일어나는데, 그때 시스템이 정말 버티는지는 실제로 겪어 보기 전에는 알 수 없습니다. 카오스 엔지니어링은 그 사고를 기다리지 않고 통제된 조건에서 일부러 일으켜 봅니다. 서버 하나를 무작위로 꺼 보고 서비스가 멀쩡한지 확인하는 식입니다.

왜 중요한가

복잡한 분산 시스템에서는 개별 구성요소가 정상이어도 조합에서 예상 밖 실패가 나오기 때문에, 설계 검토만으로는 복원력을 보장할 수 없습니다. 실험을 통해 숨은 의존성과 잘못된 시간 초과 설정을 미리 찾아내면 진짜 장애의 영향을 줄일 수 있습니다. 대규모 서비스 운영 조직의 표준 실천으로 자리 잡았습니다.

논문에서는 이렇게 쓰입니다

"의존 서비스에 300ms 지연을 주입하는 카오스 실험을 통해 시간 초과 설정 오류와 재시도 폭주 위험을 사전에 발견하였다."

일부러 느리게 만들어 보고 설정 문제와 연쇄 장애 가능성을 미리 찾아냈다는 뜻입니다.

조금 더 깊게 보면

절차는 정상 상태를 나타내는 지표를 먼저 정하고, 실제 일어날 법한 사건을 가설과 함께 설정한 뒤, 영향 범위를 작게 제한해 실험하고 결과를 비교하는 흐름을 따릅니다. 인스턴스 종료, 네트워크 지연과 패킷 손실, 의존 서비스 오류율 상승, 자원 고갈 등이 흔한 주입 유형입니다. 실험은 중단 스위치와 자동 롤백을 갖춘 상태에서 수행하며, 서서히 영향 범위를 넓혀 가는 것이 원칙입니다.

주의할 점

아무 준비 없이 운영 환경을 망가뜨리는 행위가 아니라, 관측 체계와 중단 수단을 갖춘 뒤 가설을 세워 진행하는 통제된 실험입니다. 퍼즈 테스팅이 프로그램 입력을 무작위로 바꿔 결함을 찾는 기법인 반면, 이쪽은 시스템을 둘러싼 인프라 환경에 장애를 주입합니다.

관련 용어