Docker의 Testcontainers Cloud 마스터하기: 컨테이너로 통합 테스트 간소화하기

Docker의 Testcontainers Cloud 마스터하기: 컨테이너로 통합 테스트 간소화하기

Testcontainers Cloud로 테스트 워크플로를 자동화, 확장, 최적화해볼게요.

출처: 문서

본문

Testcontainers Cloud는 Testcontainers를 사용해 통합 테스트를 실행하는 과정을 간소화하고 개선하도록 설계된 클라우드 기반 솔루션이에요. Testcontainers는 개발자가 데이터베이스, 메시지 브로커, 테스트에 필요한 기타 서비스 같은 컨테이너화된 의존성을 쉽게 띄울 수 있게 해주는 오픈소스 프레임워크예요. Testcontainers 기반 서비스의 관리를 클라우드로 옮김으로써 Testcontainers Cloud는 성능을 최적화하고 로컬 머신이나 CI 서버의 리소스 제약을 줄이며 일관된 테스트 환경을 보장해요. 이 솔루션은 로컬에서 컨테이너를 관리하는 일반적인 오버헤드 없이 확장 가능하고 격리되며 안정적인 테스트가 가능하게 하므로, 복잡한 분산 시스템을 작업하는 팀에게 특히 유용해요.

배우게 될 내용

  • Docker Testcontainers Cloud의 기초와 통합 테스트에서의 역할 이해하기
  • 다양한 환경에서 자동화된 테스트를 위해 Docker Testcontainers Cloud를 설정·구성하는 방법 배우기
  • Testcontainers Cloud가 CI/CD 파이프라인과 통합해 테스트 워크플로를 간소화하는 방법 탐구하기

도구 통합

Docker Desktop, GitHub Actions, Jenkins, Kubernetes 및 기타 CI 솔루션과 잘 작동해요.

Docker Pro, Team, Business 구독에는 Testcontainers Cloud 런타임 분이 포함되며, 추가 분은 사용량 기반 가격으로 제공돼요. Testcontainers Cloud 런타임 분은 월 단위로 이월되지 않아요.

누구를 위한 가이드인가요?

  • 클라우드 네이티브 어플리케이션을 구축하고 이미 Testcontainers 오픈소스를 사용 중인 팀
  • 지속적 테스트를 위해 자동화된 컨테이너 기반 테스트를 CI/CD 파이프라인에 통합하는 DevOps 팀
  • 포괄적인 통합 및 엔드투엔드 테스트를 위한 확장 가능하고 일관된 테스트 환경을 원하는 QA 팀
  • 마이크로서비스와 데이터베이스를 테스트하기 위한 안정적인 컨테이너화 테스트 환경이 필요한 개발자

왜 Testcontainers Cloud인가요?

Testcontainers Cloud는 컨테이너 관리를 클라우드로 오프로드해 Testcontainers를 사용한 통합 테스트를 최적화하도록 설계된 강력한 클라우드 기반 솔루션이에요. 전통적인 로컬 및 CI 기반 테스트의 한계를 극복하는 데 도움이 되며, 일관된 환경, 더 빠른 테스트 실행, 확장 가능한 워크플로를 보장해요. Testcontainers를 처음 접하든 기존 설정을 개선하려고 하든 Testcontainers Cloud는 컨테이너화된 테스트를 관리하는 원활한 방법을 제공해 개발 파이프라인의 효율성과 안정성을 향상시켜요.

Testcontainers Cloud는 여러 이점을 제공해요:

  • 클라우드로 오프로드: 컨테이너 관리를 클라우드로 옮겨 로컬 리소스를 확보해 내 노트북을 반응성 있게 유지해요.
  • 일관된 테스트 환경: 테스트가 격리되고 안정적인 환경에서 실행되게 보장해 개발부터 CI까지 플랫폼 간 불일치를 줄여요.
  • 확장성: 로컬이나 CI 리소스에 제한받지 않고 동시에 많은 수의 컨테이너를 실행할 수 있게 해줘요.
  • 더 빠른 CI/CD 파이프라인: Turbo-mode 기능으로 여러 온디맨드 클라우드 워커에 컨테이너를 오프로드해 구성 병목을 줄이고 빌드 시간을 단축해요.

