This week, Lucas Fontes takes us through the work he's been doing on wasmCloud benchmarks - this is an important workflow as we build robust testing and benchmarking methodologies into the platform.
As always, it is difficult to extole the beauty of the demo in notes, please take a look a the recording to witness Lucas in action - such a good demo.
We're constantly looking at ways to keep track of wasmCloud performance across different versions. Most of the time we run tests locally (for minor versions). The challenge with this is every developer works in different environments.
The way we test on one set of devices (and the results we get) will look vastly different depending on the hardware we're using.
We wanted to create a system in which we can run tests that use a consistent infrastructure, where testing is consistent in terms of a wide range of possible variations. E.g. how many requests; for how long it should run; what are the components and versions we need; if NATS is to be clustered etc. The testing framework needs to allow for these variations.
We have defined 2 key architectural shapes we see in wasmCloud (based on the most common uses cases) against which we can run multiple tests. We have combined these shapes in a Github repo so we can quickly get a K8s cluster, deploy the benchmarking architecture shape, run many tessts, collect the data, tear it down, and do all that in a cost-effective way.
The solution - Testbed - is designed to orchestrate performance tests to the point we can include this benchmarkting in our CI workflow. Lucas takes us through a practical demonstration of how Testbed works. Testbed will be open source in the not-too-distant future. Watch this space for more. Take a look at the recording below for the full session and Q&A.
Q: Colin: what do you see you'll be testing the nost?
A: RPC transport is part of it. Crucially, HTTP provider/HTTP component - elements that we need to grind on. Also, replicating application behaviour. For instance, where a component that is API garetway is receiving and sending reqests to more than 2 components downstream. Lifecycle handler, logging system etc. Introducing varying numbers of downstream requests and latencies so we mirror behaviours. WASI messaging is a key consideration when we consider testing metholoigies.
Also important; mapping individual performance for each transport; TCP, NATS etc. and understanding the performance characteristics of these, which helps us understand where to use different transport types.
Overall more performance benchmarking as a whole - the aim is to get these built into each release so raising the bar on an ongoing basis. Numbers we can depend on.
Our wonderful commununity user, Enzo Nocera (better known as raskyld has been working on a fascinating project, originally presented to the community in wasmCloud Wednesday, October 30th edition. Now, we have published all the details in a blog post.
This details Enzo's contribution to Rust's Leptos web framework that now has added WASI 0.2.0 support.
Why is this exciting? Leptos is a very popular full-stack Rust solution and so building this integration should benefit many developers - we hope!
Implemeing the bindings and making it work with WASI 0.2.
You can write full-stack web apps in Rust and then compile to the stable WASI 0.2 target. You can run this in Wasmtime, and wasmCloud - you can run on any Wasm runtime.
It has http as the file system - which is great to work with.
In particular, check out Enzo's excellent report on the reasoning behind this project and how the integration works.
This is just the latest example of how WASI 0.2 is such a sweet, uplifting development for the entire WebAssembly community.
Thank you Enzo for sharing the details of this interesting project. We look forward to seeing what comes next.
We are just a couple of weeks away from the end of the year. As such, this is a great moment to check in on the wasmCloud roadmap.
The benchmarking suite discussed earlier will soon make its way into the roadmap so watch out for that.
There's been a ton of progress in the Quickstart. In the next versuon of wash (new features for wash dev) we'll be able to say the Quickstart has grown x3 in size!
WASI control commands are making progress - thanks to our fantastic community contributors for the work there!
Our own Massoud has made serious progress on the NATS object store implementation for wasi-blobstore - thank you Massoud!
Multi-tenancy in wasmCloud has some excellent comments and this will remain a focus going into the New Year.
CTA - there are a couple of really good first issues that are a perfect starting point for new contributors. If folks are looking to get a feel for how this works, and make a quick conribution, take a look at the roadmap in Github and tab to Q424! If you want to contribute, just drop a note in the issue!
Thank you to every contributor, old and new, for the hard work this year!
The wasmCloud Innovation Day playlist is currently being uploaded to the Platform Engineering playlist on our YouTube channel! There are already some great sessions listed in this playlist - check it out and keep an eye on the blog for related posts.
Great news! The WasmCon + KubeCon session playlists are now live on YouTube! There are some fantastic examples of Wasm - and wasmCloud - being used in industry. Perfect viewing for these darker Winter evenings.