https://github.com/fun-with-serverless/battle-extensions
Battle of the extensions
https://github.com/fun-with-serverless/battle-extensions
Last synced: 4 months ago
JSON representation
Battle of the extensions
- Host: GitHub
- URL: https://github.com/fun-with-serverless/battle-extensions
- Owner: fun-with-serverless
- License: apache-2.0
- Created: 2024-02-19T06:45:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-17T19:53:54.000Z (over 1 year ago)
- Last Synced: 2024-03-17T20:39:48.393Z (over 1 year ago)
- Language: JavaScript
- Size: 5.34 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Battle of the Extensions
## Description
"Battle of the Extensions" delves into the capabilities of Low Latency Runtime (LLRT) in optimizing AWS Lambda functions and extensions, with a focus on scenarios that demand minimal cold start times and maximized performance efficiency. This project sets LLRT against conventional runtimes, using Rust as a comparative benchmark, to showcase the advantages and performance gains achievable in serverless computing frameworks.For comprehensive details, please see the [full blog post](https://medium.com/meliopayments/battle-of-the-extensions-772894421b0a).
## Table of Contents
- [Installation](#installation)
- [Structure](#structure)## Installation
This repository is equipped with a `.devcontainer` configuration file for installing necessary dependencies. If you choose not to utilize `.devcontainer`, ensure the following are installed on your system:
* Python 3.11
* The most recent version of Rust
* NodeJS 20.X
* AWS SAM
* AWS CLI### Deploying Extensions
Execute `make build-all-extensions` to compile both the Rust and LLRT extensions and then upload them to AWS. Upon successful upload, you will receive the ARNs of the layers; note these down for use in deploying the application.### Deploying the Application
For initial setup, run `make configure-app` to build, configure, and deploy the application that leverages the extensions. During this configuration phase, you will need to enter the layer versions obtained in the previous step.For subsequent deployments, `make deploy-app` can be used for deploying without reconfiguration.
## Structure
The repository consists of three primary components:
* **The Application**: Comprises several Lambdas that utilize the extensions.
* **The LLRT Extension**: Encapsulates the LLRT runtime, which accepts HTTP requests and forwards the payload to an SQS queue for further processing. For additional details on how the extension is constructed, please refer to the blog.
* **The Rust Extension**: Functions identically to the LLRT extension but is developed in Rust. For more information on its construction, refer to the [YouTube video](https://youtu.be/Mdh_2PXe9i8?si=jgaOEcgL-FXn49iq&t=2158).