Hacker News new | ask | show | jobs
Ask HN: Is Serverless Overkill?
5 points by thenorthbay 706 days ago
I just can't help observe that my developer friends increasingly build on the "low-end", serverful platforms instead of serverless. Many call serverless overkill for the (commercial) apps they want to build. Will this be an ongoing trend?

In recent years, many new serverless service providers have been released for everything (Neon – Postgres, Cloudflare D1 – SQLite-like DB, GCP Functions, Vercel edge functions, etc.). However, people have been complaining about their complexity and overkill in the beginning.

More recently, I've witnessed friends prefer serverful providers for their apps because they offer more control, and are cheaper and simpler to get started with (their words). Serverful platforms like Render, Railway, or Fly.io have also become a bit more popular.

Both approaches come with their trade offs and limitations, especially at different scale and costs.

So, which way, western man: is Serverful the Future? Quo vadis, web development?

8 comments

It's actually the reverse, to my understanding. Serverless is great for low utilization projects. Then cloud servers like EC2. Then those old school hosts with cPanel. Then running everything from your own physical servers, setting up your own backup diesel generators, putting a server in Antarctica, etc, etc.

As tech progresses, it makes the abstraction levels better for those who need less power.

Has "serverful" ever left the party? When was it less popular? On youtube or twitter? Has serverless spending actually overtaken the world?

Nothing has shifted. It might have gained some market share but that's about it.

Serverles was briefly “the future” 2016-2020ish but id say most of its enthusiasm has gone towards Kubernetes, at least in the ponds I swim in
Serverless enforces good architectural practices and is just fine for at least 80% of systems. By "just fine" I mean it leaves room for growth, puts you on a good architecture, and will have reasonable cost.

There are times though when serverless may not be a good idea:

- Atypical technology stack. If the stack you need, and actually need, isn't accounted for then you're on your own.

- Continuous, 24x7 application load. You'll have to do the cost analysis, but you may find you're better off provisioning a server.

- You want to "lift and shift" existing assets into the cloud.

Brand-new, greenfield project? Consider serverless first.

> Serverless enforces good architectural practices

I'd argue it's the opposite. Since everything gets "thrown away" per request you neglect on caching, memory leaks, subtle bugs etc.

You also need to make trade offs like focusing on cold start as opposed to peak performance etc.

Since everything gets "thrown away" as you say (though it's not per request), you actually have to focus more on caching in order to maintain any kind of session state (if required by your application).

Memory leaks are an interesting matter because, you're right: you really don't care. All the pieces parts comprising your system are continually restarting without impacting the overall resiliency of the system. In fact, quite the opposite is happening - the system is more resilient due to all the mini restarts.

You will have to learn techniques for handling cold starts, there's a few different ways to go about it and which one is appropriate, including not worrying about it at all, is dependent on your application and the cold load ramp-up experienced.

> you actually have to focus more on caching

You lose a lot of layers of caching since there's no point in it. You focus on rather poor caching, i.e. you have to use an external cache. You can't store this as part of the current session and access it for the next request, e.g. by the same user.

> you really don't care

That's on the surface. It's like having a hidden illness that only gets you when something else breaks and suddenly 100s of errors pile up.

> the system is more resilient

It pretends to be. You often get bugs that aren't so obvious and never get fixed because it's now hidden so deep.

> You will have to learn techniques for handling cold starts

The nuance here is you're learning to prefer faster cold starts at all costs including trading for warm start performance. It's making the world worse.

> External caches are resilient to total failure and the need to failover to another environment.

> Memory leaks are a non-issue - seriously, you're processing the transaction and durably storing the result and going away. I've seen systems written this way that have been running for over 20 years.

> The system is more resilient, there's no pretense to it. I have anecdotal data from many projects developed by many teams in multiple companies now that show the business disruptions have decreased and decreased considerably.

> Not all systems are affected the same way by cold starts, some aren't affected at all. You do have to plan for it and understand how cold starts affect your system and whether any remediation is required.

> It's making the world worse - that's a subjective opinion. I call faster time to delivery with fewer business disruptions better. We're currently delivering capabilities the business thought would take far longer to develop and would cost a lot more in operations costs. I call that making the world better.

> I've seen systems written this way that have been running for over 20 years.

So? History and same mistakes have repeated for centuries in many areas. Does that make it good?

> I have anecdotal data from many projects developed by many teams in multiple companies now that show the business disruptions have decreased and decreased considerably.

And so? Someone else likely has anecdotal data otherwise. How do you even show this? Was everything else the same except this "server" vs "serverless" change? That in itself is impossible unless you know how to freeze time. Lots of variables in your company are likely different every week or month. People come and go. The market changes. Etc.

> some aren't affected at all.

Like if you close your eyes and pretend it doesn't exist? Sure. If you don't care it definitely doesn't exist otherwise cold starts are always slower, the end. It's not just about the programming language, jit, VMs or anything. It's a worse outcome.

> that's a subjective opinion

It's objective based on your measures of objectiveness - as seen above.

> I call faster time to delivery with fewer business disruptions better.

Is that a given? How did you jump to this? Either approach has its complexities. I've seen "serverless" take longer to deliver.

> I call that making the world better.

How does that make it better? What does doing better than an estimate have to do with serverless? You can do that regardless.

We're here just going over the straw man. Where's your actual argument? About server vs serverless. Not something else.

Can you expand more on what these practices are, in your view?
When using serverless, you are paying more for the devops and other simplifications. Eventually the costs can outway the benefits, have seen this many times. Serverless has its place, but it is not going to usurp cloud computing norms.

I'd also say things like Neon "serverless postgres" is not really serverless. It is using serverless as the de jour marketing term for managed postgres SaaS. I can get the same thing from GCP (Cloud SQL) for much less

(Neon CEO)

What makes it not serverless in your opinion? This is our architecuture: https://neon.tech/docs/introduction/architecture-overview and no, you can not get the same from CloudSQL.

IYKYK

> ... and no...

not a great way to elicit feedback

I've built some very small and simple systems in AWS Lambda such as email newsletter scripts. With a system like that I can get close to 100% reliability, never worry about the server crashing or overloading. My RSS reader answers webhooks with Lambda -- some of these systems have been cruising for years without maintenance.
Ditto. I have some not-small systems based on s3, lambda, SNS and SQS that have been running for years without issue - just quietly, and inexpensively doing their jobs.

New stuff I’m building is putting StepFunctions in rather than Lambda if at all possible, and DDB alongside S3 for indexing. I expect these to be nearly maintenance free (no runtime updates, no package updates, TTLs to expire data).

In my opinion this depends on your goals, motivations and probably your level of exposure.

Serverless or serverful any will get the job done.

I don't like serverless development, because I need to rely on logging more and there is deployment overhead.

But for personal projects, I like its charge-by-usage model. I want my projects be cashflow positive.

We need serverless 2.0 to make it a decent system.
Yes, in 2.0 we got rid of the "less" and made it server.