It's been a week since "Cloud Programming Simplified: A Berkeley View on Serverless Computing" was published & I've had some time to think about & read through it.

If you don't feel like reading the entire paper, check out this post for my concise take.

Distinctions & basic observations

At the beginning they make a clear distinction between serverless and the traditional approach, which they call serverful cloud computing.

They say that "..these two approaches represent the endpoints of a continuum of function-based/server-centered computing platforms"

This sentence:

"In the cloud context, serverful computing is like programming in low-level assembly language whereas serverless computing is like programming in a higher-level language such as Python."

I had never thought of it that way but makes total sense & is compelling. It's a natural progression from the stance of how abstractions improve.

"An assembly language programmer computing a simple expression such as c = a + b must select one or more registers to use, load the values into those registers, perform the arithmetic, and then store the result. This mirrors several of the steps of serverful cloud programming, where one first provisions resources or identifies available ones, then loads those resources with necessary code and data, performs the computation, returns or stores the results, and eventually manages resource release."

"Automated memory management relieves programmers from managing memory resources, whereas serverless computing relieves programmers from managing server resources."

A lot of this was so eye opening to me. Again, this goes back to the previous point: "like programming in a higher-level language such as Python."!

Definition

Another thing: as @schrockn pointed out here, the way that they define what Serverless computing is really interesting.

"While cloud functions—packaged as FaaS (Function as a Service) offerings—represent the core of serverless computing, cloud platforms also provide specialized serverless frameworks that cater to specific application requirements as BaaS (Backend as a Service) offerings. Put simply, serverless computing = FaaS + BaaS".

Notice the explicit use of the term "BaaS" in their definition.

Cost of serverless vs serverful

Cloud providers report that customers see cost savings of 4x-10x when moving applications to serverless [1], [2].

"We predict that serverless use will skyrocket. We also project that hybrid cloud on-premises applications will dwindle over time, though some deployments might persist due to regulatory constraints and data governance rules."

Agreed.

Also this line in the section labeled "Attractiveness of Serverless Computing":

"... making the cloud easier to program helps draw in new customers and helps existing customers make more use of cloud offerings."

That sentence is key.

There's a real barrier to entry for people unfamiliar with the cloud, especially front-end / mobile / client-side developers. Even with many of the existing frameworks & abstractions offered, there is still a lot of lingo that is completely unfamiliar to them, it was for me.

There is a massive opportunity in this space, i.e. making the cloud more accessible. There's already a ton of growth in the space, & I think we'll see it even accelerate over the next few years.

This is why I'm really excited to be working on tooling like the Amplify Framework that does exactly this.

On to the predictions (my favorite part)

"We expect new BaaS storage services to be create that expand the types of applications that run well on serverless computing. Such storage will match the performance of local block storage & come in ephemeral and durable variants"

"We expect serverless computing to become simpler to program securely than serverful computing, benefiting from the high level of programming abstraction and the fine-grained isolation of cloud functions"

"simpler to program securely..". Important distinction.

"We see no fundamental reason why the cost of serverless computing should be higher than that of serverful computing, so we predict that billing models will evolve so that almost any app, running at almost any scale, will cost no more & perhaps much less with serverless"

And finally this

"Serverless computing will become the default computing paradigm of the Cloud Era, largely replacing serverful computing and thereby bringing closure to the Client-Server Era."

There's also some very useful information about the challenges, fallacies & pitfalls of serverless & how they can potentially be addressed.

It's a really exciting time to be exploring this space!

To learn more about my thoughts on Serverless & how it affects front-end developers, check out my post Full-Stack Development in the Era of Serverless Computing

This post was created from my tweet thread about this subject that can be found here.

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf.