To support the agility, speed and responsiveness required to keep up with the rapid pace of innovation, modern application developers today are embracing architecture patterns where there is no longer a notion of traditional virtual machines or containers. Cloud-native application architectures are starting to leverage the capabilities of new platform beyond Amazon EC2 and Docker containers. The idea of breaking applications into clusters of single functions that run on-demand and automatically manage resources is quickly gaining traction. As such, AWS Lambda, supporting serverless computing, is increasingly becoming an important part of Amazon’s broader portfolio.
In this post, we highlight the evolution of serverless computing, the adoption of AWS Lambda, and the key requirements for managing a serverless environment.
Serverless is Not Without Servers
Does serverless mean there are no servers? In short, no. Serverless computing is a category within cloud computing where applications run in stateless compute containers that are event-triggered, ephemeral, and completely managed by a third party. Serverless computing services like AWS Lambda are built to run snippets of code that carry out a single, short-lived task. These functions, which are self-contained blocks of code, have no dependencies on any other code and can be deployed and executed wherever and whenever they are needed. This is typically found in microservice architectures where:
- Applications are broken down into core functions to be run independently
- Applications are invoked via an API that can handle several tasks, rather than built with code structured in a monolithic way
A simple example that we’ve used internally is a JIRA bot for Slack. The JIRA bot supports collaboration that connects the people, tools, process and automation for a transparent workflow by automatically creating a JIRA issue tracking from Slack.
Before serverless computing, an engineer would have to set up a web server, configure Slack and upload and maintain a piece of code that is only used every so often. Servers needed to be maintained regardless of how often the code was triggered. With AWS Lambda, a piece of code is uploaded, Slack is configured and the service manages the compute fleet that offers memory, CPU, networking and other resources without needing to set up a web server, load balancer or SSL layer. Furthermore, there is no need to provision capacity or manage scaling resources, maintain security patches and updates to the underlying servers or other administrative tasks, and the user is only billed for when the code is executed.
While serverless computing may be more of a marketing term, services like AWS Lambda provide a platform for developers to run back-end code without needing to manage their own server systems or server applications.
Rapid Adoption Alongside Other AWS Services
Since the introduction of Lambda at last year’s re:Invent, serverless computing is rapidly gaining popularity in the AWS ecosystem. As cloud computing continues to mature, some capabilities related to the speed of upgrade, such as provisioning VMs, are now considered too slow for developers who just want to execute applications. In order to remove barriers to adding new compute workloads when and where they’re needed most, organizations can now put code into production without allocating infrastructure resources to support the increased speed.
AWS Lambda provides one implementation to enable a more optimized infrastructure. The serverless approach is not just for small companies, and many large organizations also recognize the cost-effectiveness of managing a large set of workloads with AWS Lambda as the execution engine. Over 20% of companies on AWS are using AWS Lambda, according to 2nd Watch’s 30 Most Popular AWS Products.
We are also seeing rapid adoption of AWS Lambda in our customer base. 37% of customers using SignalFx to manage their cloud applications in production environments are also using AWS Lambda. Users of Lambda also use several other AWS services that align with key use cases enabled by the serverless computing service.
AWS Lambda functions are triggered by events. The event source can be another AWS service or a custom application that publishes events. These events can include changes to data in Amazon S3 or DynamoDB, HTTP requests from Amazon API Gateway, notifications from Amazon SNS, or detected records off an Amazon Kinesis stream.
Managing a Serverless Environment
There are several benefits to using serverless computing services like AWS Lambda. A serverless environment enables the ability to automatically provision and execute code triggered when a specific event occurs and is a significantly easier way to mitigate costs. However, taking advantage of a serverless architecture means that organizations need the right tools to maintain quality in an increasingly complex world.
Similar to the transition from monolithic applications to a microservices approach, the smaller the individual component, the more complex the entire system becomes. A single Lambda function enables a simpler deployment model, but the system as a whole becomes increasingly complex. The low cost of invoking functions parallels the trend that the industry has experienced around the low cost of virtual machines and containers, which have made it easy to spin up new capacity and democratized scale-out architectures.
Managing AWS Lambda requires the right tools to monitor the key set of metrics to ensure performance and availability. Key metrics to monitor include:
- Number of requests (invocations)
- Duration of the request and latency of executing the request
- Whether the request succeeded or failed due to errors in the function
- Business-focused and customer-centric metrics (such as: which user is making those requests or whether an application or service is throttled due to Lambda limits)
As the adoption of Lambda continues, it will be critical that the right tooling is in place to help manage and monitor these functions. An effective monitoring solution for AWS Lambda should include:
- Powerful analytics designed for streaming real-time or event-based data
- Full visibility across all layers, components and services to understand the context of the entire environment
- High-fidelity alerts to know where and when action is required
Serverless computing and AWS Lambda are disrupting many cloud application development and operations patterns. While serverless computing is still in its early days, organizations understand the benefits of an efficient way to execute logic in environments without a VM or OS. We look forward to seeing what this change means for you in gaining real-time visibility in this new environment.
Join our live weekly demo on cloud monitoring »