The State Of Serverless On AWS, Azure & Google Cloud In 2024
The year 2024 has well passed through Q1 now. Serverless compute started with Google App Engine 16 years ago (released on April 7th, 2008) and thrived with AWS Lambda that will celebrate its 10th anniversary this year (launched on Nov, 13th 2014). All noteworthy cloud providers offer serverless compute today. Function-as-a-Service (or FaaS in short) has won the hearts of developers and businesses alike as it allows operating at a larger scale and lower cost. The elasticity of FaaS not just rightsizes applications and saves cost, it also helps protect the environment. Unused serverless resources are shared among tenants in a cloud environment.
Serverless has come a far way for over the past decade, ultimately becoming a commodity in cloud computing. It’s time for a review of the current state. I compiled a comparison of serverless differences between Amazon Web Services (AWS), Microsoft Azure and Google Cloud.
You can download the comparison here: State Of Serverless 2024 (PDF; Adobe Acrobat Cloud)
In this article I will summarize and evaluate the different offerings, see how much Azure and Google Cloud were able to keep up with Amazon. Please don’t get this article wrong. There are many offerings on AWS, Azure and Google Cloud. Yet, this article and the comparison exclusively focuses on serverless and FaaS specifically.
Evolution of FaaS platforms
One could argue that by now the FaaS offerings of AWS, Azure and GCP should’ve become almost identical. Yet, there are still very significant differences. In fact so significant that they require thorough consideration when deciding for a specific cloud to run your FaaS on.
It’s surprising to see that both Google and Microsoft do not yet offer FaaS on arm64 CPUs. Surprising in so far that both Google (known for its Android operating system targeting arm64) and Microsoft (who partners with Qualcomm for Windows on ARM) have not yet kept up with AWS offering their Graviton2 arm64 CPUs with AWS Lambda. Amazon made Graviton2 available for AWS Lambda back in 2021: AWS Lambda Functions Powered by AWS Graviton2 Processor. With Macbooks running on Apple Silicon (which is Apple’s arm64 CPU), more and more developers are already building on arm64. The arm64 architecture is known for its high performance compared with a very low cost and energy footprint.
- AWS offers FaaS with arm64, it’s x86_64 only on Azure & Google
- Google still doesn’t offer the deployment of compiled executables
- Azure’s SSL offering is not en par with AWS and Google
- Neither Azure nor Google have drift detection for IaC deployments
- One shot deployment (as with AWS SAM) isn’t a thing on Azure or GCP
The differences between AWS, Azure und GCP with Infrastructure-as-Code (IaC) lie in the fine details. While AWS SAM can deploy a complex serverless application with all its resources in a single shot and with a single command, neither Azure nor GCP have an equivalent. While Google offers Firebase for easy application development, it’s counterpart would be AWS Amplify and Azure App Service.
Impact of missing SSL wildcard certificates
Both Amazon and Google issue SSL certificates with their own certificate authority free of charge. Google will charge $0.20 per certificate and month from the 101st certificate onwards. AWS makes SSL entirely free. Azure has no similar offering for wildcard SSL certificates. This makes Azure pricey and limits the ability to deploy CDNs for any domain with SSL certificates programmatically. Something that is absolutely crucial in the SaaS sector. Azure customers in the SaaS space would have to rely on rate limited services such as Let’s Encrypt.
In the light of the recent security reports around Azure (see: “Microsoft needs to prioritize security”), Microsoft needs to step up its security game immediately. This includes a fully-blown SSL offering for its Azure customers that is en par with AWS ACM and Google.
Development tooling for Serverless
Besides elasticity and peace of mind in operating serverless applications, the serverless offerings also provide better developer productivity and thus faster time to market. Development tooling needs to work seamlessly on macOS, Windows and Linux. Developers on Windows 11 or Linux with x86_64 machines need to be as productive as those on Apple Silicon Macs.
Microsoft’s CLI and serverless tooling comes as x86_64 binaries on Apple Silicon and thus requires emulation with Rosetta. That harms developer productivity on Apple Silicon machines and outlines Microsoft’s struggle with the support for arm64 systems. Google’s emulator for cloud functions is in Alpha state at the time of writing. A virtualized execution for the defined target platform is currently only generally available with AWS SAM.
All three cloud platforms have a very good SDK availability and IDE integrations for Visual Studio Code. Microsoft leads the pack in general development tooling as it owns Visual Studio Code and Github including Github Copilot. However, Microsoft’s great developer tooling cannot make up for the maturity and cross platform support of AWS SAM. For .NET developers that live on the Windows platform already, that’s nothing to worry about though. However, existing AWS or Google tenants that want to test drive Azure workloads won’t be excited about the limitations.
Technical communities
Engineers, developers and architects rely on communities to exchange about best practices and all the small things that documentations cannot cover. The dominant communities around software engineering, operations, cloud computing and AI are on Reddit, Stack Overflow, Twitter, Github and YouTube. Engineers require cloud providers to publish training material, best practices, presentations and success stories to learn from.
AWS still has the largest community by far. While the size of the community does not necessarily resemble anything about the quality of the platform, it clearly shows the popularity. Having a large community to rely on helps solve problems through the exchange with others. One may argue that Azure customers could be less active on social media. That however does not explain why both Microsoft and Google have such little content and material on YouTube.
The GitHub stars of the various SDKs give an insight on what the platforms specialize in. Microsoft is clearly dominant within its own Windows and .NET ecosystem. Both TypeScript and .NET developers will feel very much at home on Azure. Go and Rust developers will notice a slight bias towards .NET in the documentation and publications. Google Cloud does have a small yet strong community. There’s no excuse though for the tiny amount of training and learning material that Google publishes.
Runtime environments
Engineers require a diverse set of runtime environments that can house the rich solutions for the various challenges they are tackled with. The clouds need to house both innovative modern applications as well as migrated legacy code. Azure shines by providing custom runtimes for both Linux and Windows. This allows to run almost any application imaginable. Windows support is something that AWS lacks entirely throughout its serverless offering. AWS’ edge over Azure with serverless runtimes is the availability and support of arm64, extended custom runtimes (Lambda layers) and the tight integration into its ecosystem (e.g. EventBridge).
Windows support is home turf for Microsoft, but Azure Linux support is also first class. Microsoft’s involvement in and around Linux and the Open Source community leaves no doubt about the future of Linux inside Azure. Azure would have the most diverse FaaS platform, would it support arm64 in Azure Functions. The absence of custom runtimes within Google Cloud is a massive disadvantage. It can only be explained with Google being more focused on their App Engine and Cloud Run services. Both are not FaaS.
The situation of Go on Google Cloud
Google invented the Go programming language. It was conceptualized by Robert Griesemer, Rob Pike and Ken Thomspon. Go support on Google Cloud is everywhere, as one would expect. Yet, when deploying Cloud Functions written in Go, developers have to deploy their source code that is mandatory to be compiled by Google Cloud Build. There’s no way a developer can build the binary in an external pipeline and only deploy the binary file. Google needs to close the gap quickly and provide custom runtimes as it is losing out even on its home turf, the Go programming language. And it’s not just Go, the inability to run custom runtimes prevents Google Cloud Functions from running applications written in COBOL, Delphi, Swift or Rust.
Serverless Artifical Intelligence
With the rise of Large Language Models (LLMs) like Claude 3, ChatGPT or Google Gemini, more and more serverless applications integrate AI to replace complex algorithms with LLMs. The fast paced development in AI requires engineers to have access to a vast variety of models. In the most recent benchmarks, Anthropic Claude 3 outperforms GPT and Gemini Ultra at far lower cost. Such advances require engineers to constantly stay up to date with the latest benchmarks of the various models. The cloud needs to provide integrated and seamless access to the latest models.
The top performing LLMs are all available with AWS, Azure and Google Cloud. SDXL, currently the benchmark in image generation, is only available on AWS and Google Cloud. Open AI is exclusively available on Azure and Gemini is exclusive to Google Cloud. That’s understandable and neglectable since both Gemini and Open AI are drastically falling behind Claude 3 in bechmarks. Azure needs to work on adopting models from Stability. Stability, as a Google investment, gives Google Cloud a slight advantage in the image generation space. Google Cloud also offers more Stability models than AWS does.
Variety of different models and services
It’s very comforting to see that all three cloud providers offer a wide variety of AI services. From image and video processing through Audio, Text generation and chatbots. Google’s Vertex AI Model Garden provides a wide range of different models. AWS’ Bedrock has increased the number of models significantly. Microsoft needs to watch out that the exclusivity of having Open AI remains an advantage and does not become a burden, considering how much GPT4 and DALL-E have fallen behind both in quality and pricing. A cloud with a variety of different models is the future and amulti-model approach to the cloud the obvious path.
Summary and closing arguments
The cloud era reached the plateau of certainty. Around 10 years ago, companies were carefully evaluating whether they should adopt serverless computing or not. In this day and age, the only question is which serverless offering best fits which solutions. Google and Microsoft need to ensure they’re not becoming laggards again.
Absence of arm64 in FaaS is inexplicable
The absence of arm64 in FaaS at Azure and Google is shocking. While the absence of Windows on both AWS and Google Cloud is understandbly linked to Microsoft’s protective licensing politics, adopting arm64 for FaaS just requires utilizing the already existing instances for FaaS. Both Azure (e.g. Dps v5) and Google Cloud (e.g. Tau-T2A) already have arm64 instances. The absence of arm64 in FaaS is either because both Azure and Google are late to the party or their customers simply aren’t asking for it. This also prevents existing AWS customers from considering Google Cloud or Azure for a test drive. AWS customers have adopted AWS Graviton2 CPUs and these are only compatible with Ampere and Nvidia chips. The Intel Xeon CPUs running Azure Functions just won’t cut it.
Azure’s Windows advantage could be costly
When .NET developers are looking for their natural habitat, they’ll find a home in Azure. Dev Tools work perfectly on Windows, everything neatly integrates with Azure Active Directory and even Azure Functions use Windows by default. Microsoft clearly knows how to best please their clientel. Unsurprisingly, Azure tooling on macOS and Linux (both x86_64 and arm64) comes with a Windows smell. The abence of wildcard SSL certificates on Azure is a showstopper for many SaaS business cases. Azure has the taste of a Corporate cloud with a Windows focus. That can be dangerous for Microsoft when their mostly corporate customers get a glimpse of the outside world. Corporations that are trying to rejuvenate themselves through cloud adoption and AI may find that a much too corporate Azure may not fit their desired youthfulness.
ARM, Bicep and GDM are not up to date
AWS SAM makes it very easy to deploy a simple serverless application, written in any language and using a wide variety of AI models. SAM, essentially being CloudFormation, also provides drift detection and seamless management of the deployed stacks. Complex stacks can be deployed on AWS in one step. Neither Bicep nor GDM provide the scale and simplicity of CloudFormation and SAM. Yes, there still is Terraform, but that’s a 3rd party product and IaC should be at the core of every cloud platform. For the last decade, Azure and Google Cloud have struggled to keep up with AWS on IaC and there’s homework left to do.
Lack of publications on Azure and Google Cloud is abysmal
AWS, Azure and Google Cloud all provide useful documentation and reference manuals for their APIs and Infrastructure-as-Code. There’s almost no service that you won’t find a video about on the AWS YouTube channel. Microsoft still lacks the volume of hands-on guides and tutorials. While almost 5,000 YouTube videos on the Google Cloud channel are at least a start, there’s no excuse for having only 1,500 videos on the Azure channel. It adds to the picture of “Ask your Microsoft representative or partner” — an approach that Azure had very early on when AWS and Google Cloud were already full self serve platforms.
AWS remains best in class with the lowest TCO
Azure and Google Cloud have their little advantages in one corner or another. Azure beats both when it comes to Windows-based FaaS. Google has great Go support and a wide variety of Stability models as a serverless offering. Overall, including the latest advances in AI, AWS remains the top dog in the FaaS space. Not just does AWS have the greatest variety of services, they also have the lowest possible operating cost for FaaS. Neither Google Cloud nor Azure can currently beat AWS on TCO — the most important KPI for any business operating in the cloud.
Thank you for reading. Jan
This article was NOT written using AI. All my work is handicraft. Images in this article were generated using SDXL models.