Testcontainers Cloud는 컨테이너 관리를 클라우드로 오프로드해 통합 테스트를 간소화하고, 일관된 환경과 더 빠른 테스트 실행을 보장하며 리소스 부담을 줄여, Testcontainers 기반 워크플로의 안정성을 향상시키는 필수 도구예요.

Docker의 Testcontainers Cloud 설정하기

이 데모는 Testcontainers Desktop 어플리케이션을 사용해 Docker의 Testcontainers Cloud를 로컬 개발 환경에서 작동하도록 설정하는 과정을 보여줘요. 이 워크스루가 끝나면 Testcontainers Cloud가 실행되어 로컬 머신에서 클라우드로 컨테이너 관리를 오프로드해 더 효율적인 테스트가 가능해져요.

  • 로컬 개발 환경과 원활하게 통합되도록 Testcontainers Cloud와 CLI를 설치·구성하기
  • 로컬 테스트 중 클라우드 기반 컨테이너를 모니터링·관리하도록 Testcontainers Desktop 어플리케이션을 설정·구성하기
  • 클라우드 기반 컨테이너 리소스를 활용하는 Testcontainers로 통합 테스트를 만들고 실행하기
  • Testcontainers Cloud가 정리를 자동화하고 일관된 테스트 환경을 보장하는 방법을 이해하며 컨테이너를 효율적으로 모니터링·관리하기
  • Testcontainers Cloud 대시보드에서 모니터링과 트러블슈팅 옵션 검토하기

CI 파이프라인에서 Testcontainers Cloud 구성하기

이 데모는 GitHub Workflows를 사용해 Testcontainers Cloud를 CI(Continuous Integration) 파이프라인에 원활하게 통합하는 방법을 보여줘요. 이는 로컬이나 CI 러너 리소스에 과부하를 주지 않고 컨테이너화된 통합 테스트를 실행하기 위한 강력한 솔루션을 제공해요. GitHub Actions를 활용하면 개발자가 클라우드에서 테스트용 컨테이너를 띄우고 관리하는 과정을 자동화해 더 빠르고 안정적인 테스트 실행을 보장할 수 있어요. Testcontainers Cloud 인증 설정 및 워크플로 추가 같은 몇 가지 구성 단계만으로 컨테이너 오케스트레이션을 클라우드로 오프로드할 수 있어요. 이 접근법은 파이프라인의 확장성을 높이고 테스트 전체의 일관성을 보장하며 리소스 관리를 단순화해, 현대의 컨테이너화된 개발 워크플로에 이상적인 솔루션이에요.

  • 프로젝트의 빌드와 테스트를 자동화하는 GitHub Actions 워크플로를 설정하는 방법 이해하기
  • GitHub Actions 안에서 Testcontainers Cloud를 구성해 컨테이너화된 테스트를 클라우드로 오프로드하고 효율성과 리소스 관리를 개선하는 방법 배우기
  • Testcontainers Cloud가 GitHub 워크플로와 통합해 데이터베이스, 메시지 브로커 같은 컨테이너화된 서비스를 요구하는 통합 테스트를 실행하는 방법 탐구하기

흔한 도전과 질문

Testcontainers Cloud는 오픈소스 Testcontainers 프레임워크와 어떻게 다른가요?

오픈소스 Testcontainers가 Docker 컨테이너로 감싼 실제 서비스로 로컬 개발 및 테스트 의존성을 부트스트랩하기 위한 경량 API를 제공하는 라이브러리인 반면, Testcontainers Cloud는 이 컨테이너들을 위한 클라우드 런타임을 제공해요. 이는 로컬 환경의 리소스 부담을 줄이고 특히 CI/CD 워크플로에서 더 큰 확장성을 제공하며, 조직 전반에 걸쳐 일관된 Testcontainers 경험을 가능하게 해요.

