Skip to content

Latest commit

 

History

History
146 lines (116 loc) · 10.2 KB

README.md

File metadata and controls

146 lines (116 loc) · 10.2 KB

serene

SERENE

Built With

image image image image image image image image image image image image image image image Bcrypt chartJS MUI

⭐️ Star us on GitHub! ⭐️

Visit our website at serenelambda.com.

Serene is building an exciting developer tool to help monitor AWS lambda resources and prevent cold start latency delays.

If you are looking to contribute to Serene, please visit READMEDEV.md to learn how to get started! Feel free to check out our 'Potential Iteration Ideas' near the bottom of the page for some ideas on what can still be done.

How to Use Serene

On the Website

  1. Navigate to serenelambda.com and select 'Sign Up'
  2. Create a username and password and the select 'Connect Your AWS Account'
  3. This will open a window in AWS prompting you to create a pre-made CloudFormation stack titled 'SereneStack'
  4. Click to create the stack and wait a moment for AWS to build it
  5. Once created, select the 'Resources' tab on your SereneStack and you should see a link to something named SereneStack-SereneRole-[uniqueNumsAndCharacters]. This is the IAM Role the Stack has created for you
  6. Click into that Role, copy the ARN for it, and paste that into the Serene signup page
  7. All that's left is selecting the corresponding region to your Lambda functions and creating your account
  8. You will be directed to the Serene homepage and you're ready to use Serene!
  9. Enjoy ;)

Animated GIF

On Your Local Machine

  1. Fork and clone this repository on GitHub
  2. From there, you will need to run a few commands to install the proper dependencies
  3. Open a terminal and type cd client, then npm install, and finally npm run build
  4. This will create a dist folder in the client directory
  5. Move the dist folder to the server folder and type cd .., then cd server to enter the server directory
  6. Next, you will need to run npm install
  7. Finally, you can run npm start to start the server (which is serving the bundled frontend)
  8. In your browser, navigate to http://localhost:3000 and you will be able to use Serene just like you would on the website!

Features

Metric Visualization

It is extremly important for AWS Lambda developers to monitor the health of their Lambda functions. However, AWS Cloudwatch can be tedious and cumbersome for developers to navigate. Serene allows developers to view their AWS Lambda metrics with ease. Simply select the function you want to view from the sidebar and navigate to the 'Metrics' tab. The user is then able to sort the data based on start date, period, and data in ascending or descending order.

Animated GIF

CloudWatch Logs

CloudWatch Logs is another tool for analyzing Lambda functions (though developers can view logs on many other AWS entities as well). Serene removes any over complication in this process as well. Simply select a Lambda function to view and navigate to the 'View Logs' tab. Serene will then display log streams associated with that function. By clicking into one of the streams, a display of all the events in that stream will render. These events will provide insight into the Lambda function's performance and can assist in troubleshooting.

Animated GIF

Version History and Aliases

Often times, developers will edit the code on their Lambda functions, creating different versions. They will also assign aliases (which point at Lambda function versions) with the option of pointing it at multiple versions and weighing the traffic to them differently (ex. v1: 70%, v2: 30%). This entire process can be hard to follow at times, but not with Serene. Serene includes a display of all the versions of a given Lambda function as well as any aliases pointing to those versions, with the proper weight included. Finally, the user is able to click a link to download their alias' code and view their Lambda function without having to deal with the cumbersome AWS console.

Animated GIF

Lambda Function Warming

The final problem Serene tackles is that of cold start latency. When they go unused for enough time, Lambda functions will go 'cold' and take longer to begin running again as desired. With Serene, a user is able to schedule invocations for their Lambda functions to help prevent this latency and optimize their performance.

Animated GIF

Potential Iteration Ideas

  1. Add functionality to kill warming functionality early if the user wants

  2. Improved modularity in cloudWatchMetricsController.ts

  3. Improved TypeScript on backend -- there are 3 'any' types left in the backend (in order of file/method/variable):

    a. versionHistoryController.ts:

    • viewVersionList: versions

    b. cloudWatchLogsController.ts:

    • viewStreamInfo: eventList

    c. cloudWatchMetricsController.ts:

    • getMetrics: metricObj
  4. Create a desktop app

  5. Incorperate Oauth

  6. Backend testing reads 91% but it says 4/5 testing suites fail -- fixing this would be great and would bump the testing coverage even higher

    a. Also fixing the testing so that it will work with TypeScript (we tested before converting JS to TS)

  7. Persisting state on the frontend is sometimes buggy (potential solution could be converting frontend to Redux)

  8. Price estimation calculator/graphics

  9. Be able to display code for each version of the functions a. We were only able to grab a download link to the code form AWS that could open in notepad or some other text editor but we could not display the actual code from there

  10. Compatability with mobile devices

Meet the Team

Whether you have questions about contributing, using Serene, or just want to chat, feel free to connect with us on LinkedIn and GitHub!


Arianna Nguyen

Kyle Nguyen

Kenny Kim

Wade Chadwick