CS PAPERS DEEP-READ · PAPER 63

A Berkeley View on Serverless Computing

Jonas, Schleier-Smith et al. · UC Berkeley · 2019 (read against Hellerstein et al. · CIDR 2019)

中文 →

What did this paper do?

When you open a website, some machine has to be sitting there, switched on, waiting for you. Serverless tries to make that somebody else's problem: you hand over a piece of code, the cloud runs it only when a request arrives, tears it down afterwards, and charges you nothing while nobody is visiting. "Serverless" does not mean there are no servers — it means the servers are no longer yours to manage. In 2019 a group at Berkeley wrote this verdict on the idea: one half says "this is the future of the cloud," the other half lists, honestly, what it still cannot do.

An analogy

The old way is like renting a warehouse by the month: you have to guess in advance how much floor space your busiest day will need — too small and you are crushed, too large and you pay for the empty space anyway, which is most of the year. Serverless is like hailing a van per delivery: one job, one van; no jobs, no vans on the road, and no parking to pay for.

What's new

In the old world an engineer first had to answer a pile of questions that have nothing to do with their actual product: how many machines? which type? how much memory? shut them down overnight? what happens when we get famous at 3am? Get any of them wrong and you either burn money or fall over. Serverless takes the whole pile away: you say "this code should run," and the rest is the cloud's problem. The paper's own analogy is the move from assembly language to high-level languages — the programmer stops placing every register by hand.

How it pulls that off

The trick is to chop "running" into a swarm of very short-lived temps: each request hires one, and it vanishes the moment the job is done. Precisely because a temp can be created and killed at any instant, it cannot keep anything on it (the next one is brand new and remembers nothing) and cannot phone the others (you have no idea which machine one is on, or whether it still exists). So everything that must be kept or handed over has to be checked into a shared locker room — a cloud storage service — for whoever needs it to fetch.

That single fact is both why it is cheap and where all its trouble comes from: when several temps need to pass a lot of data back and forth, what used to be a sentence said face to face becomes write it into a locker, then walk over and take it out again — and with enough temps, a queue forms at the lockers. The body of this paper is exactly that list of "things you cannot do here today": no locker that is both fast and cheap, no way for temps to signal one another, and no dependable, predictable speed.

What came of it

A rebuttal published the same year put it more bluntly: this amounts to shipping the data to the code, whereas forty years of distributed systems say the opposite — ship the code to the data, because data is heavy and code is light. So anything data-hungry, anything that shuffles intermediate results around, is slow and expensive here. Together the two papers became the field's shared vocabulary, and the potholes on the list have been getting filled in one by one. One honest sentence: six years on, the prediction that serverless would replace ordinary servers as the default shape of the cloud has not come true — it turned out to be a very good tool in the box rather than the only one.

Remember this

Serverless = you hand over code, the cloud starts and stops the machines and charges nothing while idle; the price is that functions are short-lived and cannot address each other, so every shared thing has to detour through storage. This paper made that trade explicit — and turned "what it still lacks" into a checklist everyone has used since.

Want the formal definition, the four obstacles and the rebuttal in full? → switch to the deep read