Last year, AWS announced Lambda Extensions to improve the customer experience of integrating tools with their Lambda functions. This new concept allowed customers to plug their favorite tools for monitoring, logging, or security, without worrying about maintenance and overhead.
Thundra, being a player in the serverless ecosystem, was one of the AWS Lambda Ready Partners and early adopters of Lambda extensions. In the past, we’ve written about how AWS Lambda Extensions work and how it helps developers adopt serverless.
Today, we are happy to announce a new version of Thundra Lambda Extension as AWS makes the Lambda Extensions generally available and shapes the serverless world once again.
What's Coming with General Availability?
If you are familiar with how Lambda Extensions work, you might already know what the current limitations of this technology are. During the preview phase, one of the major problems with Lambda Extension was that the function’s response was blocked by the extension itself until it was finished. This was preventing developers from having potentially long-running tasks within the scope of extensions, as the end-user had to wait for the extension to end when the execution in the extension took longer than necessary.
Previously, the way Thundra worked around this issue was simple, yet hacky. To not block the execution of the user’s lambda, Thundra’s extension was buffering the telemetry data before sending it to our collector. This way, we had the ability to asynchronously monitor and not block our customers’ functions. Although this was working, it was not the best way to achieve this result. Being able to use the AWS Lambda Extension API asynchronously was an obvious request from the developers.
Leading up to the general availability of Lambda Extensions, AWS has released performance improvements to solve this exact problem and give extensions the ability to work after the response has been sent to the end-user. With these recent developments, the Lambda Extension API looks like this:
Now, Thundra is able to collect telemetry data without needing a buffer or worrying about blocking your function’s response.
How to Use the Thundra Extension?
Thundra Lambda Extension is also an extension to the Thundra Lambda Agent running along with your application. This extension supports runtimes that Thundra has the agent for - Node.js, Python, Java, Go, .NET.
GET YOUR FREE ACCOUNT TODAY
Thundra Lambda Extension is part of the Thundra APM product which offers a variety of monitoring solutions.
You can start your journey here.
To use the Thundra Lambda Extension, the Thundra Agent must be integrated into your Lambda application first. Once the Thundra Agent has been integrated correctly, the extension can be added as an AWS Layer to your application like so:
To have access to this new functionality, you must use version 3 or higher of the Thundra Lambda Extension. Check here for the latest available version.
Then, the Thundra Agent must be configured to use the local collector as the data transmission point instead of the remote collector. This functionality is provided by the Thundra Lambda Extension and the configuration can be done easily through environment variables by setting
THUNDRA_AGENT_REPORT_REST_LOCAL to true.
With this, even single-digit telemetry data reporting delays, such as network delays to Thundra Collector Endpoint or Thundra Collector API delays, will not be added to your Lambda invocation duration.
As the serverless world evolves, we, as the Thundra team, are proud to be one of the early adopters as an agile technology partner of AWS capable of coping with the speed of new and amazing features like Lambda Extensions. AWS puts a tremendous amount of effort into making serverless adoption painless and effective. These efforts help us to implement the best solutions for our customers. We are definitely excited to see what’s ahead.