Serverless Architectures III/III: Market offerings — AWS, Azure, Google and Alibaba
This is the third deliverable of the article series. It compares public cloud providers in the serverless space.
The global serverless market size is expected to grow to $14 billion by 2024, according to the ‘Global Serverless Architecture Market’, published by KBV research [3]. Interestingly, almost the whole cake is eaten by the big Three (AWS, Azure and Google). However, Chinese players are growing fast and that is why I decided to include Alibaba in the comparison.
The number of services offered are extensive. I have summarized some of the most common offerings in the Serverless space in the following matrix.
I still get annoyed by every piece of AWS that is not serverless — Dr. Werner Vogels (Amazon.com CTO)
Functions as a Service comparison
The following matrix compares AWS, Azure, Google and Alibaba Cloud functions offerings in the following dimensions:
- Number of free-tier requests
- Pricing for requests on top of the free-tier
- Supported languages
- Execution time and concurrency
- Triggers
From the price perspective, they offer competitive pricing. Google is the best offer with double the number of requests in the free tier and cheaper for ever Gb-sec used thereafter.
They all support Node.js and Python. However, if you need specific languages, you will need to select the one that suits your requirement.
Interest over time
Clear dominance of AWS Lambda in the Serverless functions space. Interesting to note the spike in early December 2018 followed by a decline in the holiday season.
Open source frameworks alternatives
There are some options in the open source space for FaaS. The question is, why would you even explore deploying and maintaining your own FaaS?
Classic use cases include companies with big investment on infrastructure on-premise that want to have functions without going to the cloud. For instance, it could be that they need long-running work loads without having to overpay functions on the cloud.
Let’s review some of them:
OpenFaaS [6]
OpenFaaS (Functions as a Service) is a framework for building serverless functions with Docker and Kubernetes which has first class support for metrics. Any process can be packaged as a function enabling you to consume a range of web events without repetitive boiler-plate coding.
Highlights
- Ease of use through UI portal and one-click install
- Write functions in any language for Linux or Windows and package in Docker/OCI image format
- Portable — runs on existing hardware or public/private cloud — Kubernetes and Docker Swarm native
- CLI available with YAML format for templating and defining functions
- Auto-scales as demand increases
Apache OpenWhisk [7]
Apache OpenWhisk is an open source, distributed Serverless platform that executes functions in response to events at any scale. OpenWhisk manages the infrastructure, servers and scaling using Docker containers so you can focus on building amazing and efficient applications.
The OpenWhisk platform supports a programming model in which developers write functional logic (called Actions), in any supported programming language, that can be dynamically scheduled and run in response to associated events (via Triggers) from external sources (Feeds) or from HTTP requests. The project includes a REST API-based Command Line Interface (CLI) along with other tooling to support packaging, catalog services and many popular container deployment options.
OpenLambda [8]
OpenLambda is an Apache-licensed serverless computing project, written in Go and based on Linux containers. The primary goal of OpenLambda is to enable exploration of new approaches to serverless computing.
Fission: Serverless on Kubernetes [9]
Fission is a Functions as a Service (FaaS) / Serverless function framework built on Kubernetes.
Fission allows you to easily create HTTP services on Kubernetes from functions. It works at the source level and abstracts away container images (in most cases). It also simplifies the Kubernetes learning curve, by enabling you to make useful services without knowing much about Kubernetes.
To use Fission, you simply create functions and add them with a CLI. You can associate functions with HTTP routes, Kubernetes events, or other triggers. Fission supports NodeJS and Python today.
Functions are invoked when their trigger fires, and they only consume CPU and memory when they’re running. Idle functions don’t consume any resources except storage.
Interest over time
Conclusions
Although deciding which provider to choose will usually depend on your requirements, existing agreements and IT cloud strategy, this article intends to help on this challenging process.
In case of this being the first project moving into the cloud, this article becomes relevant since it will determine your cloud destiny. All vendors offer huge discounts to kick off your development, because once you are in, it is hard/unlikely to move to a different provider.
The IT cloud strategy will determine whether there is appetite for multiple cloud vendors, which comes with benefits and costs. Unless you are representing a big company, it appears to be better to stick to the existing vendor.
As cloud vendors improve on their capabilities being offered, and they match each other, then project success will be determined mostly by a sound implementation rather than the cloud vendor selection.
References
[1] Serverless — reality or BS — notes from the trenches — Lynn Langit
[2] GOTO 2017 Serverless: the Future of Software Architecture by Peter Sbarski
[3] Serverless architecture market to reach $14B by 2024 by Ben Moore
[4] Comparing Serverless Architecture Providers: AWS, Azure, Google, IBM, and Other FaaS Vendors by Ihor Lobastov
[5] Public Cloud Services Comparison (AWS, Azure, Google, IBM, Oracle and Alibaba)
[6] OpenFaaS documentation
[7] Apache OpenWhisk documentation
[8] OpenLambda
[9] Fission: Serverless Functions as a Service for Kubernetes
[ I. Design and technical trade-offs ] [ II. Business benefits ] [ III. Market offerings ]