Serverless computing is a cloud computing execution model in which the the allocation of machine resources is dynamically managed. There is a good blog bost by Mike Roberts on serverless architectures for the interested reader. “Serverless computing” is misleading to some degree. Obviously servers are still needed, but the term “serverless” is used because the server management and capacity planning decisions are completely hidden from the developer or operator. Serverless code can be used in conjunction with code deployed in more traditional styles, such as microservices. However, applications can be written to be purely serverless as well.
There are very well curated link lists dealing with serverless computing in general like Awesome serverless. However, this blog post would like to concentrate only on the frameworks. The main intent is to curate a list of open source serverless frameworks over time. If you think some framework is missing do not hesitate to propose it.
Public (commercial) serverless services
Most public cloud service providers offer compute runtimes, also known as function as a service (FaaS) platforms. Here are some well known type representatives.
- Google App Engine (one of the first commercially successfull solutions, however App Engine relies on a custom Python framework)
- AWS Lambda
- Google Cloud Functions
- Azure Functions.
Open (source) serverless platforms
All of the mentioned commercial serverless computing models are prone to create vendor lock-in (to some degree). Therefore, open source serverless frameworks might be an alternative with the downside that the infrastructure must be operated. Obviously these frameworks need platforms or infrastructures to be executed on.
- OpenFaaS - OpenFaaS (added 7. Mar 2018)
- nuclio - High-Performance Serverless event and data processing framework (added 24. Oct 2017)
- Fn project - The Fn project is a container native serverless platform. It supports every programming language. (added 3. Oct 2017)
- OpenWhisk by Apache includes native support for Node.js, Python, Java, and Swift, and supports other languages and runtime via Docker containers. (added 12. Sep 2017)
- Kubeless, a serverless framework for Kubernetes. (added 12. Sep 2017)
- Fission, another serverless framework for Kubernetes, supporting Python, NodeJS, Go, C#, and PHP. (added 12. Sep 2017)
- Funktion, an event-based lambda programming environment for Kubernetes. (added 12. Sep 2017)
- Functions as a Service (OpenFaaS) - a serverless framework for Docker & Kubernetes (added 12. Sep 2017)
- IronFunctions - the serverless microservices platform (added 12. Sep 2017)
- SpringCloud Functions - the serverless approach of Spring (added 12. Sep 2017)
This list is likely not complete. If you know further serverless platforms do not hesitate to contact me.
Provider agnostic serverless frameworks
While serverless platforms need infrastructures to be executed on, provider agnostic serverless frameworks provide a provider and platform agnostic way to define and deploy serverless code on various serverless platforms or commercial serverless services. This is an option to avoid (or reduce) vendor lock-in without the necessity to operate an own infrastructure.
This list is likely not complete. If you know further provider agnostic serverless frameworks do not hesitate to contact me.
Provider-specific serverless frameworks and IDEs
Provider-specific serverless platforms are often optimized for operation from a provider point of view. But from a developper point of view there are a lot of opportunities to improve the task to develop and deploy serverless code in a more convenient way. The following frameworks make use of serverless infrastructures but provide more convenient (but still provider-specific) IDEs.
- AWS Cloud 9 (Online IDE for AWS cloud services) (added 28. Apr 2018)
- SLAppForge Sigma (Currently AWS Lambda focussed, support for Azure and Google Cloud seems to be planned) (added 28. Apr 2018)
This list is not complete. If you know further provider-specific serverless frameworks and IDEs do not hesitate to contact me.