QA와 카오스 엔지니어링으로 시스템 복원력 강화

버그가 아니라 장애를 잡아라!! QA와 카오스 엔지니어링의 만남

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

QA 엔지니어, 개발자, SRE(Site Reliability Engineer)

핵심 요약

  • 카오스 엔지니어링시스템의 복원력(Resilience)을 테스트하기 위해 인위적으로 장애를 유도하는 방법론입니다.
  • Application Level 테스트를 통해 null exception 문제를 사전에 탐지하고, mitmproxy를 활용한 자동화 테스트로 비정상 상황 대응력을 강화했습니다.
  • QA 테스트와 달리, 카오스 엔지니어링은 비정상적인 동작을 가정하여 서비스 중단 시 대비 방안을 검증합니다.

섹션별 세부 요약

1. 카오스 엔지니어링의 필요성

  • 24시간 운영되는 이커머스 서비스에서 인프라, 코드, 데이터, 휴먼 오류 등 다양한 요인이 장애를 유발할 수 있습니다.
  • QA 테스트만으로는 예측 불가능한 장애에 대비하기 어렵습니다.
  • 카오스 엔지니어링은 장애를 예측하고 복구 시스템을 사전에 검증합니다.

2. 카오스 엔지니어링의 주요 유형

  • Application Level: API 호출 실패, null 반환 등 애플리케이션 내부 오류 유도.
  • Host Level: DB 다운, 프로세스 종료 등 서버 자체 문제 시뮬레이션.
  • Resource Attack: CPU/메모리 과부하, 네트워크 지연 등 자원 고갈 테스트.
  • People Attack: 잘못된 설정, 오배포 등 인간 오류 시뮬레이션.

3. Application Level 테스트 사례 (null exception)

  • null exception 발생 시 전체 페이지 렌더링 중단 문제가 발생했음.
  • mitmproxy를 활용해 API 응답의 특정 필드를 null로 주입하여 테스트.
  • "해당 API를 사용하는 페이지가 정상적으로 보여야 한다. 단, null 필드는 노출되지 않아야 한다."가 목표.

4. mitmproxy를 통한 테스트 프로세스

  • response(flow: HTTPFlow) 함수를 중심으로 API 응답값 변환.
  • api_list 파일에 테스트 대상 API 등록 후, mitmproxy 실행.
  • /api/data, /api/data2 등 필드별 null 주입을 자동화하여 테스트.
  • 에러 바운더리(Error Boundary) 적용을 통해 null exception 방지.

결론

  • 카오스 엔지니어링은 QA 테스트와 구분되는 비정상 상황 대응 전략으로, mitmproxy와 같은 도구를 활용해 자동화된 장애 테스트를 구현해야 합니다.
  • 정기적인 검증 프로세스에러 바운더리 적용을 통해 시스템의 복원력 강화사용자 경험 보장이 가능합니다.