Serverless computing, where operational resource management is left to the cloud provider, has been exploding in popularity. According to Right Scale’s 2018 State of the Cloud report, it’s the fastest growing extended cloud service, at 75 percent rate year over year. That growth has led to more curiosity and use of serverless architectures and Function as a Service from the two biggest cloud providers, AWS and Microsoft. In this post, we’ll look at AWS Lambda and Microsoft Azure Functions architectures and compare them in key areas.
AWS Lambda and Azure Functions
Amazon was the first public cloud provider to release a serverless, event-driven architecture, which it did in 2014. Azure followed suit in 2016. The idea of serverless computing allows developers to run code without worrying about provisioning servers, establishing a critical component of DevOps. Work is triggered by actions such as messages from other applications or user actions, rather than a procedural model. Industry leaders believe event-driven architecture, rather than the procedure-based model, could drive more agile and automated infrastructure operations.
AWS Lambda: Lambda only supports code uploaded as a .zip file. On the one hand, this makes things simple because there’s only one way to run your code. On the other hand, if you need to make any quick changes, you’ll have to re-upload the entire package.
Azure Functions: Azure offers support for code services such as GitHub, Bitbucket and VS Team Services, allowing for easy code setup and deployment. Microsoft also offers Logic Apps, which can assist with integration without writing code.
Platforms and scripting languages
AWS Lambda: While both AWS and Azure support several languages, including Python and C#, Lambda offers more support for Python and Java. Lambda runs on a Linux platform.
Azure Functions: Azure especially supports F# and PHP languages, plus Powershell scripting. As should be expected with Microsoft, its functions service runs in Windows.
It’s important to remember that both providers will continue to expand their language offerings until they have reached the saturation point, so check back regularly if you don’t see your desired language listed right away. However, for third-party provider purposes, it’s important to pick a language that is supported in all aspects of your program to avoid code porting difficulties between different FaaS providers down the road.
AWS Lambda: In Lambda, functions are created as standalone elements, so that each acts as its own independent program. This separation also extends to resource allocation. For example, AWS provisions memory on a per-function basis rather than per application group.
Azure Functions: In Azure, functions are grouped on a per-application basis–and this extends to resource provisioning as well. This allows multiple Azure Functions to share a single set of environment variables, instead of specifying their environment variables independently.
AWS Lambda: With AWS, you only pay for the compute time you consume. They also offer subsecond billing, where function triggers and executions are charged in 100 ms units. The first million requests per month are free, and it costs two cents (literally) for every 100,000 requests after. Charges are apportioned between request and compute.
Azure Functions: Azure Function usage is billed in the same way as AWS, where the total cost is calculated from the number of triggers and execution time. They also offer the first million requests for free, and you also pay two cents for every 100,000 executions afterwards.
There is no “wrong” or “right” way to approach these FaaS providers. This post is to merely point out the differences between the vendors to help you make a decision based on your unique business and application needs. AWS has offered serverless services the longest, making it a bedrock for the serverless community; however, this architecture is not one-size-fits-all. If you run a Windows-dominant environment, you might find that Azure Functions is what you need. And don’t forget about Google Cloud Functions–you can read more about them here to learn more about the newest FaaS provider.