Serverless - AWS Lambda vs. Microsoft Azure Functions vs. Google Cloud Functions vs. IBM OpenWhisk Part 2
Posted by Žiko Petrović on 23 July 2020
In serverless architecture, applications are broken up into individual functions that can be invoked and scaled individually. In Part 1, we talked about serverless architecture in detail, started talking about cloud providers, and introduced AWS and Azure. In this part, we will continue our talk and introduce the other two providers, Google and IBM. Finally, we will do a comparison of these four cloud providers.
Google was ahead of the crowd when it comes to the serverless revolution. Although Cloud Functions, Google’s main serverless platform was launched in 2017, Google App Engine offered metered billing for certain applications starting in 2008. App Engine’s functionality was much more limited than that of modern serverless platforms, but it was a precedent for services like Lambda.
Cloud Functions by Google is a serverless execution environment that can be used to build and connect cloud services. The code is executed in a fully managed environment, without the need for infrastructure or server management. Google Cloud supports the execution of functions written in:
In general, Google Functions is a less mature serverless framework than the serverless platforms from AWS and Azure. However, it is sufficient for certain workloads and it Google Functions will likely continue to expand. You can simply write functions that are connected to events associated with your cloud infrastructure or services. There are currently two types of Google Cloud Functions that are supported:
► Foreground Functions (Synchronous) – These are directly invoked via an HTTP endpoint that is provided for your function. They are also known as HTTP Triggered functions.
► Background Functions (Asynchronous) – These are indirectly invoked via an event that triggers your function. Currently, only Google Cloud Storage and Pub/Sub events are supported.
Popular Use Cases:
► Serverless Application Backends – Trigger your code from Google Cloud services, or call it directly from any mobile or web application. Cloud Functions provides a connective layer of logic that lets you integrate and extend services, making it possible to build serverless applications that are scalable, secure, and cost-effective.
► Real-Time Data Processing Systems – Execute your code in response to changes in data. Functions can respond to events from Google Cloud services such as Cloud Storage and Cloud Logging, allowing you to power a variety of serverless real-time data processing systems.
► Intelligent Applications – Use Cloud Functions to extend your products and services with voice and text-based natural experiences that help users get things done. They also use Cloud Functions to retrieve relevant information from videos and images thus enabling you to search and derive insight from your media content.
OpenWhisk was originally developed at IBM as part of the Bluemix, now known as IBM Cloud. It was donated to the Apache Foundation and its new name Apache OpenWhisk is under IBM’s commercial offering called IBM Cloud Functions.
IBM Cloud Functions became generally available and launched in 2016. The IBM Cloud Functions is based on Apache OpenWhisk that provides an ecosystem where developers can write and share code across environments. Developers get to execute their code on demand in a highly scalable environment.
IBM Cloud Functions supports the execution of functions written in:
IBM as a functions-as-a-service (FaaS) supports many applications development languages which is a huge advantage.
Image source: https://www.ibm.com/blogs/cloud-archive/wp-content/uploads/2016/05/whisk-openwhisk-card.png
Popular Use Cases:
► Data Processing – With the amount of data now available, application development requires the ability to process new data and potentially react to it. Cloud Functions can be configured by system-provided or custom feeds to react to changes in data and automatically execute actions on the incoming feeds of data. The data store options and low administrative maintenance make a Cloud Functions based system highly agile and easily adaptable to changing requirements.
► Cognitive Processing – Cognitive technologies can be effectively combined with Cloud Functions to create powerful applications. For example, Watson Visual Recognition can be used in Cloud Functions to automatically extract useful information from videos without having to watch them. Another good use of Cognitive Functions is to implement a Bot function that is combined with cognitive services.
All serverless platforms support the use case around running services, usually for a mobile, web, or IoT backend, and also perform ETL functions where data is moved between locations and transformed. Google Cloud Functions and OpenWhisk are aimed primarily at these use cases. If the use case involves extending monitoring or reacting to events within the cloud provider’s infrastructure, then organizations with existing deployments on AWS and Azure will be best served by leveraging the serverless platform that co-exists on their cloud of choice.
When looking to select an appropriate serverless service, there are several key things to consider:
- Existing cloud resources – It is easier to stick with the same cloud provider already in use for other services.
- Connection to static resources – It is important to have easy connection options to static (non-serverless) options such as storage and databases.
- Portability – Serverless could potentially become a form of lock-in so it is a good idea to have a service where functions are portable.
- Cost – Going serverless can be a real cost saving thus be sure to identify a provider that offers the best pricing.
Software Developer at PanonIT