• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Rust
  • License
    Other
  • Created almost 5 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The easiest way to build & deploy cloud native microservices! Written in Rust, powered by WebAssembly πŸš€




AssemblyLift is an open source platform that gives you a fast & ergonomic way to build cloud-native services on a predictable, secure, and portable runtime β€” from the edge to the cloud β€” powered by WebAssembly.

EXAMPLES | BLOG | DESIGN DOCS
Work on the upcoming beta release is happening on the v0.4.0-beta branch.


The What and Why of AssemblyLift

Microservice architecture & containers bring a number of benefits including greater scalability, high fault-tolerance, and faster deployment. 'Serverless' microservices and functions offer scale-to-zero and per-millisecond billing, with implied economic benefits, without having to manage any kind of server. An explosion of managed cloud services & APIs give developers more options than ever to delegate to a third party.

The problem with all of this is that there is now a large number of things β€” microservices, functions, data services & APIs, etc. β€” which all need to communicate and move data across all kinds of boundaries. The high surface area this creates becomes visible when you use infrastructure-as-code; it can take a large number of virtual cloud resources just to deploy a "simple" microservice or FaaS function in a typical production environment.

AssemblyLift wants to take the complexity out of building cloud-native applications.

AssemblyLift provides a batteries-included framework for building function-oriented microservices, portable across vendors and services like AWS and Kubernetes.

An AssemblyLift project is composed of services, which are in turn composed of functions. A function is code invoked by some event, like an HTTP request. AssemblyLift functions are compiled WebAssembly modules, which right now (as of v0.4) can be written in either the Rust or Ruby programming languages. Services are declared in simple TOML documents called manifests. The AssemblyLift CLI asml automates the process of compiling and/or packaging functions, generating Terraform HCL and/or Kubernetes YAML derived from your manifests, and deploying images and code to the selected provider(s).

AssemblyLift leverages Wasm's deny-by-default, sandboxed environment to provide capability-based access to external services. The AssemblyLift runtime augments the Wasmtime runtime used internally with an ABI controlling access to IO Modules, which are accessed using an RPC protocol.

Quick Start

AssemblyLift is evolving quickly! See Releases to find the latest version & release details.

Download the latest asml CLI for your system.

curl -O public.assemblylift.akkoro.io/cli/<version>/<triple>/asml
chmod +x asml

Where <version> is the latest version (e.g. 0.4.0-alpha.11) and <triple> is one of:

  • x86_64-linux-gnu
  • x86_64-apple-darwin

Alternatively you can install with Cargo using cargo install assemblylift-cli.

Create a new project with asml init -n my-project -l <lang> where <lang> is one of rust or ruby; this is the language of the default function that is generated for you in the default service my-service.

You can add a new function to any service with asml make function <service-name>.<function-name> -l <lang>. Add a new service with asml make service <service-name>.

The process for generating an AssemblyLift deployment is called casting, and is invoked by running asml cast in the project root directory. All deployment artifacts & plans are serialized to the net directory. To deploy your project, run asml bind.

Learn More

Please see the official documentation for help with installing & learning to use AssemblyLift, and/or for more information about the project. You can also find more in-depth tutorials on the Akkoro Dev blog.

Contributing

If you would like to contribute to the AssemblyLift project, please see CONTRIBUTING.md for details on how to get started! If you want to report a bug, please open an issue.

Contact & Social

For help with using AssemblyLift or to keep up with announcements, join us on Discord! If you prefer we're also on Matrix. Try the Element client and find us at #assemblylift:matrix.org.

You can follow @akkorocorp on Twitter.

License

The AssemblyLift source code is licensed under Hippocratic License 2.1.
The AssemblyLift CLI delegates some tasks to HashiCorp Terraform, which is licensed under Mozilla Public License 2.0.


AssemblyLift is made in Canada's far north-east πŸ‡¨πŸ‡¦ and is made possible by our contributors and supporters around the world 🌐