Lately I have been scratching my head when anyone says serverless. What is the fundamental definition of a Serverless workload ? What qualifies as serverless ? In order to first define what the term serverless means we will look at what probably it is not.
Should that be a Function ?
You are probably NOT a function IF
You are sharing state between functions
You are a long running process
You have startup times in excess of 30 seconds
Cross multiple domains
Need Strong performance like latency or host specific guarantees
You are Stateful like orchestrating transactions or relying on persistence
You own your own data model
Definition of Serverless ?
Scale to Zero - Serverless workloads can be microservices or functions that scale to zero.
Serverless is a spectrum of workloads ranging from functions to microservices. So what does serverless look like in the wild ? What are the kinds of questions and criteria developers must think through as they define functions.
What makes a Function ?
Where are the Seams and boundaries >
What are the triggers ? - time, intrinsic, extrinsic, events, actions etc.,
What are inputs and outputs
What are its side-effects
What contract or policy does it implement
Is the function contained within the domain ?
What makes a cloud native microservice ?
12 Factor/15 Factor Cloud Native Applications
Stateless horizontally scalable
Location and Host Agnostic
Externalized Configuration and Secrets
As you think through these considerations it is also important to consider the challenges in writing clean functions in a pure serverless architecture.
Challenges of Serverless Workloads
Startup Time
Coordination/signaling service
High-performance, affordable, transparently provisioned storage
Data Dependencies
Resource Requirements
Networking
Scheduling randomization and physical isolation
Fine Grained Security Contexts
Hardware Heterogeneity, Pricing, and Ease of Management
In this blog post we have barely scratched the surface of the term Serverless. We have neatly ignored the business and financial implications of serverless. Serverless is inherently a financial as well as a technical construct. We also need to understand serverless from a financial and business perspective. We will come back and offer an opinion on this in a follow up blog post.
Comments