Horse race

Serverless computing update: The latest on the top 4 platforms

If you're not doing serverless computing now, chances are you will be soon. And if you're already working with serverless, its role in IT operations is only likely to expand. But the technology has been moving fast. Are you up to date?

It's difficult to stay on top of the latest developments, as the state of serverless ecosystems has changed dramatically since last year. What new capabilities might you leverage in your own serverless architectures? That's where this summary comes in handy.  

Below I've listed the most important recent announcements from the major serverless platforms: Amazon Web Services, Microsoft Azure, Google Cloud Platform, and IBM Bluemix/Apache OpenWhisk. 

Use this survey of the serverless landscape to help you design better serverless systems — and save you from wasting time and effort filling feature gaps that no longer exist. You can also use it help you decide when to adopt serverless, if you're not already there.

    Multicloud Monitoring: How to Ensure Success the First Time

    Amazon Web Services

    Amazon is charging ahead with its AWS serverless ecosystem. In 2017 it announced its largest number of integrations to date with AWS Lambda, its function-as-a-service (FaaS) offering, and other cloud services. And since then it has added a few more. Lambda functions can now be triggered directly with messages from Simple Queue Service (SQS) queues, and those functions are now fully integrated with AWS X-Ray, Amazon's distributed tracing service. 

    Lambda functions received several enhancements:

    • The default concurrency limit per account is now 1,000 (it can be increased more via a support request) and the maximum amount of available memory is 3008 MB.
    • The Go runtime is available, along with new versions of the NodeJS, Python, and C# runtimes.
    • You can now set concurrency limits on individual functions so that they have reserved capacity or get throttled, depending on requirements.
    • The UI console for AWS Lambda has been redesigned for a better user experience (more about that later).
    • You can now configure AWS CodeDeploy to shift traffic gradually between function versions, with automatic rollback if problems are detected.

    Lambda@Edge, the AWS FaaS service integrated with Amazon's content delivery network (CloudFront), has added support for Node.js 8.10 and can now access query string parameters and other request headers. 

    AWS FaaS and API Gateway announcements

    FaaS has become popular for the Internet of Things (IoT). Amazon's AWS Greengrass, a platform for running FaaS code on IoT devices released in July 2017, can be combined with IoT Analytics (released in April 2018) to yield insights from IoT data in the cloud.

    AWS Step Functions, helpful for coordinating complex flows spanning many functions, now support higher throughputs and can update state machine definitions. That makes them suitable for new types of workloads, such as complex stream analysis, when used with Amazon's Kinesis Data Streams or CloudWatch Events.

    API Gateway has also learned a few new tricks that help build API-based services the serverless way. The most notable are support for canary releases, access logging, content encoding, automatic request validation, and custom error responses. On top of that, Lambda functions deployed in different AWS accounts can be used as custom authorizers, and Amazon Cognito Authorizer supports OAuth2 scopes.

    Data store- and notification-related news

    Amazon's DynamoDB, commonly used as a persistent data store in serverless architectures, has received many high-demand features. These include auto-scaling, multi-region replication, server-side encryption at rest, and continuous backup and point-in-time recovery.

    But DynamoDB is not the only serverless data store available on AWS. At AWS Re:Invent 2017, Amazon announced two new serverless databases: AWS Neptune, a managed graph database available now, and AWS Aurora Serverless, a fully managed version of AWS Aurora that's still in preview. And in the database arena, AWS Athena, the interactive query service for S3, now supports views to simplify defining and executing complex queries.

    Simple Notification Service (SNS) supports message filtering to allow simpler publish/subscribe architectures. The new feature has subsequently added new operators, and Amazon integrated it with CloudWatch and CloudFormation. Kinesis Data Streams, another publish/subscribe service, now supports server-side encryption in transit.

    Management services and other enhancements

    Other enhancements to management services make it easier to operate serverless architectures. AWS Config now can track changes to AWS Lambda configurations, and the notifications it publishes are integrated with CloudWatch Events, which in turn can trigger other functions.

    This means you can execute a function on configuration changes you made to another function—or to the same function. You can also execute a function on any other changes that AWS Config tracks. This allows IT operations teams to build very sophisticated cloud management tools.

    Also, the AWS CloudWatch monitoring service can now perform custom arithmetic operations on metric data. And AWS X-Ray now supports zoom and pan controls when investigating trace flows. That's helpful when you’re troubleshooting data flows that span many Lambda functions.

    Finally, AWS launched Fargate, a serverless container orchestration service (now in version 1.1 with additional capabilities) as well as its own managed Kubernetes service.

    With that portfolio of compute services, from compute instances to functions, AWS now caters to many different needs.

    Microsoft Azure

    Microsoft added many new services, features, and enhancements to Azure in 2018. Many of these are unique in the serverless computing space, demonstrating Microsoft's determination to compete with AWS.

    The Azure Functions runtime is undergoing a substantial amount of development. Version 2.x (currently in preview) now allows functions to execute on any platform that supports .NET Core, including MacOS and Linux.

    This opens up some unique development options. For instance, it's now possible to execute and debug functions locally (on any platform that supports the .NET Core, not just Windows), using exactly the same runtime that the FaaS service uses in the cloud environment. You can now use the Linux platform to run functions in the cloud, and Azure has options to customize the Docker image used for running functions.

    The new Azure Functions runtime is better suited to support a wider range of language runtimes in the future, but for now it supports Node.js 8.5 or newer, Java 8, C#, and F#. However, many experimental language runtimes available in Azure Functions Runtime 1.x—including Python, PHP, Typescript, Batch, Bash, and PowerShell—are not currently available in Runtime 2.x. 

    Runtime 2.x uses a new binding extensibility model that supports third-party binding extensions, decouples the runtime and bindings, and makes the execution environment lighter. The only bindings available by default are the Timer trigger for scheduled function execution and the HTTP trigger for invocations via HTTP API. The other bindings (either built-in or third-party) must be explicitly registered with the runtime.

    Other additions for Azure Functions and related systems

    Aside from the new runtime, Azure Functions received several integrations and enhancements, including:

    • New Microsoft Graph and Office bindings
    • Functions supports editing and hosting Open API 2.0 (Swagger) metadata
    • A streamlined UI experience for functions that's better integrated with the Azure Portal
    • Integration with Application Insights, which greatly improves observability capabilities
    • Integration with App Service Diagnostics, for easier troubleshooting

    In November 2017, Azure rolled out its own IoT device platform, IoT Edge (in preview), bringing artificial intelligence, machine learning, and analytics capabilities to IoT devices. IoT Edge also supports flexible runtime options, such as running custom code in containers, or Azure functions.

    The Azure Stream Analytics service and the Common Data Service can now trigger Azure functions to incorporate custom logic in data streams/flows. Stream Analytics includes an adapter that can trigger functions directly, without using a service bus queue in between. And the Common Data Service can now execute functions by way of the Common Data Service SDK.

    Recently, Microsoft made Durable Functions generally available. These functions are similar to the AWS Step Functions, but leverage a programmatic framework, based on Durable Task, for workflow definitions. The new service takes care of tracking the state of the workflow, and can support capabilities such as function chaining, map-reduce, async calls, and human input orchestration. You can code durable functions in C# or Node.js.

    Azure Cosmos DB, the globally distributed, multi-model database service intended to be the primary persistent store for serverless architectures running on the Azure platform, now has native integration with Azure Functions. The integration supports database triggers and input and output bindings, and lets you execute functions on changes to the data stored in Cosmos DB.

    Azure Event Grid is another new service specifically designed for the serverless era. The fully managed service takes care of event routing at scale and simplifies the creation of serverless workflows. It supports several event sources, including Blob Storage, Resource Groups, Azure Subscriptions, Event Hubs, and Custom Topics. Supported event handlers include Azure Functions, Logic Apps, Azure Automation, and WebHooks, with more integrations to come.

    Google Cloud Platform

    Google isn't as committed to serverless technologies as are Amazon and Microsoft, focusing its efforts mostly in the container orchestration space. Currently it is working on the Kubernetes Engine, a managed Kubernetes environment.

    The Google Cloud Functions service is still in beta, as it was a year ago, and Google offers only a Node.js language runtime. The few, relatively small enhancements to the service include the ability to trigger functions from Stackdriver Logging, report function errors to Stackdriver Error Reporting, and use a local emulator to run functions outside of the cloud environment.

    FaaS may not be Google’s priority, but it still announced a few new services you can use to build serverless architectures. Cloud Spanner, a horizontally scalable and strongly consistent relational database service, became generally available in May 2017, and subsequently gained support for multi-region deployments and commit timestamps.

    Google released Dialogflow Enterprise Edition, which offers a range of machine learning-based services for text-to-speech and speech-to-text, in April 2018, and it released Cloud IoT Core in February 2018.

    IBM Bluemix/Apache OpenWhisk

    The most notable new announcement from IBM is Composer, function execution orchestration software that you can use on top of IBM Cloud Functions or Apache OpenWhisk. Composer supports JavaScript/JSON-based workflow definitions that can embed executable code and can turn those into functions using a component called Conductor.

    IBM also created the IBM Cloud Functions Shell, an Electron-based visual tool that offers visualizations of workflow definitions and runs orchestrated functions, including performance and cost-related details.

    Speaking of OpenWhisk, Red Hat has adopted it for its OpenShift container platform. It also plans to launch OpenShift Cloud Functions, its own FaaS service, as part of a hybrid serverless offering.

    What these advances mean for you

    The serverless computing space has seen many changes over the last 12 months, including a range of completely new serverless data stores (AWS Neptune, AWS Aurora Serverless, Azure CosmosDB, and Google Cloud Spanner) that make managing data at scale easier. 

    It's been hard to keep up with the rapid pace of change. Use this summary of the latest developments as a resource as you re-examine and improve your existing serverless plans, or as you decide how and when to move forward with new serverless implementations.

    Did I miss any important developments? What are your experiences? Post your comments and updates below.