In the beginning was the server. The last one I ever bought was from Dell; I can remember hauling it out of the cardboard and sliding it into the rack. I pinched a finger badly enough that there was blood on the floor. Then I had to argue with the sysadmin over Debian vs Red Hat.
So, now that we have cloud biggies like the three companies named in the first paragraph [disclosure, I work for AWS] nobody has to shed blood deploying servers. Even more important, nobody has to find the money to buy the suckers.
But you do still have to have those arguments about operating systems, and how much memory, and the load-balancing setup, and how many servers in the rack. Except maybe not, with Lambda and its competitors.
GAE · I can remember when Google App Engine came out. I was working for Sun then and totally in love with the idea. When I write server-side code I want to think about handling HTTP requests and passing messages and updating databases. I totally don’t care about operating systems and web servers and mostly I don’t even care that much about frameworks like Node and Rails and so on.
Later, when I worked for Google, I wrote a couple of App Engine apps and that was mostly OK; the APIs were nicely-thought-out, but I could never get comfy with the built-in datastore. I honestly don’t know whether Google sees App Engine as a success these days; but way too many people are still configuring operating systems.
Functions · So the new idea, initially from Lambda, now from all the Cloud heavyweights, is that the natural unit of computation is a function, which runs in response to an “Event”. An Event could obviously be an HTTP request, but it could also be a message in a queue or an upload arriving in a datastore. If you’re using CloudWatch Events on AWS [Yay, I helped write that] the Event can be, well, more or less anything that happens in your Cloud deployment.
The first time I got excited was when this engineer who sits near me told me about his wife’s website; she’s a photographer and sells pictures, which occasionally gets high-volume when she shoots classrooms or graduations or whatever.
He was running her site on some low-rent Web framework on EC2 and it cost him under $10/month. Then he re-wrote it as a bunch of static files and a couple of Lambda functions which among other things called out to their payment processor. There was a whole lot less code, and suddenly the bills were under 10¢.
Well OK then, you’ve got my attention now.
Functions? · I think there’s a lot to like about the function as the natural unit of cloud computation. Statelessness is good. No local storage is good. Not much need for proprietary APIs is good.
Are they the whole solution? Obviously not; every Lambda I’ve ever looked at is mostly callouts to databases and REST endpoints and messaging APIs. But they really do mean that you never have to argue Debian vs Red Hat again, and that feels like real progress.
I should disclose that I don’t work on Lambda, although code I wrote is helping send lots of events from AWS services I didn’t write to Lambda functions I didn’t write.
I guess saying that functions are cool is about the safest thing ever, what with Google and Microsoft piling on board. If you haven’t given them a try yet, go ahead, there’s really not much to it.