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
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.
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:
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.