MinIO: 로컬에서 S3를 대체하는 경량 오브젝트 스토리지
🪣 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 비교
| 항목 | LocalStack | MinIO |
|---|---|---|
| 목적 | 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) 특화 테스트 및 운영에 적합
환경에 맞게 둘을 조합하여 활용한다면, 클라우드 의존도를 줄이면서도 안정적인 개발 및 테스트 환경을 만들 수 있습니다.