Brian Jackson - Fotolia
Whether your organization is all-in on AWS or wants to work with multiple cloud providers to address specific application needs, serverless workloads merit a careful review of pros and cons.
For instance, if an organization is accustomed to development and deployment on AWS EC2 and other IaaS offerings, it should consider PaaS instead of the serverless route. In this case, AWS users could forgo AWS Lambda in favor of Elastic Beanstalk or AWS Batch for a more consistent development and management experience. Not every service or component of a flexible distributed application needs the particular architecture design and constraints of serverless computing.
On the other hand, if an organization is pursuing a multi-cloud strategy, serverless offerings such as Microsoft Azure Functions, Google Cloud Functions and open source products like Apache OpenWhisk offer AWS Lambda alternatives. In this relatively new market, enterprises should evaluate every serverless option for the best fit.
In this handful of tips, independent experts first explore the rationale for serverless adoption -- how it works and its pros and cons. They also look at Lambda alternatives within AWS' portfolio, and options to run serverless without AWS.
How serverless offerings work
Serverless is a departure from static VM-based cloud computing. With serverless, users reserve resources to meet the ongoing demand for an application. And whether the application uses 10% or 90% of its reserved resources, the total cost still stays the same. In a serverless model, the application invokes cloud resources as-needed to execute a function, so there's no underutilization or cost when resources sit idle. This suits sporadically active and stateless applications; think event-triggered payments, rather than payroll processing.
While there are ways to control state in a serverless architecture, most enterprise workloads in search of elastic resource utilization work best with a container-based deployment approach. IT consultant Tom Nolle breaks down how microservices, containers, service mesh and serverless interrelate in the new generation of cloud services.
It can be difficult to evaluate serverless computing and when to use it. Take time to assess the services' design. Chris Moyer, vice president of technology at ACI Information Group, a publishing company, explores how serverless empowers developers to isolate tasks within an application. However, he also details the API latency and short execution times that prevent serverless use in many scenarios.
And to determine where serverless belongs in an extensive application portfolio, app architect Joydip Kanjilal breaks down the use cases for serverless and microservices. He appraises hosting options based on cost, operations, user base and other considerations.
When not to use AWS Lambda
If AWS users have a solid foundation in microservices, containers and serverless, they can choose between Lambda and similar offerings that put infrastructure out of sight and out of mind.
Elastic Beanstalk is a lightweight PaaS that abstracts provisioning, scaling and other infrastructure management tasks for AWS applications. Resource allocation with Elastic Beanstalk fits a traditional cloud model where things like compute, memory and storage are assigned based on anticipated demand, while Lambda departs from it. But perhaps the biggest difference between Lambda and Elastic Beanstalk is what part of a complex application you use each one for, as analyst Kurt Marko explains. For example, the back end of an application that requires long execution times could deploy via Elastic Beanstalk, while an event-triggered front-end action is built for serverless execution on Lambda.
While Lambda excels in event-driven processing, AWS Batch helps execute container-based batch jobs with fluctuating scale. Both services spin up resources as needed without the user's oversight, and both can save AWS users some money vs. traditional IaaS hosting. Moyer breaks down the components of Batch, and when it is and is not the right tool for the job as compared to serverless with Lambda.
AWS Lambda competitors
If serverless is the way to go, AWS Lambda is likely on your short list for hosting. It came out before Azure Functions or Google Cloud Functions and is backed by a provider with 33% market share in combined IaaS, PaaS and hosted private cloud services, according to Synergy Research Group.
In his analysis, Moyer looks at how AWS Lambda compares to Microsoft and Google's serverless services in terms of language support, integrations and pricing. As could be expected in such a relatively immature field as serverless, there are vital differences between the big three players, although they're all evolving capabilities rapidly. Lambda's custom runtimes, for example, enable language support beyond what's on the datasheet. To compare Lambda to Azure Functions or Google Cloud Functions, users also might scrutinize how functions integrate with event systems. For example, Google users can work with the Firebase framework but only make one type of invocation for a function at a time, while Lambda developers have the option to add multiple event sources to a function.
Ready to go it alone? Developers can go serverless without buying into any cloud provider's product with OpenFaaS, OpenWhisk, Knative or another open source project. However, there is a vendor connection to some of these Lambda alternatives: VMware is involved in OpenFaaS, and IBM bases its Cloud Functions product on OpenWhisk. Assess whether your team should take on the complexity of the serverless architecture, issue resolution and security and governance with open source adoption.
As AWS Lambda nears five years of general availability, serverless remains an uncharted territory for many enterprises, but there are examples of real-life deployments and mountains of technical documentation to peruse. Winnow down the options to the best fit for the application, team skills and organization, whether that's all-in on AWS or opportunistically deployed on other cloud hosts.