Recently, a new kind of cloud computing has been getting more attention from the media and enterprise customers. Serverless computing, also known as function as a service (FaaS), allows developers to run code in the cloud without worrying about infrastructure. They simply upload their code, and the service bills them for the computing resources used to execute their code.
Some analysts believe that serverless could be a big trend in 2017 and beyond. As enterprises embrace DevOps philosophies, they are looking for new ways to simplify operations and improve efficiency — and serverless fills the bill.
In a 451 Research report titled "Functions as a service: the rise of serverless architecture," Donnie Berkholz writes," The rise of FaaS holds the potential to be a new wave in cloud computing. We've moved from infrastructure primitives to platforms and containers on to a point where all infrastructure is fully managed and developers need only care about their code."
Of course, the "serverless" label is something of a misnomer — the code is still running on servers. It's only "serverless" from developers' perspective because they don't have to deploy any infrastructure or even set up any cloud computing instances. Instead, the cloud services all of that for them. This model frees the developers from those responsibilities so that they can focus on creating new applications and services for their organizations.
The 451 Research report notes that common use cases for serverless include video transcoding and other media processing, on-demand ETL, mobile and IoT back ends, Web applications, stream processing and timer-based processing. And early adopters of serverless architecture include Nordstrom, The Seattle Times, Zillow and Netflix.
Amazon was the early leader in serverless, rolling out its AWS Lambda service in late 2014. It gained an early lead in market share, but several other vendors, including Microsoft, Google and IBM, have since gotten into the game.
Microsoft launched its Azure Functions serverless service in 2016. While it is very similar to AWS Lambda, it does have some differences, particularly in regards to programming language support and pricing.
Serverless Computing Languages
In some cases, language support will steer organizations to one platform over the other. Chapin and Roberts advise organizations to consider the skills and experience that their developers already have when making the decision. They noted, "If the rest of your stack uses PHP, choosing Azure Functions would allow you to continue to write software in PHP."
On the other hand, both services have said that they plan to add support for additional programming languages in the future. So if one service or the other doesn't support your preferred language now, it's possible that could change soon.
Serverless Computing Costs
Both AWS Lambda and Microsoft Azure Functions offer a free trial period, which makes it easy to take them for a test drive. In fact, Chapin and Roberts said their number one tip for enterprises that are trying to decide between the two platforms is to "try them out!" They added, "It's well worth the effort to simply try each of them, assuming your other constraints are met."
When the trial period is over, AWS Lambda and Microsoft Azure Functions offer identical free pricing tiers. Each includes 1 million free requests and 400,000 GB-seconds of compute time per month.
After that, things begin to get a little bit more complicated. Both services calculate fees based on the number of functions executed and the consumption of resources. However, the billing is much more granular than other types of cloud computing. For serverless, AWS or Azure will bill in fraction-of-a-second increments, depending on compute usage.
With Azure Functions, customers pay $0.20 for every million executions after the free tier is used up. In addition, Microsoft charges $0.000016 per GB-second of compute usage. However, organizations can also choose to incorporate their Azure Functions usage within their Azure App Service plan, which may change the rate they pay.
With AWS Lambda, executions also cost $0.20 per million requests, but the compute fees depend on the size of memory you select. On the low end, 128MB costs $0.000000208 per 100 milliseconds, and on the high end, 1536MB costs $0.000002501 per 100 milliseconds.
In addition, customers frequently use other cloud computing services alongside serverless computing. For example, users will almost certainly need some cloud storage, and they may also need database or data transfer services as well. Those fees are charged separately and add to the complexity of figuring out the total cost. Both services have tools for estimating costs on their websites, which helps.
In general, however, the fees for Microsoft Azure Functions and AWS Lambda are so similar that it's hard to make a case for choosing one over the other based on price.
Choosing a Serverless Vendor
A much bigger factor in the selection process is the catalog of other services that each provider offers. "Decisions around serverless platforms should take into account not only the capabilities of the specific serverless compute (or functions as a service) platform, but also the capabilities of the surrounding ecosystem," said Chapin and Roberts. "We often see developers and companies evaluating serverless compute offerings in a vacuum — the real value is in the capability of the entire serverless ecosystem that a cloud provider offers."
If your organizations is already using a lot of cloud computing services from one particular vendor, it probably makes sense to continue using that vendor for serverless. "The most significant driver for choosing one platform over another is whether or not a developer (or company) already has significant investment in a platform," said Chapin and Roberts. "Generally, companies that are building serverless systems already have significant experience with, and investment in, a particular cloud provider. So, if your company is already using AWS, there’s really no reason not to choose Lambda."
Again, the free trials and free tiers make it easy for organizations to experiment with both AWS Lambda and Microsoft Azure Functions. The two services do have some other subtle differences beyond the ones mentioned here, and developers may find that they simply prefer one or the other.
As always, starting small is a good idea. But if a small scale trial goes well, serverless architecture may help your organization increase developer productivity and scale with ease as usage of your applications and services grows.