Just over ten years ago, Tim Wagner walked down a chain-link fenced office corridor towards The Chop1. In his hand he held an Amazon 6-pager. Inside The Chop, already reading and annotating Wagner’s 6-pager, was Andy Jassy, then head of AWS and today CEO of the entire jungle. How stressed was Wagner feeling as he approached the door? This wasn’t a room named for charity and second chances.
Within The Chop’s walls, uncomforted by its Comfort Inn color scheme, Tim Wagner pitched. Andy Jassy was Jeff’s first ‘shadow’, having spent 18 months barely leaving the side of a man with a reputation for brilliance, micro-management, and scorn. By business magazine accounts, Jassy’s every superlative you can name. By the biographic facts, he’s a did-it-all-right Harvard grad from New York City’s upper-middle. And though his former reports will remark on his intensity, he was not likely to wither Wagner with a question of Bezos-like contempt — Are you lazy or just incompetent? Jassy was also (in one telling) the collaborative founder of AWS. In those days, all new services were conceived only with Jassy’s backing. Would Wagner’s 6-pager become a birth announcement or obituary?
Wagner’s golden moment
Wagner’s baby, AWS Lambda, emerged from the meeting with a green light — a new service was born. But what exactly had Tim pitched? Let’s situate things. Lambda was the headline release of November 2014, sandwiched between the major release of late-2013, Kinesis, and late-2015, Elastic Container Registry. Docker was two years old, and mega hot, but not yet the de facto industry standard. The idea that you’d fracture your monolith into many containerized microservices was hip and cool, but going beyond that to serverless functions was too much. So Wagner did not pitch a system to run your database or CRUD backend. “No one’s ever going to use this for video transcoding” asserted Wagner, prodded by a sales executive to further mark out the limits of the proposed service. He was wrong.
Wagner’s pitch was for an event-driven glue service. Reacting to events and performing a small amount of shuttling or transforming compute between other AWS services was its team-player role. It was originally sponsored by the AWS S3 team, born not to burn CPU cycles and print money in its own right, but instead to strengthen its peers and grow the overall AWS ecosystem.
Many will remember, and still see today, the indignation towards serverless, the scoffing that met anyone suggesting we might be done with servers. But Lambda’s 2014 announcement was mostly met with excitement and curiosity, not gatekeeping and derision. The service’s initial self-imposed limitations placed it safely and firmly in the ‘event-driven glue’ supporting role.
At launch, Lambda had the following restrictions:
- maximum 1 GiB RAM
- maximum 1 hyper-threaded vCPU core
- maximum 512 MiB filesystem space
- maximum 5 minute runtime limit
- only NodeJS runtime supported, and last, but certainly not least…
- maximum of 25 concurrent requests per account!
Lambda was from day dot a remarkable innovation in cloud computing, but obviously not ready to take-on and replace the traditional serverful compute provided by AWS EC2 VMs. In fact, Wagner was careful to avoid even suggesting the idea.
At the time, AWS offered EC2 instances with 32 vCPUs and almost 250GiB of RAM, and you could run them as long as you liked. Lambda was a pea-shooter by comparison, but really handy if you needed to reactively compute in response to changes in an S3 bucket. Over time, like the little engine that could, Lambda added more runtimes and lifted resource limits, its engineers satisfying a growing customer base’s requests with an I-think-I-can attitude, until the question could really be asked of the product’s true ambition.
It must not be named
“Don’t say serverless.”
That was a mental note Wagner carried with him to pitch-meetings and cross-team syncs. Lambda was sponsored by the S3 team and greenlit by Jassy. EC2, AWS’s largest product by revenue, was doing extremely well and had just picked up container support to ride the Docker DevOps hype train. The baby Lambda service was a team-player, and in no position to cannibalize its teammates.
Werner Vogels, CTO of Amazon, did not mention the word in his personal blog post announcing the innovative service. The Hackernews comment thread for the RE:Invent announcement does not mention it either — that thread is instead peppered with people thinking of using it to replace their task queues.
Though it was certainly a concept marinating in the mind of Wagner and some engineers, no servers vs. serverless architectural battle began. Who then popularized this devious term, who started the fight, and did they know what they were getting themselves into?
What is serverless, really?
When the definitional task is not thrown to the wolves marketing department, serverless products are generally accepted to have at least four key features:
- No management of server racks or VMs.
- No pre-provisioning of capacity: instead, fast auto-scaling in response to work offered.
- Usage-based pricing: service costs scale with actual work done (i.e usage), not with resources assigned to enable that work.
- Scale-to-zero: you don’t pay for idle compute capacity.
In the wild, some nominally serverless cloud offerings will drop one of these features, most often item four. For example, AWS Managed Streaming for Apache Kafka2 does not have scale-to-zero, charging a minimum over $500/month to run a serverless cluster. Not cool.
AWS should really know better. In the beginning (2006), when serverless didn’t even exist as a concept, it birthed the biggest and best of the serverless services. The service that should have all counting themselves as a serverless fan.