What is Serverless? A Definition

Srinath Perera
Ripples in Middleware
3 min readDec 20, 2018

--

The short answer is anything providing resource pooling, rapid elasticity, and measured service (as defined in the NIST cloud computing definition) in an opaque manner to the user.

Let’s explore how we got to that definition. Let us consider some definitions from various organizations.

The Cloud Native Computing Foundation (CNCF) defines serverless as:

“where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.” [1]

This definition focuses on Function-as-a-Service (FaaS), which is further defined as:

“… code with functions that are triggered by events or HTTP requests. Developers deploy small units of code to the FaaS, which are executed as needed as discrete actions, scaling without the need to manage servers or any other underlying infrastructure.”

In addition, the CNCF also includes Backend-as-a-Service (BaaS):

“which are third-party API-based services that replace core subsets of functionality in an application. Because those APIs are provided as a service that auto-scales and operates transparently, this appears to the developer to be serverless.”

ThoughtWorks[2], also defines serverless as the combination of FaaS and BaaS. These definitions can be considered to be operationally-focused — addressing the “how” of serverless.

In contrast, Knative defines serverless using outcomes. They say that any system that provides autoscaling and fine grain metering in an opaque manner is considered serverless. Or more formally, we can explain it as anything that provides Resource Pooling, Rapid Elasticity, and Measured Service as defined in NIST cloud computing definition [3]. The recently released project Knative [16] also fits with this definition.

All three definitions of serverless that we have examined include BaaS. This is a natural position because developers who are building any real-world applications are in need of capabilities such as identity, databases, messaging, and event sources. In general, server-side computing has long had a concept of middleware. Informally middleware can be defined as capabilities that are higher-level than the operating system, but that are not complete applications in themselves. More formally we define middleware as “pre-written software designed to offer re-usable services needed by application developers, especially for server-side applications”. This includes services such as Integration (ESB, APIs, Messaging, Workflows), Observability (Monitoring, Tracing and Log Management), Storage (RDBMS & NoSQL), Infrastructure (DevOps and Orchestration), Security (Firewalls, Identity and Access Management), and IoT (Device Management, Data Collection). In many ways, BaaS is the cloud/serverless incarnation of middleware, where traditional middleware services are offered as pay-per-use capabilities by a cloud provider.

Any serverless environment that does not offer access to such backend services is unlikely to be useful. When we discuss the impact, feasibility, and future of serverless we need to consider the full environment including such backend services.

Based on the above definitions, we take the position that serverless includes FaaS, resources (compute and storage) as well as a complete execution environment including platform services providing resource pooling, rapid elasticity, and measured service (as defined in the NIST cloud computing definition) in an opaque manner to the user. Furthermore, we state it as essential that these approaches must enable consumption-based business and operating models.

For a detailed analysis of Serverless technology, please refer to Serverless Outlook Document.

To receive updates our emerging technology analysis, please subscribe to our Global Technology Outlook Updates Newsletter.

  1. “CNCF Serverless Whitepaper v1.0”, https://github.com/cncf/wg-serverless/tree/master/whitepaper
  2. Mike Roberts, “Serverless Architectures”, https://martinfowler.com/articles/serverless.html
  3. “The NIST Definition of Cloud Computing”, https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf

--

--

Srinath Perera
Ripples in Middleware

A scientist, software architect, author, Apache member and distributed systems programmer for 15y. Designed Apache Axis2, WSO2 Stream Processor... Works @WSO2