Where are the valuable photo/video data?
Where and how should I store it?
Plain text data, like notes, can be saved in the text field of a relational database, but I find myself wondering how to store media data such as videos and photos. This is because their size is large, and for me, who is creating the service, that results in huge costs.
So I'm pondering how to store media data. To decide, I considered the following:
Is the development API easy?
Is the service stable?
How much does it cost?
Is there a size limit?
I've decided to think about these points.
Can’t I just store it locally?
Basically, I think this service should not easily lose data. If I store it in app data (locally), if the app is deleted, the data will also disappear, so I thought it would be better to store media data in the cloud rather than locally.
Candidates?
AWS Bucket
Supabase
Firebase
Wasabi
I narrowed it down to this and decided to compare various factors.
Item | AWS S3 | Supabase | Firebase Storage | Wasabi |
---|---|---|---|---|
Storage Capacity | Unlimited (based on billing) | 2GB (free plan) | 1GB (free plan) | Unlimited (affordable rate: $5.99/1TB/month) |
Free Transfer Limit | 1GB/month (billed beyond this) | 2GB/month | 10GB/month | Unlimited downloads (only uploads count towards paid capacity) |
File Size Limit | Practically none | 50MB per file limit | 5GB per file | Over 5TB possible |
Video Streaming Support | HLS/DASH possible (requires direct configuration) | None | Limited support | Direct configuration possible (S3 compatible) |
Access Control | Very flexible with IAM, policies, etc. | Simple settings based on RLS | Settings based on Firebase Auth | Supports S3 style policies |
Direct URL Access | Supports Presigned URL | Supports Presigned URL | Can issue download URL | Same as Presigned URL method |
Integration Difficulty | High (complex but flexible) | Low (easy DB integration) | Low (optimized for app integration) | Medium (use S3 SDK, ample documentation) |
Cost Structure | Charging for storage + requests + transfers | Free within storage/transfer limits | Free within storage/transfer limits | Fixed storage fee (downloads free) |
If I calculate costs like this, it seems that storing in Wasabi might be a good idea. However, on the MVP front, I wonder if I'm taking on too much work, and I also think it might be good to slowly migrate to Wasabi.
According to the previous roadmap, I wanted to attach something that could track user metrics (churn rate). I'm considering whether using Firebase would be convenient in that regard.
For now, the conclusion is to go with Firebase, and when the significant usage increases and I have to consider migration, I'll gradually start moving to Wasabi.