소중한 사진/영상 데이터는 어디에?
어디, 어떻게 저장할까?
그냥 메모와 같은 텍스트 형태의 데이터는 관계형 데이터베이스의 text 필드에 저장하면 되지만, 동영상과 사진 같은 미디어 데이터를 어떻게 저장할지 고민된다. 왜냐면 용량도 크고, 서비스를 만드는 나에게는 그게 전부 크나큰 비용이 되어버리기 때문이다.
그래서 어떻게 미디어 데이터 저장을 할건지 고민이 든다. 결정하기 위해
개발 api가 쉬운가
서비스가 안정적인가
비용 얼마나 드는지
용량 제한이 있는가
이정도를 고민하기로 했다.
그냥 로컬에 저장해버리면 안되나?
기본적으로 이 서비스는 데이터가 쉽게 소실되면 안된다고 생각한다. 앱 데이터(로컬)에 저장을 해버리면 앱을 지우면, 데이터까지 같이 사라져버리기 때문에 로컬이 아닌 클라우드에 미디어 데이터 저장을 하는게 맞지 않을까 생각했다.
후보군?
AWS Bucket
Supabase
Firebase
Wasabi
정도로 추려본 다음, 여러가지 요소를 비교하기로 했다.
항목 | AWS S3 | Supabase | Firebase Storage | Wasabi |
---|---|---|---|---|
저장 용량 | 무제한 (과금 기반) | 2GB (무료 플랜) | 1GB (무료 플랜) | 무제한(저렴한 요금: $5.99/1TB/월) |
무료 전송량 | 1GB/월 (그 이상은 과금) | 2GB/월 | 10GB/월 | 다운로드 무제한 (업로드만 유료 용량 포함) |
파일 크기 제한 | 사실상 없음 | 파일당 50MB 제한 | 파일당 5GB | 5TB 이상 가능 |
영상 스트리밍 지원 | HLS/DASH 가능 (직접 설정 필요) | 없음 | 제한적 지원 | 직접 설정 가능 (S3 호환) |
권한 제어 | IAM, 정책 등 매우 유연 | RLS 기반 간단 설정 | Firebase Auth 기반 설정 | S3 방식 정책 지원 |
직접 URL 접근 | Presigned URL 지원 | Presigned URL 지원 | 다운로드 URL 발급 가능 | Presigned URL 방식 동일 |
연동 난이도 | 높음 (복잡하지만 유연함) | 낮음 (DB 통합 쉬움) | 낮음 (앱 연동 최적화) | 중간 (S3 SDK 활용, 문서 충분) |
비용 구조 | 저장 + 요청 + 전송 모두 과금 | 저장/전송 무료 범위 내 무료 | 저장/전송 무료 범위 내 무료 | 고정 저장 요금 (다운로드 무료) |
요래요래 비용을 따지면 Wasabi에 저장하는게 좋지않을까 싶다. 그런데 또 MVP 차원에서 너무 일을 벌리고 있지 않은가 싶기도 하고, 제일 만들기 수월한 Supabase로 시작하고 천천히 Wasabi로 마이그레이션 하는 것도 괜찮지 않을까 싶다.