Alex the founder of OpenFaaS shares his highlights for the project from the year of 2021.
A few days ago, I shared Seven of My Personal Highlights from 2021 and wrote a similar post for the inlets project - “Tunnels Reimagined for Cloud Native”. So it seems only right that I should do the same for the OpenFaaS community.
OpenFaaS Highlights
In this post, I’ll share highlights from the OpenFaaS project itself and from related community efforts like K3sup and Arkade. So whether you’re a seasoned OpenFaaS practitioner or just curious, then I’m sure there’s something for you here.
Going to production
The Open Source version of OpenFaaS is really meant for developers, but we also continue to see teams going to production.
That’s where OpenFaaS Pro - a commercially licensed distribution of OpenFaaS starts to make sense.
This year we saw more uptake of OpenFaaS Pro and extended the feature-set:
- Tuned the Kafka connector with a customer to support jobs processing millions of messages at a time
- Added retries to enable concurrency limited jobs (think one or N invocation(s) per container)
- Added a new SQS event connector for customers on AWS to trigger functions from AWS services
- Added PKCE support to the SSO / OpenID Connect support
One of our customers also needed to build hundreds, if not thousands of functions and wondered how they could achieve this without overloading their GitLab or Jenkins servers. That’s where the Pro Function Builder came in. It provides a HTTP API that can build functions using OpenFaaS templates or Dockerfiles and upload the resulting container image to your registry.
We also did some tuning work for a client who needed to run jobs for long periods of time: Improving long-running jobs for OpenFaaS users
In February, I invited David Flanagan to join me for a deep dive into use-cases for OpenFaaS and functions.
Check out the blog post and live-stream:
- Exploring Serverless Use-cases from Companies and the Community
- Send in your own use-case to the ADOPTERS.md file
We also covered several case-studies and configuration pieces on the blog:
- Configure your OpenFaaS functions for staging and production
- Case-study: Building a Low Code automation platform with OpenFaaS by Waylay
- Serverless storage for your functions from the Datastax Astra DB
- Event-driven OpenFaaS with Managed Kafka from Aiven
- Learn how Istio can provide a service mesh for your functions
If you’d like to know about running in production - or integration with any of these tools, feel free to reach out to speak to us.
Find out more about going to production here: OpenFaaS in Production
OpenFaaS gets its own manual
In January I launched my first eBook named Serverless For Everyone Else
In Serverless for Everyone Else, you’ll learn practical use-cases for Serverless Functions, how to build and deploy your own functions that you can run anywhere at a low, predictable cost.
Finally someone writes a #serverless book I might understand, with some real world stuff I might be able to accomplish. Of course it would be @alexellisuk https://t.co/X9JFybGOHq
— Joe Onisick (@JoeOnisick) January 22, 2021
The examples are geared around JavaScript and Node.js and cover a the fundamentals that you’ll need to build useful functions. Things like databases, APIs, unit-testing, customising templates and scheduled tasks. On an operational level, it also covers monitoring & dashboards, deployment with faasd and how to set up TLS.
One of the examples on Postgresql and MongoDB.
I consider the book to be “the” manual for OpenFaaS, so if you’re looking to learn or go deeper, it’s likely that you’ll learn something that you didn’t know about the project already.
It’s available on Gumroad.
You can read a bit more about the launch here: My first eBook launch - results & feedback (10k USD in 27 days)
faasd - 20,000 functions on one host
This was the year of faasd. Not only did it get featured extensively in Serverless For Everyone Else, but we focused on bringing its feature set in-line with OpenFaaS on Kubernetes, to the point that we are now hosting some of our own functions using faasd.
faasd can now limit the memory used by functions, supports multiple namespaces and has certifier tests that check it for compliance.
Working on #certifier to enable memory limit test for #faasd #FaaSFriday pic.twitter.com/CwKP4Ar91Y
— Nitishkumar Singh (@Nitishkumar071) November 5, 2021
These features were all important for some research I did for Equinix Metal’s Proximity event:
Join Alex from the OpenFaaS project as he presents a deep-dive into how moving closer to the metal gave the new faasd project superpowers that were not available in Kubernetes.
faasd gets closer to its containers by removing clustering altogether and working directly with containerd. Cold starts are a thing of the past, idle functions can be frozen and immediately thawed out, 20x more containers can be packed into a single host, stateful workloads can be co-located for low latency, and bare-metal makes secure VM isolation practical at scale.
Learn what happens when you challenge the assumptions of the status quo, and what kinds of benefits you can get from running workloads closer to the metal.
In the talk I explain why faasd is so much faster than Kubernetes and show how I patched the Linux kernel to deploy 20,000 functions on a single bare-metal host. In contrast, Kubernetes has a default limit of ~ 100 functions per host and a cold-start time of ~ 1-2 seconds as a minimum.
Derek, our community bot was migrated from Docker Swarm to faasd.
I moved my own sponsors notifications to faasd: alexellis/sponsors-functions
And wrote new functions to extend Gumroad’s marketplace functionality, so that I could run custom promotions that Gumroad could not support out of the box: alexellis/gumroad-custom-workflow
The Sponsors’ portal aka Treasure Trove runs on faasd also, you can log in with your GitHub Account for discounts and to book a 1:1 with me: https://insiders.alexellis.io
For more of an overview of OpenFaaS, see Ivan Velichko’s thread on Twitter:
How to Run a FaaS Platform On Your Own Terms
— Ivan Velichko (@iximiuz) December 8, 2021
FaaS is a higher-level kind of Serverless tech where the smallest deployable unit is a Function.
AWS Lambda, Azure Functions, GCP Cloud Function are all super handy, but what if you can't use them for some reason?
Meet OpenFaaS! 🔽 pic.twitter.com/ArEm35TG9q
Ivan also has a very detailed blog post: OpenFaaS - Run Containerized Functions On Your Own Terms
What’s made by OpenFaaS, but isn’t OpenFaaS?
K3sup
k3sup (~4.3k GitHub stars) is one of the easiest ways to get a development or production-ready Kubernetes cluster using the K3s project.
Someone recently asked me what K3sup did that installing K3s via curl does not, here’s a quick overview:
- It builds Highly-Available clusters through a simple install and join command
- It fetches and updates the Kubeconfig file for you, updating the permissions and the cluster address
- It merges the new clusters into your kubeconfig file
Through the use of SSH and Go, the experience of building a Kubernetes cluster couldn’t get much simpler.
Trying K3s with K3sup by @alexellisuk. useful tool and nice experience #kubernetesweekends #k8s #k3s pic.twitter.com/X3CHEmMUnn
— iheb ☁️ (@iboonox) October 27, 2019
This year, I continued to maintain K3sup and extend it to support changes in the latest versions of K3s.
If you use K3sup, you can support that work via GitHub
Arkade
Arkade (~2.4k GitHub stars) is a Kubernetes marketplace, which is open-source and unlike proprietary cloud-based offerings, it works on any cluster.
The tool also ships with a way to install CLI commands that is much faster than Brew. It’s smart enough to download the latest binary available, and for your Operating System and your CPU (think Apple M1 vs Raspberry Pi vs. Windows Intel Core i7).
I was setting up a new dev environment yesterday. Kind, helm, kustomize, kubectl, all this stuff. My take is - arkade is highly underappreciated.
— Ivan Velichko (@iximiuz) July 30, 2021
I'd spend an hour in the past to install such tools. With arkade it was under ten minutes.https://t.co/LgbxYDkh9G
It’s a lot of work to maintain arkade, and the community is a big part of what makes that possible.
I also want to thank the Kasten and Venafi for being our first two sponsored apps in the marketplace:
You can now propose your project or product as a Sponsored App. Sponsored Apps work just like any other app that we’ve curated, however they will have a note next to them in the app description (sponsored) and a link to your chosen site upon installation. An app sponsorship can be purchased for a minimum of 12 months and includes development of the Sponsored App, with ongoing support via GitHub for the Sponsored App for the duration only.
arkade can download all the CLIs that you’ll need to use openfaas:
arkade get \
faas-cli \
kubectl@v1.21.1 \
helm \
k3s \
kubectx \
terraform
You can also use it in CI/CD pipelines to fetch CLI tools that you need to build your own projects and functions.
- Check out arkade on GitHub
Hand-made swag
Throughout the summer, I got the bug for woodworking and through random chance figured out that I could make branded wrist rests for mechanical keyboards and matching wooden coasters.
Leonidas’ wrist-rest
Dennis’ coasters - sent all the way to Russia
You can purchase either in the store: Buy hand-made OpenFaaS merchandise
Thanks to the community
OpenFaaS at GopherCon - 0 to 60 months
In the early years of OpenFaaS I used to talk about going from Zero to Serverless in 60 seconds as a reference to how quickly you could install the platform and get a function up and running.
My first time attending and speaking at a GopherCon event.
At Gophercon, I gave the closing keynote and told the story of our project over the last 5 years or 60 months. I told it through the lens of the contributors - how the project had lifted them up, given them opportunities and earned them large salary increases.
What does 2022 hold?
If it wasn’t clear enough from my Gophercon talk, this project wouldn’t be possible without the support of the community, customers and sponsors on GitHub. Thank you to everyone who’s been involved with the project in some way this year.
We need your continued support to stay in the business of making portable, developer-friendly and cloud-agnostic functions possible in 2022 and beyond.