Testcontainers Cloud로 어떤 유형의 컨테이너를 실행할 수 있나요?

Testcontainers Cloud는 Testcontainers 프레임워크와 함께 보통 사용하는 모든 컨테이너를 지원해요. 여기에는 데이터베이스(PostgreSQL, MySQL, MongoDB), 메시지 브로커(Kafka, RabbitMQ), 통합 테스트에 필요한 기타 서비스가 포함돼요.

Testcontainers Cloud를 사용하려면 기존 테스트 코드를 바꿔야 하나요?

아니요, 기존 테스트 코드를 바꿀 필요가 없어요. Testcontainers Cloud는 오픈소스 Testcontainers 프레임워크와 원활하게 통합돼요. 클라우드 구성이 설정되면 코드 변경 없이 클라우드에서 컨테이너를 자동으로 관리해요.

프로젝트에 Testcontainers Cloud를 어떻게 통합하나요?

Testcontainers Cloud를 통합하려면 Testcontainers Desktop 앱을 설치하고 메뉴에서 Testcontainers Cloud와 함께 실행 옵션을 선택해야 해요. CI에서는 Testcontainers Cloud 에이전트를 다운로드하는 워크플로 단계를 추가해야 해요. 로컬에서는 Testcontainers Desktop 앱으로 Cloud 런타임을 활성화하거나, CI에서는 Testcontainers Cloud 에이전트를 설치하는 것 외에 코드 변경은 필요 없어요.

CI/CD 파이프라인에서 Testcontainers Cloud를 사용할 수 있나요?

네, Testcontainers Cloud는 CI/CD 파이프라인에서 효율적으로 작동하도록 설계됐어요. Testcontainers 라이브러리로 띄우는 컨테이너를 클라우드로 오프로드해 빌드 시간과 리소스 병목을 줄여, 지속적 테스트 환경에 완벽하게 맞아요.

Testcontainers Cloud를 사용하면 어떤 이점이 있나요?

주요 이점은 로컬 머신과 CI 서버의 리소스 사용 감소, 확장성(성능 저하 없이 더 많은 컨테이너 실행), 일관된 테스트 환경, 중앙 집중식 모니터링, Docker-in-Docker나 특권 데몬 실행의 보안 우려를 없앤 쉬운 CI 구성이에요.

Testcontainers Cloud는 모든 프로그래밍 언어를 지원하나요?

Testcontainers Cloud는 오픈소스 Testcontainers 라이브러리와 작동하는 모든 언어(Java, Python, Node.js, Go 등)를 지원해요. 프로젝트가 Testcontainers를 사용하는 한 Testcontainers Cloud로 오프로드할 수 있어요.

Testcontainers Cloud에서 컨테이너 정리는 어떻게 처리되나요?

Testcontainers 라이브러리가 컨테이너 수명주기 관리를 자동으로 처리하는 반면, Testcontainers Cloud는 할당된 클라우드 워커 수명을 관리해요. 즉 컨테이너는 Testcontainers 라이브러리에 의해 띄워지고, 모니터링되며, 테스트 완료 후 정리되고, 이 컨테이너들이 실행되던 워커는 Testcontainers Cloud에 의해 약 35분의 유휴 기간 후 자동으로 제거돼요. 이 접근법은 개발자가 컨테이너와 관련 클라우드 리소스를 수동으로 관리하지 않게 해줘요.

Testcontainers Cloud에 무료 티어나 가격 모델이 있나요?

Testcontainers Cloud의 가격 세부사항은 가격 페이지 에서 확인할 수 있어요.

더 알아보기 (Learn more)

  • Testcontainers 개요
  • Testcontainers Cloud
  • Docker CI/CD