10% of serverless is amazing. The other 90% is a dangerous dark hole of cloud-lockin, horrible testing, poor DX and complex setup. This is why you have some greybeards swearing off serverless and huge advocates (like myself) trying to push it anywhere it'll fit.
A couple notes for each of these parties. First, for the serverless advocates:
Serverless application architectures are not simpler
Serverless eliminates/simplifies devops, so the deployment/devops becomes simpler
You have to adopt a serverless architecture for serverless to work, this is not compatible with many best-practice recommendations for common frameworks e.g. Rails
No cloud provider's best practices are actually best practice. It's in their interest to lock you in, so they'll try to bake themselves into your development/test workflows or require cloud connectivitiy for development.
Multiple languages in the same project is not a feature
Alright now for the anti-serverless crowd
Alright now that we've calmed down and recognized that serverless is not a messiah of programming and application architecture we can get to work building simple, easy-to-maintain, testable applications.
Here's the gist of what your serverless architecture must do:
Your cloud provider should handle...
I've seen people write code in a cloud provider's cloud ide and wait 2 minutes between tests. Sometimes an endpoint is connected to so many cloud services it can really only be tested in production. Sometimes there is not repo with all the endpoints, but rather many repos each containing different components of the system.
Developer experience is critical to launching quickly, you should fight to maintain fast feedback loops and testing that allows you to move quickly without worrying about the whole system breaking.
Every serverless provider must be retrofit to be an effective architecture.
Every serverless provider is trying to get you to irreversibly bake them in. You do not have to bake them in. Follow best practices except where it violates the "must run locally" doctrine and you'll probably be okay.
There are two serverless providers that I like right now:
vc dev
) to get an effective containerized/locally-run application, but it's
not difficult.I give caution for the following providers:
I don't have enough experience or heard enough about these to recommend yet:
The space is changing quickly and I'm sure I'll have to update the content here as we see new entrants and new architectures.
There's truth in the hype, but be defensive. Serverless has made my applications trivial to scale and maintain. Serverless applications I wrote 7 years ago are still running with little/no maintainence at almost no cost. I believe that Serverless can empower individuals to maintain large applications that would otherwise take a team and a consistent revenue stream.
Alright have fun out there.