목록 보기
[코드가 환경을 모르는 구조 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를 유발하는 테스트 설정 요소 점검

다음 읽기

#Testcontainers 주제를 이어서 읽기

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

실제 DB를 쓰는 통합 테스트는 신뢰도가 높지만, 컨텍스트 분화로 컨테이너가 복제되며 CI가 느려졌습니다. 이를 Gradle BuildService로 공유하고 스키마를 분리해 속도와 격리를 함께 확보했습니다.

flex
flex
데브옵스

댓글 0개

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

댓글을 불러오는 중...