Our ambitions for edge compute with Sat
Last month we introduced Sat to the world, and at the time is was a days-old experiment that we had only just started testing. It had yet to be used for anything real, but we were really excited about the idea of a tiny, lightweight, modular server that could be deployed in single-digit milliseconds and mesh with a huge group of peers to form complex and powerful application topologies. Sat is still in experimental mode (we plan to take our time with this one), but it has already come a long way and I want to share where it is currently, as well as our hopes for its future.
I’ll share a secret that I think may sound counter-intuitive, but I think Sat is going to be bigger than Atmo. Even though it is tiny, and it doesn’t have a lot of features on its own, I think in the long term plans of our young company, it will have a more impactful role than (possibly) anything else we’re working on, and I’d love to explain why. One of the blog posts I shared in the earliest days of Suborbital outlined the concept of an intelligent compute network that could infer the needs of different components in your application and decide how, when, and where to deploy everything automatically. It’s this idea that still gets me really excited for the future, and since I wrote that blog post, the team has been working to put the first building blocks in place to make it happen.
Coming back to the main purpose of this blog post, Sat was a project that quickly came to life because there was an immediate need (we needed to run ephemeral, short-lived tests on WebAssembly modules without loading the entirety of Atmo). We built the basic functionality to fill that need and since then have been slowly but consistently iterating on it. Sat has stabilized enough that we have started publishing periodic tagged Docker images. We are being very strict in sticking to the original goals of the project, and we’ve actually been able to make the Sat binary and Docker image smaller since the project started, even though it’s gained more capabilities. I highly suggest you try it out and give us your feedback so that we can learn about more use-cases!
When you look at the various ideas in the blog post that I mentioned above, it explicitly calls out ‘central compute, edge compute, and devices working together’. I would say that this is still the broad end goal for Suborbital and our vision of a WebAssembly-native world, and I think we are well on the way to building the first two out of three. One thing that I’ve only briefly mentioned publicly is that Sat is designed to be 100% compatible with Atmo applications, and our intention is to make any application built for Atmo also deployable onto a constellation of Sat instances. We have begun experiments with this style of deployment using a toy orchestration tool called
constd that can deploy Sat constellations, and a version of Atmo creatively named
atmo-proxy (which is all of the brains of Atmo without an embedded WebAssembly runtime). When used together, Sat,
atmo-proxy can already run Atmo apps without any modifications, albeit with some quirks related to the Runnable API’s capabilities.
The reason that I think Sat will be the most important project in our open source arsenal in the long term is that it’s incredibly flexible. Already we are getting close to being able to run an unmodified Atmo application cooperatively between the edge and central cloud, and I think that with a few months’ work, a constellation of Sat instances on a distributed network will be able to outperform a horizontally-scaled cluster of Atmo instances simply because it will be much more nimble and it will be able to pack resources much more tightly into the available hardware.
One thing I mentioned in our recent TechCrunch article was the idea that WebAssembly on bare metal could be a better choice for edge computing compared to containers, and Sat is how we plan to learn whether or not that’s the truth. We have some upcoming partnerships and real-world test scenarios that will quickly tell us what is good (and bad) about this idea, but my hope is that we could evolve the state of cloud computing to a point where containers and WebAssembly are completely complementary and co-existent technologies, both with their place in the world for different use-cases within a larger application architecture.
We are working hard on Sat, Atmo, Suborbital Compute, and several other project that we aren’t quite ready to share yet. We’re still a small team, but we’re already starting to grow. If you’re interested in joining us to work on some of this exciting technology, please consider contributing to our various open source projects, or reach out, as we are hiring software developers, DevRel, and more.