피드로 돌아가기
BentoS3: a lightweight S3-compatible server for local development and tests
Dev.toDev.to
DevOps

Container-free S3 Mocking을 통한 통합 테스트 피드백 루프 가속화

BentoS3: a lightweight S3-compatible server for local development and tests

Yvan Guekeng Tindo2026년 5월 15일7intermediate

Context

기존 MinIO 기반 로컬 환경의 버전 종속성 및 무료 버전 기능 제한으로 인한 환경 불안정성 발생. 통합 테스트 시 S3 연동을 위해 컨테이너를 강제함으로써 발생하는 셋업 비용 및 무거운 테스트 환경으로 인한 피드백 루프 지연 문제 직면.

Technical Solution

  • Full-scale Object Storage 대신 로컬 개발 및 테스트에 최적화된 Practical Subset API 설계
  • Node.js 라이브러리 형태의 Embeddable 구조를 채택하여 컨테이너 없이 프로세스 내에서 S3 서버 구동
  • MemoryAuthStore 도입을 통해 테스트 실행 시 인증 정보를 메모리 내에서 관리하는 가벼운 인증 체계 구축
  • Port 0 할당 방식을 통한 동적 포트 바인딩으로 병렬 테스트 환경의 포트 충돌 방지
  • Raw Request Stream 처리를 위해 Body Parser 이전 단계에 S3 Route를 마운트하는 파이프라인 설계
  • Local Filesystem 기반의 데이터 저장소 구현으로 별도의 외부 인프라 의존성 제거

1. 통합 테스트 속도 저하 시 컨테이너 의존성을 제거하고 프로세스 내 Embeddable Mock 서버 도입 검토

2. 모든 API 명세를 구현하기보다 실제 도메인에서 사용하는 필수 API(List, Put, Get 등) 위주로 우선 구현

3. 병렬 테스트 환경 구축 시 하드코딩된 포트 대신 Dynamic Port 할당 메커니즘 적용

원문 읽기