Everything is a semi-rational reaction to something else.
Companies used to own and run their own machines on-premises. But doing it properly (HVAC, power, raised floors, standardized racks, management, redundancy, preparedness…) is expensive and not actually most companies’ core competency. So they moved to colocated datacenters, where a competent company would take care of the infrastructure for a fee which would hopefully reflect a discount based on savings from scale.
But managing generations of servers at colo datacenters takes manpower for hardware replacement, upgrades, cabling, and generally doing things right; the customer companies mostly don’t have that as a business feature but see it as a cost. So managed infrastructure services came up, where the datacenter company leases you the hardware (standardized so they can have spares) and racks it for you and puts in network switches and remote services and gets it to the point where all you have to do is log in to a console server and install your OS and start deployment.
But sysadmins who can keep track of security updates and package dependencies and keep an OS properly organized are relatively expensive, and what used to be
“well it works on my laptop”
“well it works in my container”
and the container itself gets shipped out. It’s cheaper not to do security work, you know. Pay attention, this is a repeating theme and it will be on the final exam for some of you. It is always cheaper not to do work up front, until it becomes more expensive to do the work later. Technical debt is real.
So VM and container accepting services come up, where the datacenter company now runs a hypervisor and managed storage systems for you, in exchange for the salary of those sysadmins. The start-up costs can be much lower, to the point where it really doesn’t make fiscal sense for any tiny company to do anything themselves except ship their containers/VMs out and puzzle over IP allocation schemes and load-balancing services.
It’s a trap, but a delicious one.
So now your company is hooked on the ease and speed and cheapness of just spinning up another container or VM any time someone expresses a desire, or even automatically, when you get the bill at the end of the month and you managed to spend how much? That’s ridiculous. Why are we getting billed for containers that we don’t even need to run all the time?
Along comes “serverless”, which is a logical successor of inetd. Yes, inetd, the very old “internet super-server” which would read a table of ports and programs, open all the ports, and when a connection came in would run your program and connect stdin/out to the socket, isn’t that great?
Serverless is just a management system that spins up your very restricted single-function program on demand – now it answers an HTTPS API instead of a raw socket – and does the accounting work to make it profitable.
Complexity is simultaneously the enemy of correctness and the source of profit.