목록 보기
[코드가 환경을 모르는 구조 6/7] 컨테이너는 왜 폭발하는가
데브옵스

[코드가 환경을 모르는 구조 6/7] 컨테이너는 왜 폭발하는가

flex
flex
2026년 5월 12일

두줄요약

실제 DB를 쓰는 통합 테스트가 dirty context로 컨테이너를 복제하며 느려지는 문제를 다루었습니다. Gradle BuildService로 컨테이너를 공유하고 모듈별 스키마를 분리하는 해법을 소개했습니다.

핵심 내용

  • Testcontainers 기반 통합 테스트가 실제 DB 신뢰성은 높지만, 컨텍스트 분화로 컨테이너가 복제되며 속도가 급격히 저하되는 문제
  • Spring의 @MockBean, @DirtiesContext, 모듈별 설정 차이로 dirty context가 늘어나 CI 시간과 자원 사용이 악화되는 구조
  • Gradle BuildService를 빌드 수준 싱글턴으로 사용해 컨테이너를 하나만 공유하고, 모듈별 논리 DB와 Liquibase로 스키마를 분리하는 해법
  • 테스트 코드는 인프라 위치를 모르고, BuildService가 접속 정보와 생애주기를 담당하는 역할 분리

적용해볼 점

  • 실제 DB가 필요한 통합 테스트는 유지하되, 컨테이너 공유와 데이터베이스 수준 격리 전략 검토
  • 모듈별 테스트 인프라 생애주기를 빌드 스코프로 묶는 방식 검토
  • dirty context를 유발하는 테스트 설정 요소 점검

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...