Functions as a Service (FaaS) has been gaining quite a bit of traction among developers and startups. In our conversations with enterprise decision makers, we see that there is some level of FaaS adoption, in varying stages of maturity, in their organizations. We are in the process of publishing an independent research report next month and we have done detailed research talking to many end users and vendors to map out the ecosystem. A section of the report compares the features across the top four FaaS providers. In this post, we will talk about the early trends we observe in our study.
As we noted in this Serverless Landscape data, there are many providers offering Functions as a Service (public cloud providers offering functions as one of their cloud offerings). Based on the data we see across the industry, AWS Lambda, IBM Cloud Functions ,Azure Functions and Google Cloud Functions are the top four cloud providers (we confirmed this through an unscientific Twitter poll).
In this blog post, we will talk about the trends we observe in these services and add our recommendations for enterprise users. Please keep in mind that this analysis may change from this post when we publish the report in May.
Comparing Functions as a Service providers
AWS Lambda is the leader of the pack in terms of both feature set and adoption.
How they stack up?
- Mature service with a rich set of features. Support for a large number of event sources in the form of their own cloud services
- They offer a richer set of metrics compared to other providers but no support for custom metrics
- Security is fully woven in and simpler to manage even though others are not very far off
- High availability is through the use of multiple availability zones
- They stack up much better for IoT use cases at this point
- Proprietary stack
- The most mature Functions as a Service offering in the market. If you want a service that just works without any surprises, got for AWS Lambda. They have a large customer base among the top four cloud providers with many use cases
- If you are worried about vendor or technology lock-in, AWS Lambda is not an option. With AWS Lambda, you are completely locked in with AWS stack. If your cost of re-architecting the app is low, we would still advise you to use Lambda because if you want to change to a stack from another cloud provider, you can easily re-architect the application and move. But if multi cloud is your driving principle, we advise you against using AWS Lambda directly. You could use one of the many frameworks like Serverless framework to manage across multiple FaaS providers
IBM Cloud Functions
IBM Cloud Functions comes second in our ranking based on feature comparison and customer use cases (again based on our conversations with our clients and other users).
How they stack up?
- IBM Cloud Functions is based on OpenWhisk. Even though OpenWhisk still has some deployment headaches (it has improved a lot over the last year), they have a very good developer experience (based on our conversations with developers and fellow analyst Janakiram’s own experience)). IBM Cloud Functions definitely has an edge in terms of developer experience
- If you want to use multi cloud, IBM Functions and OpenWhisk on other clouds/platforms is definitely a good option to explore
- Of the native features among FaaS providers in this evaluation, IBM Functions has the most flexibility to extend the platform. Whether it is about adding a new language or any new software, it is just about packaging it as a Docker container and linking the repository through a hook. Seamless extensibility is a distinguishing feature for IBM functions
- IBM has told us that they have high availability built into IBM Functions but their website or documentation is yet to reflect this
- If your need is multi cloud or hybrid cloud, go with IBM Functions as OpenWhisk can be deployed in multiple cloud providers and platforms
- If you want a less opinionated FaaS, IBM Functions is definitely the option at this point
Azure Functions comes third in terms of maturity and customer use cases. What is unique about Azure Functions is their pricing model is both consumption based (like other Functions as a Service providers) and traditional cloud pricing as in using VMs and Containers (App Service Plans)
How it stacks up?
- If you are a Microsoft Azure user, it is no brainer to use Azure functions but Azure also offers flexible options to package the code as input to the service, including some SaaS offerings such as Dropbox and OneDrive
- With Azure Functions and Azure Stack, it is easy to use Functions in a hybrid cloud environment
- Enterprise customers might prefer their App Service plan over consumption plan to keep governance easy to manage
- Azure Functions is open source but there is very little data on the deployment experience in other clouds and on-premises environments
- Though it is not available today, language extensibility by the user may be available soon
- If you use both Azure and Azure Stack, Azure Functions is the right choice. The edge computing use case showcased in last year’s Build conference with Azure, Azure Stack and Azure Functions, clearly highlighted how Azure Functions can work in a hybrid cloud/edge environment
- In terms of feature maturity, Azure Functions still lags behind AWS Lambda and IBM Functions. We expect the service to add more features this year to make it attractive for developers. We recommend a deep dive matching the features with your needs
Google Cloud Functions
We rank Google Cloud Functions on the bottom among the four major cloud providers because of the lack of features and lack of general availability for the service.
How it stacks up?
- With Google Firebase and other big data services, we expect Google Functions to have more features and adoption. The service is still in beta with no indication on general availability. We reached out to Google’s analyst relations and there is no response from them
- It is feature limited including the number of event sources supported, out of the box metrics, support for VPC, High availability, etc.
- Proprietary stack like AWS Lambda
- Stay away from Google Functions for any production workload till they make it generally available
You can find the data we have used for this analysis at our Github repo. Feel free to raise a Github issue if you find anything wrong or missing.
Update: After we published this post, we came across this use case for Google Functions. This only confirms what we mentioned in our recommendation. Google has powerful set of services that can augment Google Functions. But, our position still remains the same. Wait till Google Functions is generally available.