목록 보기
Testcontainers에 의한 docker container 생성 폭발을 막아라
데브옵스

Testcontainers에 의한 docker container 생성 폭발을 막아라

flex
flex
2024년 7월 28일

두줄요약

Testcontainers로 생기는 컨테이너 폭증과 메모리 고갈 문제를 Gradle BuildService로 줄였습니다. 하나의 컨테이너를 재사용하고 스키마 초기화 방식을 정리해 CI 시간을 크게 단축했습니다.

문제 상황

  • Testcontainers 도입 후 integration test마다 컨테이너가 과도하게 생성되는 상황
  • Spring Boot 테스트의 dirty context, 다수 모듈의 분산된 테스트, 순차 실행으로 인한 메모리 고갈과 CI 지연

원인 분석

  • 테스트마다 개별 컨테이너를 띄우는 구조로 인한 중복 기동
  • reuse 기능의 재사용 범위 통제 한계와 종료 제어 부재
  • 스키마 초기화를 ddl-auto에 의존하던 방식이 재사용 컨테이너와 충돌

해결 방법

  • Gradle BuildService로 컨테이너 라이프사이클 공유 및 자동 정리 구성
  • 하나의 MySQL 컨테이너에 여러 database variant를 생성해 테스트 재사용
  • Liquibase 기반 스키마 초기화와 ddl-auto: validate로 전환

댓글 0

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

댓글을 불러오는 중...