Launched in 2014, AWS Lambda is one of the popular Function as a Service (FaaS) implementations in a public cloud. However, Amazon is not the only player in the area of FaaS and more general Serverless solutions that can be seen as AWS Lambda alternatives.
Obviously, AWS Lambda has catalyzed the popularity of serverless architectures, but other big players such as Microsoft and Google followed Amazon in 2016 and released public cloud versions of their solutions with similar functionality. In this article, we will present AWS Lambda and other existing solutions.
AWS Lambda Alternatives
Today’s most noteable alternatives to AWS Lambda include:
- Google Cloud Functions was quietly launched in the beginning of 2016 as an answer to well-received AWS Lambda. The project is still labeled as Alpha and is not recommended for production use. Sooner or later Google will stabilize their serverless platform to a state where it will be competitive with AWS Lambda. For this reason, we include it here.
- Microsoft also launched Azure Functions in 2016 to compete with AWS Lambda.
- IBM OpenWhisk is an open-source FaaS solution released in the beginning of 2016. OpenWhisk is a component of IBM Bluemix, a cloud Platform as a Service, which is based on Cloud Foundry and runs on SoftLayer infrastructure. OpenWhisk can be used as a Bluemix public cloud offering (IBM Bluemix OpenWhisk) and can also be installed on-premises.
- Auth0 Webtask supports writing functions in NodeJS. Its main focus is on easy of use compared with AWS Lambda and it provides simple built-in storage for JSON documents with simple git/put semantic.
In addition, it’s worth mentioning the following projects, which currently are not direct AWS Lambda alternatives, but might be evolved to such in the near future:
- Project Kratos Beta is a new initiative from Iron.io to enable running AWS Lambda functionality on most popular cloud providers and on-premises. There is no documentation or code available, so the overall project state is unknown at this time.
- The Serverless Framework is designed to implement FaaS on top of any cloud, but currently supports only AWS Lambda.
- Apex is built on top of AWS Lambda and allows using languages that are not natively supported by AWS Lambda, such as Golang. Apex also provides a set of tools to test functions, roll back deployments, integrate with build systems, and so on.
In an attempt to create an unbiased list of tools, we have tried to relate to the basic set of features developers might expect from FaaS implementation. The paradox of this situation is that AWS Lambda is the first FaaS implementation with the rich set of features. As a result, AWS Lambda has set the the developer’s expectations for such solutions, making it reasonable for us to view it as the de facto standard for FaaS features and the basis for comparison.
The aspects to consider in assessing FaaS implementation options include:
- How the service is provided: only via a public cloud or is an on-premises version also available
- Billing model and price
- Supported programming languages
- How to bundle and deploy a function
- How a function is invoked: by call to a HTTP/HTTPS endpoint, triggered by event, scheduled, and so on
- What types of events that trigger a function are supported out-of-the-box
- Supported functions
- Logging and monitoring a function
- Limitations (CPU, memory, execution time, ephemeral storage, and so on)
- Integration with other providers and third-party services
AWS Lambda provides a set of features that set the de facto standard for such platforms. However, as covered in this blog, several alternatives have already been released. In addition, we can anticipate more smaller players, such as Auth0 Webtasks, to emerge on the scene. The available alternatives are constantly improving and we already see R&D organizations’ adoption and plans to use FaaS. Recognizing that, all major cloud providers will do their best to maximize the FaaS opportunity.
Our comparison of the different tools and Lambda is a work in progress. In a future post, we plan to continue to share our findings as we try to determine whether these AWS Lambda alternatives offer new features for developers or are simply cloning. What are their strengths? And, is it really possible to run FaaS applications on-premises alongside the public cloud?