Beenslab Blog

MinIO: 로컬에서 S3를 대체하는 경량 오브젝트 스토리지

beenchangseo·2025년 2월 20일Hits

🪣 MinIO: 로컬에서 S3를 대체하는 경량 오브젝트 스토리지

이전 포스팅에서는 LocalStack을 활용해 폐쇄망에서도 AWS 서비스를 테스트할 수 있는 방법을 소개했습니다.

이번에는 그중에서도 특히 많이 사용하는 S3 (Simple Storage Service) 를 로컬에서 대체할 수 있는 경량 오브젝트 스토리지 MinIO에 대해 소개하려고 합니다.


✅ MinIO란?

MinIO는 AWS S3와 호환되는 고성능 오브젝트 스토리지 서버입니다.

  • S3 API 호환: 기존 S3 SDK와 거의 동일하게 사용 가능
  • 경량 실행: 단일 바이너리 또는 Docker로 간편하게 구동
  • 고성능, 고가용성: 대용량 데이터를 빠르게 처리 가능
  • 다양한 환경 지원: 온프레미스, 쿠버네티스, 하이브리드 클라우드 등

S3의 핵심 기능인 버킷, 오브젝트 업로드/다운로드, 버전 관리 등을 모두 지원하며, 로컬 테스트는 물론 실제 운영 환경에서도 사용할 수 있을 만큼 성능이 좋습니다.


💻 설치 방법

1. Docker로 실행

bash
복사편집
docker run -p 9000:9000 -p 9001:9001 \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=password" \
  -v ~/minio/data:/data \
  minio/minio server /data --console-address ":9001"

  • 9000: S3 API 요청 포트
  • 9001: 웹 콘솔 포트

웹 브라우저에서 http://localhost:9001 접속 후 로그인하면 S3와 유사한 콘솔을 사용할 수 있습니다.

2. CLI 설치 (mc)

MinIO는 자체 CLI인 mc(MinIO Client)를 제공합니다.

bash
복사편집
brew install minio/stable/mc  # macOS

3. CLI 연결

bash
복사편집
mc alias set local http://localhost:9000 admin password

4. 버킷 생성 및 파일 업로드

bash
복사편집
mc mb local/my-bucket
mc cp ./test.jpg local/my-bucket
mc ls local/my-bucket


🧑‍💻 S3 SDK와의 호환성

MinIO는 AWS S3 SDK를 거의 그대로 사용할 수 있습니다. 예를 들어 Node.js에서는 다음과 같이 설정할 수 있습니다:

ts
복사편집
const s3 = new AWS.S3({
  endpoint: 'http://localhost:9000',
  accessKeyId: 'admin',
  secretAccessKey: 'password',
  s3ForcePathStyle: true, // 중요
  signatureVersion: 'v4',
});

버킷 생성, 객체 업로드 등은 기존 AWS S3 코드와 동일하게 사용할 수 있습니다.


🧪 LocalStack vs MinIO 비교

항목LocalStackMinIO
목적AWS 전체 서비스 에뮬레이션S3 전용 오브젝트 스토리지
설치/실행Docker 기반, 설정 다소 복잡단일 바이너리 or Docker로 매우 간단
S3 외 서비스 지원O (SQS, SNS, Lambda 등)X
API 호환성AWS 공식 CLI 사용 (awslocal)AWS SDK와 100% 호환 (s3 전용)
폐쇄망 테스트가능가능
성능 및 운영성테스트 목적 위주실제 운영 환경도 가능

🚀 언제 MinIO를 사용하면 좋을까?

  • S3만 필요한 경우 (예: 이미지 업로드, 백업 파일 저장 등)
  • AWS 종속성을 줄이고 싶은 로컬 개발 환경
  • 성능 위주의 오브젝트 저장소가 필요한 온프레미스 환경
  • 쿠버네티스 기반 오브젝트 스토리지가 필요한 경우

특히 망분리 환경에서 파일 업로드 기능을 개발할 때, MinIO + S3 SDK 조합은 실제 운영 환경과 거의 동일한 경험을 제공합니다.


🧠 마무리하며

MinIO는 단순한 S3 대체 도구를 넘어, 클라우드-온프레미스-로컬 어디서든 유연하게 활용할 수 있는 오브젝트 스토리지의 유연한 해답입니다.

  • LocalStack은 다양한 AWS 서비스의 통합 테스트에 적합
  • MinIO는 오브젝트 스토리지(S3) 특화 테스트 및 운영에 적합

환경에 맞게 둘을 조합하여 활용한다면, 클라우드 의존도를 줄이면서도 안정적인 개발 및 테스트 환경을 만들 수 있습니다.