Interestingly lambda seems to make async IO technologies like nodejs less compelling, because throughput capacity isn’t really relevant anymore.
There is another way of looking at it: Pay for a percentage of the traffic, irrespective of how fast your application runs or what your budget is. If you reach your monthly budget because of one hacker news trending article, yeah, then no more traffic for you. It can be insane.
If I have autoscaling with an upper bound, I can stay within a fixed budget per month. If I reach my budget, yeah no more new servers, but whatever running keeps running. My business doesn't disappear, I get business continuity. Paying based on % of traffic sounds insane. How will I plan for business continuity if my monthly budget is reached with this kind of model? (without any "minimum xx requests" kind of crap free tier, business continuity means fixed upper bound AND continuing service, not OR)
If you don’t have spikiness in your traffic and provisioning for peak capacity is affordable and simple, then serverless is a bit less compelling.
[0] http://docs.aws.amazon.com/apigateway/latest/developerguide/...
To make the most of Lambda though you’ll want something that affords small code size (as there’s a 50MB limit), and has fast single execution latency.
But if you've got time critical applications maybe serverless is not for you.
Vendor lock in: The CGI standard is supported by almost every server technology. Plus bigCGI is open source and can be self hosted.
Security/Monitoring: one of my biggest challenges, but separate processes, by their nature, offer separation of resources.
Debugging: CGI scripts are super easy to run locally. I've also configured bigCGI to collect STDERR from apps.
Statelessness: CGI is a stateless standard.
If anyone is interested in this, I'd love extra eyeballs on it, especially for security. https://github.com/bmsauer/bigcgi (Please excuse the bad README, I'll update it next chance I get)
"Electric lightbulbs: candles with a new name"
https://ebooks.adelaide.edu.au/m/mill/john_stuart/system_of_...
You can say the same about Object oriented programming or func programming. separation of concerns but on the network. Server functions arent a panecea cause you still have to manage all the other pieces.
An elegant thing would be your entire app is in that single lambda but without state there goes your db. even so, people cant resist taking something and adding and adding more to it.