카오스 엔지니어링: 올리브영의 서비스 안정성 확보를 위한 Application Level 테스트 적용 사례
🤖 AI 추천
이 콘텐츠는 서비스의 안정성을 높이기 위해 카오스 엔지니어링을 도입하려는 백엔드 개발자, SRE 엔지니어, QA 엔지니어에게 특히 유용합니다. 또한, 실제 장애 상황에 대비하고 시스템 복원력을 강화하는 방법을 배우고 싶은 모든 개발자에게 추천합니다.
🔖 주요 키워드

핵심 기술: 이 글은 이커머스 서비스의 안정성을 높이기 위해 '카오스 엔지니어링'을 도입하고, 특히 'Application Level' 테스트를 'mitmproxy'를 활용하여 진행한 올리브영의 사례를 상세히 소개합니다.
기술적 세부사항:
* 문제 정의: 이커머스 서비스는 24시간 운영되므로 인프라, 코드, 설정, 데이터, 휴먼 에러 등 다양한 원인으로 장애가 발생할 수 있으며, 이는 서비스 중단과 고객 불편으로 이어집니다.
* 카오스 엔지니어링 도입 배경: 예측 가능한 장애에 대한 서비스 안정성 확보를 위해 도입 결정.
* 카오스 엔지니어링의 목적: 시스템의 복원력(Resilience)을 높이고 취약점을 사전에 발견하여 개선하는 것.
* 카오스 엔지니어링 실험 유형: Application Level, Host Level, Resource Attack, Network Attack, AZ Attack, Region Attack, People Attack 등.
* 올리브영의 우선순위: Application Level, Host Level, Resource Attack.
* Application Level 테스트 사례: 'null exception'으로 인한 전체 페이지 렌더링 불가 문제를 해결하기 위해 API 응답에 null 값을 주입하는 실험.
* 테스트 목표 설정: "API의 value에 null이 넘어오더라도 해당 정보를 사용하는 영역만 노출되지 않고 서비스는 정상적으로 이용 가능해야 한다."로 명확화.
* 테스트 방법론: google overwrite contents, charles/fiddler, 실제 proxy 제작(mitmproxy), 실제 데이터 입력 중 'mitmproxy'를 이용한 proxy 제작 방식 선택.
* mitmproxy 활용: HTTP(S) 트래픽 가로채기 및 수정 도구로 활용.
* response(flow: HTTPFlow)
함수를 사용하여 API 응답 값을 변환.
* 테스트할 API 목록을 파일로 관리하고, 각 API 응답 필드에 순차적으로 null 값을 주입하는 로직 구현.
* 결과 및 향후 계획: 테스트 중 발견된 문제점을 QA팀에 리포팅하고 조치했으며, 향후 전시 영역에 에러 바운더리 적용 및 정기 검증, 프로젝트 프로세스화를 통해 null exception 방지 계획.
* 에러 바운더리: React 컴포넌트 오류 발생 시 해당 부분만 격리하여 대체 UI를 보여주고 전체 앱은 정상 작동하도록 하는 React 컴포넌트.
개발 임팩트:
* 예측 불가능한 장애 상황에 대한 시스템의 복원력 강화.
* 사전 테스트를 통해 실제 서비스 장애 시 사용자 경험에 미치는 영향 최소화.
* QA 업무의 패러다임을 '정상 동작'에서 '비정상 동작 가정'으로 확장.
* 개발자, SRE와 협업하여 서비스 안정성 및 회복력 검증 및 강화.
커뮤니티 반응: (원문에 직접적인 커뮤니티 반응 언급 없음)
톤앤매너: 개발자를 대상으로 한 기술 블로그 글로, 전문적이고 구체적인 기술 설명과 함께 실무 적용 사례를 잘 전달하고 있습니다.