why I hate deployments on servers
is something you might know about, as most web developers have to deploy at some point to production
Table of contents
and I'm directly talking about deployment platforms such as Vercel, Netlify, Cloudflare as well as libraries or frameworks such as NextJS, Remix, ViteJS and others.
Most of those talk about saving time and enabling businesses to focus on creating products, without having to worry about anything else, as the mighty cloud does the magic of handling server logic.
When you're developing single apps, most of the big problems don't reveal themselves. However most apps as long as they keep receiving new features increase in complexity and managing as well as delivery starts to take big hits in resources use, developer time and budget requirements.
One of the most expensive factors when it comes to producing digital products or services, aka websites, web apps or other kind of software, is the budget required to put together a team of specialists (front-end developers, back-end developers, testers, managers, business analysts and many more). This alone without the help of cloud platforms and libraries/frameworks, comes with its own problems to deal with. Nobody wants extra problems, yet they appear.
Yes, the friendly foe is localhost, aka where web developers spend most of their time. This is where most features and tasks happen as they should, where most things behave as expected.
Until you start deploying. That's where the battle between the concept of localhost and cloud deployment begins. Firstly, unless we talk about a "TODO App" or some other app of similar effort and complexity, I can tell you that
I can't remember one single moment, one single time
where I've deployed any medium to complex app, on any of the cloud providers I've worked with or at least tried to work with, and a gazillion problems didn't arise. Every single time I had to brace myself, face the fear of having to go one more time through this nightmare, and prepare to tackle one by one all the problems I've never asked to have to encounter and lose days or weeks of my time to deal with them.
If I use a library and mark it with the version as "@latest", Cloudflare does not complain, and always picks up the latest. You assume Vercel would do the same, but it doesn't. It picks up the latest first time, than caches it and if the library has a new update, good luck with finding out why your app is not working as expected.
This is just one example and there are hundreds that I've encountered, and tens of thousands, if not more, that we, web developers as a collective have encountered.
When I develop a website if a specific feature, I must test it throughly and consider all the aspects and cover all the cases that it works or that it is not supposed to work. Provided that we know what it does and what it doesn't, we can manage expectations.
I believe that companies such as Vercel, Cloudflare or others prioritise shipping features that only work for specific scenarios, and don't spend enough time to validate the way they work with the community, leading to days to weeks of lost time debugging something promised as "it just works".
Is any of those companies held accountable for the direct loses the users face during creating digital value? Of course not. I've never heard about it.
My strong feeling is that marketing is prioritised. Yes, push it live, sell sell sell. Don't care about our users, care about our bank accounts more, that's the priority.
Another big LIE is Self Hosted Supabase, and there is too much to talk about it, so I'll reserve that for a dedicated story. There is nothing FREE about using the Open Source Supabase other than lost potential and heavy limited.
When I was working for a big beverages brand, think Johnnie Walker and others, the deployment process of specific parts of the website was taking 15 to 20 minutes all the time, or more.
That's because everyone were following so called "best practices".
In a similar scenario, although 5 to 10 times better, I found myself when using "NX" to build monorepo solutions. However deploying any change to my applications on the web, which were complex, but far away from truly complex apps, would take 3 to 5 minutes on average, on Vercel.
I've tried Coolify, yes, the mighty coolify. Firstly, deploying server rendered AstroJS projects never worked while I kept trying it, even though the deployment would succeed and not fail. A build on my VPS would take 3 to 5 minutes for very simple apps, and longer than 10 - 15 minutes for medium to complex apps.
In the world of rapid prototyping, development and deployment, this feels like a constant blocker.
If I am to go into every detail it' would take me weeks just to share those stories.
I needed a solution that make sense and it's practical so ...
On a very basic VPS, think of the cheapest one, lik $3 to $6 per month, my current deployment time for apps in my monorepo, ranges from 30 seconds to 1 minute. I call this a big change.
On very powerful machines, the deployment time goes down to 10 to 15 seconds. I really want to see how many companies can truly achieve this performance. When content editors make a change or addition, and press the deploy latest changes, less than a minute later it's live. When a web developer made a change and deploys it as a structure or feature change, less than a minute later it's live.
Best of all, when a user visits a public page, the load and render time averages 100ms. That's multiple times faster than you can blink.
When a user is logged in and uses private routes, the interaction time is usually under 1ms. That's faster than you can think of it.
And yes, I'm a performance freak, and I love users to experience the best of using an application, so they can focus on the reason they use it, and not even notice how it works and where it fails. Instant feedback is ideal.
What is your experience looking like as a user or product/service developer?