Blog

Serverless (Cloud Function) Providers Comparison

When talking about serverless there are several major cloud function providers. Though most of them are providing cloud functions, not all of them provide equal functionality. The major difference is the languages they support. And second is the price. Here is a brief comparison:

Supported Languages (as of 29 Nov 2019)

  Aws Azure Google IBM Zeit
.NET yes yes no yes no
Go no no yes yes yes
Java yes yes no yes no
JavaScript / Node.js yes yes yes yes yes
PHP no experimental no yes no
Python yes experimental yes yes yes
Ruby yes no no yes no
Swift no no no yes no

Why suported languages is important. Once you start developing for a platform its a long term commitment. You would like to be able to have the options to use as many languages as possible, without the need to change the providers.

PHP Support (as of 29 Nov 2019)

For me PHP is a very important language and the primary indicator of which provider is the most mature. The reason is that PHP is the only language that is created for web development instead of being a general purpose language. At this very moment PHP for cloud functions is officially supported by IBM only. Some hacks exist for the other providers to run PHP as docker container, but these are unofficial, and incur extra overhead time to call the real PHP functions.

 

Pricing

AWS Azure Google IBM Zeit
https://aws.amazon.com/lambda/pricing/ https://azure.microsoft.com/en-us/pricing/details/functions/ https://cloud.google.com/functions/pricing https://cloud.ibm.com/functions/learn/pricing https://zeit.co/pricing

First 1 million free

$0.20 per million requests

$0.000016/GB-s

First 1 million free

$0.20 per million executions

First 2 million free

$0.40 per million executions

First 5 mln free

$0.20-$40 per million (dependent on memory)

Plan based

 

Conclusion

Looks like the best provider for cloud functions at the moment is IBM mainly for the following two reasons. First IBM is the only provider supporting PHP. The rest of them seem to have issues with providing stable PHP runtime for cloud functions. Second. IBM has the most generous free tier of 5 million free executions.

Another reason why IBM may be the preferred option is that it does provide support for Apache OpenWhisk. OpenWhisk is the underlying technology the IBM cloud functions run on. OpenWhisk allows you to self host your own cloud functions. The development of OpenWhisk is done openly to the public and can be seen on GitHub. And IBM is fully involved. For instance I have asked for several improvements to the IBM cloud functions for the PHP runtime. All of these requests were granted and the updates provided by IBM engineers ended in the OpenWhisk's repository.