피드로 돌아가기
올리브영 테크블로그Backend
원문 읽기
버그가 아니라 장애를 잡아라!! QA와 카오스 엔지니어링의 만남
올리브영이 mitmproxy 기반 프록시를 도입해 API 응답의 null 값 주입 테스트를 자동화해 null exception 장애 사전 발견
AI 요약
Context
이커머스 서비스는 24시간 운영되는 환경에서 예측 가능한 장애(DB 다운, 네트워크 지연, null 응답 등)가 발생해도 사전 테스트 없이는 실제 서비스 중단으로 이어진다. 올리브영은 과거 API 응답의 특정 필드가 null인 상황에서 null exception으로 인해 전체 페이지 렌더링이 실패하는 장애를 경험했다.
Technical Solution
- null 값 주입 테스트 방식 선택: Chrome DevTools Overrides, Charles/Fiddler 프록시 등 기존 방식의 수동 작업 한계를 인식하고 자동화 가능한 mitmproxy 도입
- mitmproxy의 response() 함수 활용: 테스트 대상 API 목록 파일을 로드하고 HTTP 응답을 가로채서 JSON 필드 값을 순차적으로 null로 변환
- 자동 필드 순회 구현: "data" 필드 하위의 모든 키를 리스트화하고 필드_인덱스 변수로 각 필드를 하나씩 null로 주입하며 반복 테스트
- 모바일 기기와 프록시 연결: 테스트 대상 모바일 기기의 네트워크 프록시 설정을 mitmproxy로 지정해 실제 앱 사용 흐름에서 응답 변조 테스트 수행
- Error Boundary 구현: React 컴포넌트의 Error Boundary를 도입해 null exception 발생 부분만 격리하고 대체 UI 표시
Key Takeaway
카오스 엔지니어링에서 비정상 상황(null 응답, 리소스 고갈, 네트워크 단절 등) 테스트를 수동이 아닌 자동화된 프록시 수준에서 수행하면 정상 동작만 검증하는 기존 QA 프로세스의 사각지대를 해소할 수 있다. 프로세스 자동화를 통해 일회성이 아닌 정기적인 검증이 가능해져야 서비스 안정성 강화가 지속 가능하다.
실천 포인트
API 응답이 간헐적으로 null 값을 반환하거나 필드가 누락되는 환경에서 mitmproxy의 response() 함수로 자동 필드 순회 루프를 구현하면 수백 개의 필드 조합을 수동 테스트 없이 검증할 수 있으며, 발견된 null exception 취약점을 React Error Boundary로 격리하면 사용자 경험 영향을 최소화할 수 있다.