Back to blog
1 min readBy Kamil Bartczak

Does Your MVP Really Need the Whole Cloud?

Why moving an early-stage product from managed cloud services to a VPS cut infrastructure costs by roughly thirty times.

InfrastructureMVPCloud

When we started building our project, we instinctively went all in on the cloud: Google Kubernetes Engine, managed services, an architecture ready for future scale. On paper, everything made sense—Kubernetes, high availability, automation. The problem was that at the time our app was just an MVP: a small number of users, a small team, and fast iterations.

We were hosting the frontend, backend, databases, and test environments. Nothing more. Yet we were paying for infrastructure as if we were handling traffic at the level of a mature product. Over time, it became clear that the cost and complexity were completely misaligned with the real needs of the project.

Instead of “optimising the cloud”, we took a step back. We migrated the infrastructure to a VPS. Kubernetes stayed. Order in deployments stayed too, thanks to GitOps and Argo CD. What disappeared was the entire layer of managed services that we didn’t actually need. On a single, understandable setup, we ran the frontend, backend, databases, and test environments.

The result was unambiguous: infrastructure costs dropped by roughly thirty times.

Beyond the business and cost arguments, there’s also something simply enjoyable about it. Setting up your own VPS, running Kubernetes on it, and hosting your frontend, backend, or databases gives you a real sense of control over the system. From time to time, it’s worth going back to these fundamentals, if only to remember what’s really happening under the hood. :)

KB / PRIVACY

Your privacy. Your choice.

The website works the same whatever you decide. Analytics is off by default.

No choice saved yet

Remembering your choice

We store only your decision and its date in your browser (localStorage). Your choice lasts for 180 days. This is not an advertising identifier.

Optional analytics

With your consent, GoatCounter on our server counts pageviews, contact, CV, project, external link and Saldo download clicks, use of illustrative demos, section visibility and reading progress. Form content, searches and values entered in demos are never sent. We process the page path without queries or fragments, title, referring domain, browser, operating system, language, screen width and approximate country. Your IP address is used to handle the connection and determine the country; it is not saved in the statistics. We use no analytics cookies or session recordings. Statistics are retained for up to 180 days. Do Not Track and Global Privacy Control signals disable tracking.

You can withdraw consent at any time through Privacy settings in the footer. Withdrawal stops further tracking; it does not remove existing aggregate statistics. Rejecting does not send analytics events.

The data controller is Kamil Bartczak Software Development, Czarnowo 100, 66-600 Czarnowo, Polska, NIP 9261697200. Privacy questions: office@kamilbartczak.dev.