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.
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.