Top Serverless Platforms to Follow in 2020
in Serverless
As technologies, infrastructure and services have moved towards a cloud-hosted environment, serverless architecture has become more than a buzzword. 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.
Serverless Platforms
AWS Lambda
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.
Cloudflare Workers
Cloudfare Workers combines the features of the serverless architecture with edge computing. Cloudflare also provides CDN and DNS servers through its network of data centers. Cloudflare workers provide a lightweight JavaScript execution environment and are based on the V8 JavaScript Engine. In addition to JavaScript, languages that support compilation to WebAssembly like Go and Rust are also supported.
Azure Functions
Microsoft Azure Functions aligns with the Microsoft world of languages and services. C#, F#, JavaScript, Java, Python are the supported languages. Triggers and bindings with other Microsoft and Azure services as well as with Twilio are supported. Like Lambda, Azure uses API gateways that require careful configuration but provide better reporting and control. Monitoring and Logging functions are supported through Microsoft Monitor. Pricing is similar to Lambda with lower pricing for Windows and SQL usage.
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.
Now
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
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
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
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
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
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
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
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.
Conclusion
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.
Get similar stories in your inbox weekly, for free
Share this story:
The Chief I/O
The team behind this website. We help IT leaders, decision-makers and IT professionals understand topics like Distributed Computing, AIOps & Cloud Native
Latest stories
How ManageEngine Applications Manager Can Help Overcome Challenges In Kubernetes Monitoring
We tested ManageEngine Applications Manager to monitor different Kubernetes clusters. This post shares our review …
AIOps with Site24x7: Maximizing Efficiency at an Affordable Cost
In this post we'll dive deep into integrating AIOps in your business suing Site24x7 to …
A Review of Zoho ManageEngine
Zoho Corp., formerly known as AdventNet Inc., has established itself as a major player in …
Should I learn Java in 2023? A Practical Guide
Java is one of the most widely used programming languages in the world. It has …
The fastest way to ramp up on DevOps
You probably have been thinking of moving to DevOps or learning DevOps as a beginner. …
Why You Need a Blockchain Node Provider
In this article, we briefly cover the concept of blockchain nodes provider and explain why …
Top 5 Virtual desktop Provides in 2022
Here are the top 5 virtual desktop providers who offer a range of benefits such …
Why Your Business Should Connect Directly To Your Cloud
Today, companies make the most use of cloud technology regardless of their size and sector. …
7 Must-Watch DevSecOps Videos
Security is a crucial part of application development and DevSecOps makes it easy and continuous.The …