Once you decide to move to a serverless architecture, it's important to realize this is just a place to start. Now, there are several paths you can take and lots of questions to ask yourself before you choose a specific architectural approach.
For example, will you choose a commercial or an open-source-based option? You can opt for loosely coupled tools or a well-integrated development platform. Will you use the serverless platform for hobby projects, or is it for serious enterprise applications?
Serverless technologies change quickly. So, before you choose a platform, evaluate all of your options. Let's review what's available today.
Lambda, Azure Functions and Cloud Functions
AWS Lambda is the most popular serverless platform today, mainly because it's built to work seamlessly with other AWS offerings. Users most frequently pair Lambda with Amazon API Gateway to handle API management. This combo helps integrate legacy enterprise applications with modern cloud-native ones, which means there is no need to actually modernize legacy applications to get the benefits of modern applications. Lambda can also combine with other AWS products, like S3, CloudWatch and CloudTrail, to deliver powerful capabilities for each function that you run.
Azure Functions and Google Cloud Functions are similar to Lambda. These two commercial services are equally capable, and they each integrate easily with their respective cloud vendor platforms.
There is a lock-in factor to consider here, however. It's not easy to migrate from Lambda to a competing serverless platform -- and vice versa. The steps involved in running functions, the limits and the supporting cloud services are all unique to each vendor. Before you adopt a cloud-based serverless platform, it's important to thoroughly evaluate each one and determine your needs. Take into account all factors that will affect the performance of your application, such as whether the file size limits are adequate for each function, how the platform handles long-running requests, how quickly it scales and how much load it can handle.
Consider using Serverless Framework when you work with a cloud vendor's serverless platform. This is a command-line interface (CLI) tool that makes it easy to perform actions on platforms like AWS Lambda. If you look to run commercial applications, opt for the convenience of a platform like AWS Lambda.
Reliable open source tools for introducing serverless
Open source tools have yet to gain widespread adoption in the serverless ecosystem. One gating factor is that even if you have the management layer for a serverless framework in place through open source, you still need to provision underlying resources for compute, networking and storage.
The major cloud platforms are attractive, as they take the burden of this labor-intensive resource provisioning away from software teams, although it is possible to provision these resources on premises without the use of cloud. But there are a few open source options that can provide additional value when developers use them in tandem with cloud or on-premises resource provisioning.
OpenFaaS is the most popular open source serverless framework. It lets you run a serverless setup on any cloud platform or on premises. The primary benefit of OpenFaaS is it lets you run functions as containers on Kubernetes or Docker Swarm, which makes it easy to add the benefits of containers into your serverless operations.
But OpenFaaS is unique from other serverless offerings, because it lets you define custom restrictions and limits. For example, you can define the timeout limit and the maximum file size limit for a single function, so you aren't restricted to the typical five-minute timeouts or 5 MB file size limits found in other serverless platforms. Also, OpenFaaS should soon release a feature that scales the system to go idle when no functions are running, which adds even more serverless efficiency.
Kubeless is another open source framework that runs on native Kubernetes. It integrates with AWS Lambda and lets you run commands via a CLI. Other open source serverless frameworks that have cloud vendor support include OpenWhisk, Iron.io and Fn.
PaaS, MBaaS provide alternative options
Though often not included in discussions about serverless tools, you should also consider more traditional PaaS and mobile backend-as-a-service (MBaaS) platforms as serverless computing options. These platforms focus on end-to-end application development and hosting and emphasize robust back ends for data integration, which are both important for the enterprise.
These platforms don't just pass functions. Rather, they minimize the amount of code you need to write and focus on accelerating application development. The main point of comparison is that these platforms also host your applications and data in a serverless manner by providing familiar management options.
PaaS and MBaaS platforms are comprehensive offerings and, therefore, cost more than individual serverless tools. However, they can address many of the same challenges serverless seeks to solve.