Top Serverless Platforms to Follow in 2020
As technology infrastructure and services have moved towards a cloud-hosted environment, serverless architecture has become more than a buzz word. The serverless architecture provides a model for developing applications with a knowledge that the cloud provider would dynamically manage the allocation and provisioning of computing resources. Serverless architecture is usually defined using the following equation.
Serverless = BaaS (Backend as a service) + FaaS (Function as a service)
BaaS comprises services like database management, cloud storage, user authentication, push notifications, and hosting. FaaS allows developers to write modular functions which can be executed on remote servers managed by the cloud service provider, in response to specific events.
The serverless framework allows for the development of highly scalable, high-availability applications as small independently managed units or microservices. Moreover, application owners are only required to pay for the exact processing power/services used. Almost all cloud service providers offer serverless platforms today. There are also open-source offerings backed by cloud/CDN service providers. As such, identifying a suitable platform for your needs can be difficult. Available support for different types of programming languages, application types, event sources, deployment methods, and monitoring/logging features needs to be considered along with pricing. In this article, we will explore the nuances of the available serverless offerings with regards to some of the above features.
Perhaps the benchmark platform to compare others, AWS Lambda provides native support for functions written in Java, Go, PowerShell, Node.js, C#, Python, and Ruby code and a runtime API for other languages. Event sources for Lambda functions can be any of the other AWS services that can trigger functions synchronously or asynchronously. Lambda offers multiple deployment options for sophisticated users. Lambda applications can be monitored using Amazon CloudWatch, Amazon X-Ray, or Dashbird. Lambda provides a free-tier as well as a pay-per-request pricing model.
Google Cloud Run
Google launched Cloud Run in April 2019. Google Cloud Run is based on Knative and allows the use of containerized applications with stateless web servers. These applications can also be tested locally. This model does not entirely utilize serverless benefits because the container includes a web server that does some of the work (authentication, error-handling, etc.) that should ideally be handled by the serverless platform.
Alibaba Function Compute
Alibaba Function Compute is very similar to AWS Lambda from an implementation perspective, although a limited number of triggers and integrations are supported. It offers support for PHP in addition to other languages supported by Lambda. A unique feature offered by Alibaba is a way to use a shared file system in functions.
ZEIT Now is a serverless platform with quick and easy set-up, and limited configuration/optimization management required from developers. It supports Node.js, Go, and Python. ZEIT itself provides CDN services similar to CloudFare, and functions can be executed at the edge. The platform is suitable for static sites with serverless functions.
IBM OpenWhisk is based on Apache OpenWhisk and supports multiple languages like Node.js, Swift, Java, PHP, Python, and additional languages via Docker containers. It integrates with other services like IBM Cloudant database, IBM EventStreams, and IBM Watson API's, which provides natural language processing and AI capabilities. Monitoring and Logging capabilities are provided through IBM Cloud Monitoring. There is no time limit on single function invocation, which makes it suitable for long-time invocation.
OpenFaas a brainchild of Alex Ellis, is an open-source serverless platform that supports serverless functions deployed on Docker Swarm or Kubernetes. The code can be written in any language inside the containerized functions. It is easy to set up as it offers a default configuration but is also customizable. There is no limit on runtime for functions. Since the application is containerized, it offers high portability.
Kubeless is an open-source serverless framework that supports functions and is designed to be deployed on a Kubernetes cluster. It supports Python, Node.js, Ruby, PHP, Golang, .NET, Ballerina and custom runtimes. Triggers are supported through the Kafka messaging system and HTTP events. Monitoring is supported through Prometheus. The drawback of Kubeless is that it is not adequately represented by a developer community or documentation.
Knative is an open-source initiative that combines Kubernetes with Serverless and is largely supported by Google engineers. It provides a platform to build serverless solutions on top of Kubernetes. Knative supports autoscaling, in-cluster builds, and eventing framework for cloud-native applications on Kubernetes.
Fission is another open-source serverless framework released by Platform9 and is based on Kubernetes. It allows developers to concentrate on coding and takes care of the plumbing with Kubernetes. It offers language flexibility and supports HTTP events and can be set-up easily.
Nuclio is another open-source serverless platform targeted at applications that require high data-processing capabilities as it supports persistent connections. It can run over Docker or Kubernetes and is portable without any vendor lock-in. It supports multiple event sources like HTTP Events, Kinesis, Kafka, Rabbit MQ etc.. and multiple log destinations.
Fn Project supported by Oracle provides a way to create and run serverless functions on Docker. They can be tested and run locally or on any cloud environment with a Docker engine. The runtime itself supports all languages, but deeper functionality is available for Java, Go, Python, and Ruby.
Serverless platforms are continuously evolving to support the latest applications and infrastructure requirements. There are comprehensive products like Lambda and Azure which try to address a variety of application requirements but may be difficult to navigate. There are also open-source products that address specific needs, like deployment over containers (Knative, Fn Project etc), optimization for data science (Nuclio), Mobile app development (Firebase + Cloud Functions). Some open-source serverless platforms do not enforce vendor lock-in while others are optimized to work with other cloud services from the same vendor. Whatever be the case, there seems to be a flavor of serverless platform available for every use case. We hope that after reading this article, you will be able to find the right flavor to get you started on your serverless journey.
Share this story with your friends
The team behind this website. We help IT leaders, decision-makers and IT professionals understand topics like Distributed Computing, AIOps & Cloud Native