콘텐츠로 이동
Bluetape4k 문서2.0

테스트, 운영과 생태계

최신 안정판 Bluetape4k 2.0.0 릴리스 기준

현재 테스트 구조 (Spring Boot 4.1+)

섹션 제목: “현재 테스트 구조 (Spring Boot 4.1+)”

AbstractReactiveMongoTestMongoDBServer Testcontainer를 지연 시작하고 spring.mongodb.uri를 동적으로 등록합니다. Spring Boot 4.1+에서 spring.data.mongodb.uri는 legacy namespace이며 유일한 URI key로 남으면 즉시 실패합니다. AbstractReactiveMongoCoroutineTest는 여기에 Dispatchers.IOCoroutineName을 가진 test scope를 더합니다.

ReactiveMongoOperationsCoroutinesTest는 실제 Spring Boot context와 MongoDB를 사용해 다음 흐름을 검증합니다.

  • insert와 save
  • Flow·nullable·필수 단건 조회
  • count와 exists
  • update first·multi와 upsert
  • remove, find-and-modify, find-and-remove
  • distinct와 aggregation
  • collection 존재·생성·삭제

Query DSL 세 테스트는 server 없이 BSON 구조만 비교합니다. 빠른 DSL 검증을 먼저 실행하고 Docker 통합 테스트는 다른 Testcontainers 작업과 직렬로 실행합니다.

통합 테스트는 test_users 전용 collection을 사용합니다. 테스트마다 고유한 email 같은 business key를 만들고, 자신이 만든 document만 삭제합니다. 공유 collection의 전체 개수에 의존하면 실행 순서와 병렬성에 따라 깨지기 쉽습니다.

Terminal window
./gradlew :bluetape4k-spring-boot-mongodb:test \
--no-build-cache --no-configuration-cache

이 모듈은 metric을 추가하지 않으므로 Spring Boot와 MongoDB driver의 관찰 기능을 사용합니다.

신호확인할 문제
server selection 시간topology 변화, DNS·network, primary 부재
pool wait와 in-use connectionpool 고갈, 긴 query, 느린 Flow consumer
command latency와 error codeindex 누락, timeout, duplicate key, write concern
cancellation·request latencyclient disconnect, deadline, 과도한 결과
JVM shutdown 시 active subscriptiontailable cursor와 scope 정리 누락
필요한 것시작점
Spring Data mapping + ReactiveMongoOperations + coroutine이 모듈
Spring Data repository interfaceSpring Data reactive/coroutine repository
MongoDB Kotlin driver, codec, collection API 직접 제어bluetape4k-mongodb
Spring Boot client·property·health 구성Spring Boot MongoDB auto-configuration

두 bluetape4k 모듈을 함께 사용할 수 있지만 같은 repository에서 Spring Data mapping과 native codec mapping을 무분별하게 섞지 않습니다. document wire format과 transaction/session 경계를 한 계층이 명확히 소유하도록 정합니다.

도입할 계층을 정했다면 자동 설정과 구성 경계로 돌아가 애플리케이션이 소유할 bean과 설정을 고정합니다.