Serverless: dissecting the jargon (part 1)

Pedro Freitas
4 min readJun 18, 2020

The tech industry likes to talk, share and create a lot of buzz around new terminology and new technology.

In regards to advancements in cloud computing, the term “serverless” has been somewhat vague, heavily depending on the technology your stack is being built around, but in the end sums up to the following concepts, quoting the official definition from the Cloud Native Computing Foundation:

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model 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]

(source: Brett Sayles — Pexels)

Function-as-a-Service (FaaS)

I’ve been looking around helpful definitions how can you explain FaaS coherently, and I’ve stumbled upon Red Hat website:

Function-as-a-Service, or FaaS, is an event-driven computing execution model that runs in stateless containers and those functions manage server-side logic and state through the use of services. [2]

Implementing FaaS is all about an exercise of thinking and develop in an event-driven architecture (EDA) approach.
One of the major selling points of FaaS is that such abstraction relieves development teams from the traditional way of handling events, reducing operational effort related to provisioning and managing infrastructure, allowing professionals to focus more on quality and performance KPIs. Another interesting point that Red Hat mentions is this:

In reality modern applications will be composed of a mix of these solutions: functions, microservices, and long running services. [2]

This is a clear statement that clears out that FaaS is not a silver bullet to all use cases, and taking the best of this software development approach, requires proper understanding of the platform chosen, the constraints and best practices, to take full advantage of your choices.

In terms of programming languages, you will see support for the most used, which is nice, but be careful about the implementation constraints. Different programming languages may perform differently in terms of start-up time and resource usage. AWS Lambda might be picky regarding this, and I do recommend reading Mikhail Shilkov article about Cold Starts to get an on-boarding on such concerns if you are under the AWS umbrella.
If you are starting a new project, some research about performance/cost might be wise, especially if you are running under a tight budget :)

There are multiple vendors, open-source projects and services, that provide FaaS solutions, some of the most popular are the following:

Open-source and serverless

While solutions like AWS Lambda have been around for a while, tightly integrating into the AWS serverless platform, there seems to be increased interest in alternative open-source solutions for serverless computing, during the last years.

Google Trends: Knative (red) and OpenFaaS (blue)

OpenFaaS is currently one of the most popular open-source solutions, that leverages the best out of Kubernetes, to deploy both functions and existing code. As part of your strategy, if you are worried regarding platform lock-in, this solution might be worth looking at. This project is also working towards something interesting, which is still in early preview, where you can run your open-source powered functions in AWS Lambda.

Knative is a Google-sponsored industry-wide project to establish the best building blocks for creating modern, Kubernetes-native cloud-based software. [3]
This project is not like traditional FaaS solutions, it is a full Kubernetes-based platform to deploy and manage modern serverless workloads [4].
Knative components are built on top of Kubernetes, abstracting developers away from deploying and managing cloud-native services, bringing the best practices shared by known success stories. I would sum up this solution as a standard self-serverless approach that provides all the necessary building blocks to develop complex event-driven architectures(EDA).

Conclusion and further research

FaaS has been pushing the buzz around the keyword “serverless”, and it’s inherited benefits explain why it has been disrupting the way event-driven applications are built and deployed. In part 2 of this article, I will take a look at an open-source “serverless” solution, which will allow getting a good understanding of the development and deployment flow in the current times.

References

[1] The CNCF takes steps toward serverless computing

[2] RedHat — What is Function-as-a-Service (FaaS)?

[3] Knative | Google Cloud

[4] Knative

--

--

Pedro Freitas

Full-time DevOps Engineer | CKA | CKAD — Helping organizations to grow a DevOps culture.