
데브옵스
실제처럼, 빠르게, 안정적으로: 에이닷 통합 테스트 환경 구축기 (WireMock + Docker + GitLab CI)
두줄요약
외부 API 의존으로 흔들리던 통합 테스트를 WireMock, Docker, GitLab CI로 분리하고 자동화했습니다. 로컬과 CI에서 같은 환경을 써 테스트 신뢰도와 개발 생산성을 높였습니다.
문제 상황
- 외부 Model Provider 직접 연동으로 인한 통합 테스트 불안정
- 서버 상태, 타임아웃, 스펙 변경으로 인한 빈번한 테스트 실패
- 로컬 DB·Redis 실행과 수동 Mock API 관리의 번거로움
원인 분석
- 외부 서비스 상태에 테스트가 종속되는 구조
- 실제 실패 원인과 외부 요인 구분의 어려움
- Mock API 변경 사항을 함께 유지보수해야 하는 부담
해결 방법
- WireMock으로 외부 API 응답을 stub 기반으로 모킹
- Docker로 WireMock, DB, Redis를 컨테이너화해 통합 테스트 환경 구성
- GitLab CI의 services와 alias로 파이프라인에서 동일한 테스트 환경 실행
적용해볼 점
- 응답 패턴 중심의 stub 정의로 에러·지연 케이스 분리
- healthcheck와 컨테이너 기반 구성으로 준비 상태 확인
- 로컬과 CI에서 같은 방식의 테스트 환경 재사용
