Announcing N|Solid for AWS Lambda
It’s no surprise that serverless technology is catching on at an exponential rate. Following the announcement of AWS Lambda back in 2014, application development and DevOps teams have enjoyed accelerated development times, reduced costs, and effortless scalability by adopting serverless architecture. It’s one of the most promising developments in cloud-based execution models, and Node.js is a crucial part of that story.
While companies are eager to reap the benefits of serverless technologies, they lack the monitoring and debugging tools they need to do so with confidence; this is something that we’ve heard from NodeSource customers across many verticals and industries. Previously available monitoring solutions introduce two major challenges: they either add significant performance overhead, thus skewing the measured results, or deliver a one-dimensional value proposition that focuses on optimizing for either performance, cost, or operationalization.
N|Solid for AWS Lambda is designed to help developers and DevOps professionals alike optimize the performance, security, and operational efficiency of their serverless Lambda functions. This new solution brings the low-impact monitoring capabilities of the N|Solid runtime to AWS Lambda functions through Lambda Layers, which allow users to add software to customize a serverless execution environment. Users can access metrics captured by N|Solid in a streamlined SaaS dashboard which receives and aggregates data from functions and provides precise, detailed information about the behavior and health of a serverless application, all with negligible performance overhead.
NodeSource has always focused on providing solutions to solve real problems for teams using Node.js, and we’re excited to add N|Solid for AWS Lambda to our product suite. If you’d like to try this new solution, you can either follow the steps below or contact us to get a 1-on-1 walkthrough.
What’s included with N|Solid for AWS Lambda?
NodeSource has worked with AWS to offer a version of the N|Solid runtime through Lambda Layers, announced today. N|Solid for AWS Lambda takes advantage of the newly-released Lambda Layers feature, allowing us to ship a serverless-friendly version of N|Solid as a Layer for functions on AWS Lambda.
This new integration allows you to monitor AWS Lambda on a function-by-function basis and capture data including:
- Cold start signaling
- Error details
- CPU profiles for a random sample of functions
- Execution duration (average and per execution)
- Execution rate (executions/second)
- Invocation times
Getting Started with N|Solid for AWS Lambda
To get started, you’ll need to head over to your NodeSource Account (or create one if you haven't already) and select the "AWS Lambda" option on the Downloads and Setup page. This page will always have the most up-to-date instructions to set up N|Solid for Lambda with the new Lambda Layer feature.
You can follow these steps to get started with N|Solid for AWS Lambda.
Starting with AWS:
- Log in to your AWS Account
- Navigate to the AWS Lambda Console
- In your AWS account choose the Create function option
- Select Use custom runtime in function code or layer in the Runtime settings dropdown
- After choosing this option, a Layer selection prompt will appear. Select the Provide a layer version ARN option.
Getting the ARN from NodeSource:
- In a new tab or window, log in to your NodeSource Account or create a new one
- If you’ve started a trial, you’ll have the option to use either your 'Personal' or 'Organization' account profiles--each of these workspaces has its own corresponding N|Solid license key
- Once signed in, you will be redirected to the Downloads & Setup page
- Select the N|Solid for AWS Lambda installation type on the downloads page.
- The install instructions feature a series of selectors, allowing you to choose your preferred AWS region and Node.js version.
- Copy the provided ARN and enter this in your Layer selection prompt and click Add layer version.
Adding the ARN to the AWS Lambda Console and setting up N|Solid for AWS Lambda to report metrics:
- Return to the AWS Lambda Console and paste the ARN you copied in the previous step. Select the Add layers version button.
- Once the function has been successfully created return to NodeSource Accounts to copy the N|Solid License key.
- Return to the AWS Lambda Console and access the the Environment Variables settings to set a custom environment variable for your N|Solid license key. Name your new custom variable
NSOLID_LICENSE_KEY
. - After your functions start running, navigate to app.nodesource.com to confirm that data from your Lambda function is being displayed in the dashboard.
Monitoring your serverless functions
With the introduction of N|Solid for AWS Lambda, we’ve created a web-based dashboard where you can inspect and explore serverless performance data.
This application is tied to your NodeSource Account and can be accessed directly from accounts.nodesource.com.
Understanding What’s Different About N|Solid for AWS Lambda
A quick overview of what N|Solid for AWS Lambda is from a technical perspective:
- Node.js v10 LTS ("Dubnium") OR Node.js v8 LTS ("Carbon")
- N|Solid Agent
In essence, N|Solid for AWS Lambda is an augmented Node.js runtime that enables extraction of metrics with as little overhead possible. This is achievable thanks to the approach we’ve taken with the N|Solid Agent – it sits outside of the Node.js event loop in the native C++ layer, meaning that your application’s performance isn’t affected while being monitored.
Using N|Solid for AWS Lambda for Fun and Profit
From the N|Solid for AWS Lambda application, you’ll be able to monitor your AWS Lambdas that have been set up with Lambda Layers to use N|Solid for AWS Lambda. Here’s what you’ll be able to do on launch:
Per-function monitoring
Every function you deploy with N|Solid for AWS Lambda will be monitored. The various data points will be aggregated into the application and you’ll be able to dig into them on a function-by-function basis.
Execution Metrics
For every execution, we gather multiple data points including:
- Date and time of invocation
- Execution duration
- Node.js runtime version
- Function cold start status
- Function error
We also surface averaged metrics for each function as a whole:
- Total number of function executions
- Executions per second
- Average execution time
- Total number of executions with errors
- Total number of cold start executions
Function Profiles
On top of function metrics, we create CPU profiles of executions with a sample rate based on the rate of executions occurring. On functions that were profiled, you can view that profile directly within the app:
From the Profile inspector, you can dig deep into your function’s executions to see which calls within the function are taking the longest. From this, you can see what you’ll need to focus on to continue to optimize functions’ execution times.
What does N|Solid for AWS Lambda cost me today?
With a developer tier NodeSource account, you can use N|Solid for AWS Lambda for free. Your normal AWS Lambda usage cost will apply, but the N|Solid for AWS Lambda portion is provided as a free service with your normal N|Solid license key.
For organizations, we are working with our existing customers and those from the broader community who are interested in using N|Solid for AWS Lambda inside of their teams to determine what works best. If you’d be interested in sharing feedback, please don’t hesitate to get in touch – we’re more than open to chatting.
What is next for N|Solid for AWS Lambda?
N|Solid for AWS Lambda is an entirely new product for us... one that we’ve thought about someday achieving for the last two years.
This first launch is just that, a first launch. We’re excited to continue building out N|Solid for AWS Lambda with new and unique features for you, our users.
We’ll keep you up to date on what we’re shipping in the coming months. We’ve already got some new features in the pipeline, so stay tuned!
Amazon Web Services, the "Powered by AWS" logo, and AWS Lambda are trademarks of Amazon.com, Inc. or its affiliates in the United States and/or other countries.