Providers
The serverless technology has raised a lot of eyebrows in the community in the last few years and a few big players have stepped up to release their own serverless compute infrastructure platforms.
The Serverless Framework recognizes the concerns involving provider lock-in and complexity to adopt these platforms. The Serverless Framework provides flexibility for the developer to pick an infrastructure provider of their choosing, develop and deploy applications using it.
Commercial Hosted Platforms
We will take a look at some popular commercial hosted platforms, namely, AWS Lambda, Microsoft Azure Functions, Google Cloud Functions, and IBM Cloud Functions in more detail.
A Comparative Look
Features/Providers | AWS Lambda | Azure Functions | Google Cloud Functions | IBM Cloud Functions | |
---|---|---|---|---|---|
Language Support | Node.js, Java, C#, Python | Node.js, C#, F#, Python, PHP | Node.js | Node.js, Python, Java, Swift, Docker | |
Security | AWS IAM, VPC support | OAuth providers such as Azure Active Directory, Facebook, Google, Twitter, and Microsoft Account | Cloud IAM | IBM Cloud IAM, OAuth providers such as Google, Facebook, and GitHub. | |
Monitoring | AWS CloudWatch | Azure Application Insights | Stackdriver Monitoring | IBM Cloud Functions Dashboard | |
Logging | AWS CloudWatch | Azure Application Insights Analytics | Stackdriver Logging | IBM Cloud Functions Dashboard | |
Auditing | AWS CloudTrail | Azure Audit Logs | Cloud Audit Logging | ||
Alerts | AWS CloudWatch Alarms | Azure Application Insights, Log Analytics, and Azure Monitor | Stackdriver Monitoring | IBM Cloud Functions Dashboard | |
Tooling Support | AWS CodePipeline, AWS CodeBuild | Azure Portal, Azure Powershell, Azure CLI, Azure SDK | gcloud CLI (beta) for functions | IBM Cloud Functions UI, IBM Cloud Functions CLI, OpenWhisk Shell | |
Debugging Support | AWS X-Ray | Azure CLI - local debugging, Azure App Service - remote debugging | Stackdriver Debugger | wskdb: The OpenWhisk Debugger openwhisk-light | |
Pricing | * $0.20/million requests with 1 million requests per month free. More details… |
* Execution Time: $0.000016/GBs, 400,000 GBs/month are free * Total Executions: $0.20/million executions, with 1 million executions/month free More details… |
* Invocations: $0.40/million invocations with 2 million invocations free * Compute Time: $0.0000025/GB-sec with 400,00 GB-sec/month free & $0.0000100/GHz-sec with 200,000 GHz-sec/month free More details… |
* Execution Time: $0.000017 GB-s, 400,000 GBs/month are free * No extra charge per invocation or API gateway call More details…. |
|
Limits | * Memory allocation range: Min. 128 MB / Max. 1536 MB (with 64 MB increments) * Ephemeral disk capacity (“/tmp” space): 512 MB * Number of file descriptors: 1,024 * Number of processes and threads (combined total): 1,024 * Maximum execution duration per request: 300 seconds * Invoke request body payload size (RequestResponse): 6 MB * Invoke request body payload size (Event): 128 K * Invoke response body payload size (RequestResponse): 6 MB More details… |
* Allow only 10 concurrent executions per function * No limitations on max. execution time limit | Resource, Time and Rate Limits are defined under Google Cloud Functions Quota limits | IBM Cloud Functions System Limits |
AWS Lambda
AWS Lambda is Amazon’s serverless compute offering, announced in 2015.
AWS Lambda lets you run code without provisioning or managing servers. You pay only for the compute time you consume - there is no charge when your code is not running. With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.
Microsoft Azure Functions
Azure Functions is Microsoft’s serverless compute offering, announced in spring of 2016.
Process events with a serverless code architecture. An event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume.
Google Cloud Functions
Cloud Functions is Google’s serverless compute offering, with Beta announced in spring of 2017.
A serverless environment to build and connect cloud services. Construct applications from bite-sized business logic billed to the nearest 100 milliseconds, only while your code is running. Serve users from zero to planet-scale, all without managing any infrastructure.
IBM Cloud Functions
IBM Cloud Functions is IBM’s serverless compute offering, based on Apache OpenWhisk, which launched in early 2016.
IBM Cloud Functions is an event-driven compute platform that executes application logic in response to events or through direct invocations–from web/mobile apps or other endpoints. The IBM Cloud Functions serverless architecture accelerates development as a set of small, distinct, and independent actions. By abstracting away infrastructure, IBM Cloud Functions frees members of small teams to rapidly work on different pieces of code simultaneously, keeping the overall focus on creating user experiences customers want.
Opensource Platforms
We will take a look at some popular opensource platforms, namely, Kubeless, OpenFaaS, and Apache OpenWhisk in more detail.
A Comparative View
Features/Providers | Kubeless | OpenFaaS | Apache OpenWhisk |
---|---|---|---|
Language Support | Node.js, Python, Ruby | ||
Security | Kubernetes Role Based Access Control (RBAC) | ||
Monitoring | Prometheus | ||
Logging | Fluentd | ||
Auditing | |||
Alerts | Prometheus Alert Manager | ||
Tooling Support | Kubeless UI, Kubeless CLI, Kubeless serverless plugin | ||
Debugging Support | |||
Pricing | Open-source solution to be deployed for free on any Kubernetes cluster | ||
Limits | Memory limits using Pod limits |
Kubeless
Kubeless is an open source project initiated by Bitnami, first introduced in December 2016.
Kubeless is a Kubernetes native serverless solution. It leverages Kubernetes API primitives to deploy functions within Kubernetes Pods and expose them via Kubernetes services. Functions can be triggered by events or via regular HTTP calls. Monitoring and scaling come from the underlying Kubernetes features.
Credits: Rupak Ganguly (@rupakg), James Thomas (@thomasj) ***