Serverless Pros & Cons – when should you go serverless?
Okay you've heard of serverless, tried it out, and you think it's neat. But should you really go serverless for your next project?
Most of the time ...
Serverless is a great option for most projects most of the time. You save configuration and maintenance time, gain flexibility, and in extreme cases spend more $$ per request than building your own servers.
Large apps can reach the cost curve limits of serverless. Bank of America, for example, announced $2B in savings from building their own data centers.
You won't hit those issues. And if you do, I hope there's a business model to back it up and you can afford DevOps professionals. 😛
Large orgs tend to provide a cloud or serverless-like environment internally. If you have access to that, use it.
Serverless is an ecosystem
When I say serverless, I don't mean just throwing up code on a function-as-a-service platform like AWS Lambda. I'm talking about the whole ecosystem.
The core idea is this:
- Backend does as little as possible
- Clients tie everything together
- Static files come from fast content delivery networks
- Database handles data consistency
- As much work as possible happens at compile and deploy time
Users' and developers' machines do the hard work.
Is part of your app the same for every user? Package it up at deploy time. No need to bother the server or the client with that work.
Is part of your app specific to individual users? Let the client handle it. Every phone is a powerful computer these days.
Got dynamic data that needs to synchronize across multiple sessions or users? Background processes that aren't tied to a specific session? Perfect fit for your server and database.
We go in depth about this architecture in the chapter on Serverless Architecture Principles.
The main benefit of serverless is that you don't deal with servers. They're somebody else's problem.
You save time
You focus on application code. No more tedious maintenance tasks that aren't specific to your problem.
Bye bye yak shaving. 👋
"I need an API. That means I have to run a server. Which means I need Apache or Nginx to map HTTP requests to my app server. I need a computer to run all that. Which means I have to set up a whole operating system. Then I have to make sure everything runs at boot. And if a process goes down, it needs to restart. And ..."
After all that work you get to build your application.
With serverless you save time otherwise spent managing servers. Whether that's you personally or a DevOps team in your organization.
You write backend code more productively.