Azure Functions vs. AWS Lambda – Scaling Face Off
azurefromthetrenches.com
azurefromthetrenches.com
.NET Core has way less baggage than .NET 4.6 [1] so you’d be expecting AWS to come out ahead.
It looks like Azure functions supports .NET Core now [2]. (Edit: just noticed the author is aware of this [3].)
Of course it might also be Blob storage having higher latency than S3.
Having used Azure Functions before I agree with the article’s criticisms about scaling.
[1] https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1... Mind this article is talking about comparing ASP.NET with ASP.NET Core, and .NET with .NET Core, not just .NET Core’s performance.
[2] https://github.com/Azure/Azure-Functions/issues/98
[3] https://www.azurefromthetrenches.com/azure-functions-v2-prev...
- Google Cloud Functions can't ingest e-mail. Also, JS lockin if you care about which platforms are supported.
- Google App Engine can only ingest e-mail in the Standard environment. OK, fine. But the standard environment regularly takes almost a full minute to load and boot my app, after which the request is killed for taking too long. Additionally, the sample code (!) for opening new Stackdriver contexts breaks with a totally inscrutable error message.
You can say "well, maybe your app sucks", but it's been running on AWS (SES + Lambda) for months and every aspect about it has been painless.
As far as I remember, that is..
Why? Cloud Functions support HTTP.
I mean, if you can stay within AppEngine’s free tier quotas, there's a clear reason to use it, but otherwise it would seem to be a matter of weighing pros and cons, with HTTP alone not deciding that you should use AE over CF.
https://cloud.google.com/free/docs/always-free-usage-limits#...
Disclaimer: I work at GCP.
Disclaimer: I am at Google, but not on GCF.
https://medium.com/@salmaan.rashid/running-net-on-google-clo...
Native support for more languages is coming.
Azure has a lot of great things going for it, but I've had a lot of issues getting newer tech out on it without considerable delay. I hope both Azure and GCE give AWS a run for their money in coming years :)
I did try the preview version of Core 2.0 on Azure Functions but it's absolutely woeful at the moment and the dev team confirmed they've done no performance work at all. As I recall the single request response time was around 15ms faster for Core than for full fat framework but the response to increased load was dreadful - never falling below a several second response time with the 400 concurrent user test and errors creeping in.
I largely set off down this path as even in isolation the Azure numbers were concerning and not at all what I expected from a serverless architecture and so I wanted a reference point.
As soon as I get an update from MS about Core performance work or it leaves preview I'll be rerunning the tests as I'm very aware that doing this across the two runtimes is less than ideal.
However from what I've observed the issues look to be more about the broader architecture used for Azure Functions than the framework runtimes. I'm hoping to learn more from Microsoft.
Seems like a long shot but I figured this is a good place to bring it up.
From the article's data, it's really tempting to use AWS Lambda now given this benchmark.
Averages are a meaningless stat especially if you benchmark.
Averages are very susceptible to outliers and don’t give a proper insight into your data. What you really want is: how did half of my requests perform, 90% of requests perform, 95% of requests perform, 99% of requests perform
To be fair, it's not clear which form of average is used in the article and your assumption that it is the mean is likely correct.
Is there any foundation to this?
"av·er·age\ˈa-v(ə-)rij\ noun
: a number that is calculated by adding quantities together and then dividing the total by the number of quantities
: a level that is typical of a group, class, or series : a middle point between extremes
Full Definition
1 a : a single value (as a mean, mode, or median) that summarizes or represents the general significance of a set of unequal values b : mean 1b 2 a : an estimation of or approximation to an arithmetic mean (...)"
It's common to see arithmetic mean and average to be treated as synonyms - but the mean is really just a type of average.
It compares mode, median, and mean as each being specific implementations of a more general concept of discrepancy.
For a given especially slow request would you expect a corresponding especially fast request?
https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1...
https://www.azurefromthetrenches.com/azure-functions-v2-prev...
https://www.azurefromthetrenches.com/serverless-blog-christm...