콘텐츠로 이동
Bluetape4k 문서1.11

테스트, 운영과 생태계

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

AbstractReactiveMongoTestMongoDBServer Testcontainer를 지연 시작하고 spring.data.mongodb.uri를 동적으로 등록합니다. 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과 설정을 고정합니다.