Comment on page
AssemblyLift is designed to generate and manage serverless infrastructure on your behalf. You may have used tools such as this in the past. If so, you may have found what was deployed a little naive architecturally, especially over time as your application grows.
AssemblyLift is what is sometimes referred to as an opinionated framework. That is to say, that it has a prescribed way of doing things and does not leave all architectural decisions to the user.
To this end, AssemblyLift abstracts away the underlying cloud provider (AWS Lambda for example) and provides an application model based on services and functions. AssemblyLift takes care of fitting this model to the selected provider, according to that provider's best practices. For example, deployment to AWS Lambda makes use of Lambda layers to reduce the deployment size of functions.
WebAssembly is known for providing high-performance execution, relative to an interpreted language such as Python or a VM-based language like Java. AssemblyLift uses Wasmer internally to pre-compile WASM to a native binary, and to execute the binary later at near-native performance.
AssemblyLift also does its best to minimize the size of the deployed code, as well as the memory used by the runtime. For example, AWS Lambda functions are priced in Gigabyte-seconds; that is, the more memory your function is allocated the more you will be charged. Lambda will also scale the number of allocated vCPUs linearly with the allocation of memory. Keeping the memory footprint of the AssemblyLift runtime small therefore enables more computation per second for the same price. Where performance is less of a concern, this enables you to use very small memory allocations -- as little as 128MB in some cases, which is nearly 8x cheaper than the AssemblyLift default of 1024MB.
The entire AssemblyLift runtime is written in Rust, which helps prevent several kinds of bugs & vulnerabilities due to its memory-safe & thread-safe design.
WebAssembly modules are isolated by design; they provide no means to communicate with their host or any network, and they are unable to allocate memory anywhere but their own linear memory.