DEV Community

Cover image for How I Cut My MVP's Operation Costs by 76% — And Why You Shouldn’t Do That
Zoltan Kiss
Zoltan Kiss

Posted on

How I Cut My MVP's Operation Costs by 76% — And Why You Shouldn’t Do That

Introduction: The Trap of Premature Optimization

As developers, we love to optimize things. Whether it's code performance, database queries, or infrastructure costs, we strive for efficiency. However, when it comes to launching an MVP, cost optimization can become a dangerous distraction.

I’ve been building MVPs for the past three years, focusing mainly on the technical side of things. This means that when I run into problems, my instinct is to solve them with code or infrastructure changes—even when it’s not the most strategic choice. (You know, if you have a hammer, you see nails everywhere.)

Recently, I built a new platform and found a way to cut my operational costs by 76%. While this might sound like a win, it actually slowed me down and delayed market entry.


The Project: A Marketplace Inspired by Million Dollar Homepage

The idea behind my latest project is simple: a modernized version of the famous Million Dollar Homepage, but with a built-in marketplace.

How It Works

  • The site consists of a 128×128 grid where users can upload 256×256 images into any square.
  • Unlike the original, where ad spaces were sold for a one-time fee, here users can sell and buy squares in an integrated marketplace.
  • To kickstart growth, every new user gets 1 square for free (out of a total 16,384 squares).
  • Since each visitor loads thousands of images per session, the site generates significant bandwidth usage—this became a critical cost factor.

The Storage Cost Dilemma

To keep development simple, I initially chose Convex.dev as my backend. If you haven’t heard of it, Convex is a BaaS (Backend-as-a-Service) that provides:

  • ✅ A fully managed database
  • ✅ Real-time queries and authentication
  • ✅ Built-in file storage

Convex seemed like a perfect match until I realized a key limitation:

Convex Storage Pricing

Plan Storage Bandwidth Price
Free 1GB 1GB/month $0
Pro 100GB 50GB/month $25/month
Higher tiers Custom Custom Custom pricing

Since every page visit loads thousands of images, even with moderate traffic, I’d quickly hit the bandwidth limits. For example:

  • If each visitor loads 20MB worth of images,
  • Then 2,500 visitors would exceed the Pro plan’s 50GB limit.

At first, I thought, "Okay, I’ll just upgrade when I need it." But then, I ran the numbers:

If my app scaled to 100,000 users, I’d need a custom enterprise plan, which could get very expensive.

So, I went down the cost optimization rabbit hole.


The Migration to a Cheaper Storage Solution

As I transitioned away from Convex Storage, considering a CDN solution seemed like the obvious next step. However, at this stage, it felt like overkill, so I chose to focus solely on cloud storage providers instead:

Provider Free Tier Storage Cost Bandwidth Cost Notes
Convex.dev 1GB storage, 1GB bandwidth $25 for 100GB 50GB included, then custom Simple but limited bandwidth
Cloudflare R2 No egress fees $0.015/GB Free egress Best for high bandwidth needs
AWS S3 5GB free $0.023/GB $0.09/GB egress Bandwidth cost can get expensive
Google Cloud Storage (GCP) 5GB free $0.02/GB $0.12/GB egress Cheaper to store than in AWS but higher egress fees

Why I Chose GCP

After comparing costs, Google Cloud Storage (GCP) turned out to be the most expensive option, right after Convex. However, it was still significantly cheaper than Convex. Since I was already using GCP (specifically Firebase) for authentication and analytics, it made sense to stick with it. Despite being the second priciest choice, my estimated monthly cost for similar traffic was:

  • $6/month instead of $25/month
  • No need for immediate plan upgrades
  • Scalability at a lower cost per GB

I spent 8 hours migrating my MVP’s file storage from Convex to GCP, including:

  • ✔️ Implementing GCP storage integration
  • ✔️ Updating the backend logic for file uploads
  • ✔️ Updating the frontend to fetch images from GCP
  • ✔️ Testing and debugging the changes
  • ✔️ Kept Convex for everything else as I am still in love with it 😊

Great! I cut my costs by 76%! 🎉

But here’s the problem…


Why This Was a Huge Mistake

At the time, I had exactly 0 users. Not 10, not even 1—zero.

I spent 8 hours optimizing costs for theoretical future users, when I could have spent that time on getting actual users. The entire MVP took about 80 hours to build, meaning I wasted 10% of my development time on something that didn’t matter yet.

This is the core mistake I made: I prioritized optimization over validation.

While saving money feels good, an MVP’s real goal is to validate if anyone even wants the product. A product with 100 engaged users and $25/month costs is far better than one with $3/month costs and 0 users.


The Lesson: Solve Revenue Problems First, Cost Problems Later

Cost optimization has its place, but not in the early MVP stage. Here’s what I should have done instead:

  • 1️⃣ Launch faster – Instead of optimizing, I should have gone to market immediately.
  • 2️⃣ Validate demand – If I had 100 users, then storage costs would be a real issue worth solving.
  • 3️⃣ Optimize later – Once revenue starts coming in, it makes sense to refine infrastructure costs.

Final Thoughts

If you're building an MVP, don’t fall into the same trap. Focus on:

  • Getting your first 10, 50, or 100 users
  • Testing if your idea has real demand
  • Only optimizing costs when it actually becomes a problem

Have you ever wasted time on premature optimization? I’d love to hear your experiences in the comments! 🚀

Heroku

Built for developers, by developers.

Whether you're building a simple prototype or a business-critical product, Heroku's fully-managed platform gives you the simplest path to delivering apps quickly — using the tools and languages you already love!

Learn More

Top comments (0)

👋 Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay