WebAssembly modules as deploy artifacts

We started deploying a few internal tools as WebAssembly modules instead of containers. The pitch was simple: smaller artifacts, faster cold starts, one runtime. What we learned: Cold start went from seconds to milliseconds The artifact is a single file, which makes rollbacks trivial Sandboxing is a real security win for untrusted plugins The rough edges: Debugging is still immature Not every library compiles cleanly Observability needs custom plumbing We're keeping it for small, stable tools and staying on containers for the rest. But I think WASM-as-artifact is going to be normal in a few years. Right now I'm digging into the module format and the memory model. It's a good excuse to learn something new.

WebAssembly modules as deploy artifacts

We started deploying a few internal tools as WebAssembly modules instead of containers. The pitch was simple: smaller artifacts, faster cold starts, one runtime.

What we learned:

  • Cold start went from seconds to milliseconds
  • The artifact is a single file, which makes rollbacks trivial
  • Sandboxing is a real security win for untrusted plugins

The rough edges:

  • Debugging is still immature
  • Not every library compiles cleanly
  • Observability needs custom plumbing

We're keeping it for small, stable tools and staying on containers for the rest. But I think WASM-as-artifact is going to be normal in a few years.

Right now I'm digging into the module format and the memory model. It's a good excuse to learn something new.

Share