AWS & Serverless Architecture Overview
Amazon Web Services (AWS) is the leading provider of serverless computing. Products like Elastic Cloud Compute (EC2) and Lambda are becoming industry standard and are utilized across numerous organizations.
EC2 servers are machines that you can leverage to host your technology. With EC2s, you rent the machine by the hour, and you are the de facto owner of that computational space. AWS offers a multitude of machine types to rent based on your particular use case, which allows for maximum flexibility in hosting your service, app, or site.
However, you have to manage the EC2 server, worry about security, take care of CPU balancing, and monitor memory utilization. Additionally, you are renting the server space by the hour, regardless how much traffic your website may see. For that reason, EC2s are not easy to understand or manage, and may not be applicable to most developers.
Lambda is another serverless architecture offered by AWS. When you upload code to AWS Lambda, you are creating an instance of machines that are hosting the code you uploaded, referred to as a function. The function is then invoked to run the code to do something for you.
Lambda functions allow developers to focus on what they love the most — code. The headache of server management with EC2s is managed by AWS, rather than the end user. Load balancing, CPU health, and other metrics are managed automatically for you by AWS. Additionally, Lambda charges you per function call instead of per hour. This means your organization could potentially save money if your product’s usage fluctuates seasonally, allowing for automated scaling as usage increases.
However, because there’s more simplicity with Lambda functions, gaining insight on your functions’ performance can be tricky. AWS internal monitoring tools are a great start, but our team found them lacking in ease of use. The numerous services, extensive docs, and unfriendly UI can be a barrier to entry to many in utilizing Lambda functions to their fullest potential.
Shepherd is a free, open-source monitoring tool that allows you to connect to your AWS account and easily track key metrics and logs. Shepherd lets you see the performance of your Lambda functions at a glance. You can now quickly see the most important metrics and logs, as you build and monitor your application.
How to Use Shepherd
The sign up process for Shepherd is easy and intuitive. Shepherd connects via AWS CloudFormation to create a new “Role” inside of your AWS account. Shepherd can then read, process, and display function data on the user-friendly desktop app. You may wonder if Shepherd has write permissions — it does not. AWS accounts remain secure.
Lambda Function Monitoring
After signing up for an account, you will be taken to the dashboard page, which displays aggregated metrics for your Lambda functions. Metrics such as total throttles, invocations, and errors are displayed in easy-to-read formats, and data is repopulated automatically so you can remain signed in to the app and monitor your functions throughout the day.
The dashboard view offers a total function calls graph that can be easily adjusted for an hourly, daily, weekly, or monthly time period, to allow deeper insight into overall function performance. On the lower right, a log stream provides a list of each function associated with your AWS account, arranged chronologically by most recently invoked. A toggle provides a stream of functions currently throwing errors to quickly identify functions that may need debugging.
Additionally, numerical metrics are provided to the left for an at-a-glance look at total calls, total errors, total cost of the functions, as well as total throttles. Finally, the dashboard provides a unique feature of most and least used functions in the center.
The functions view provides a granular level of each function’s performance. Insights gained from the dashboard can be easily traced to a particular function in your architecture and identified for further examination.
You can download Shepherd from our website and see our GitHub repo here. This is a beta version of Shepherd and our team plans to expand the tool to provide even more monitoring functionality in the future.