Imagine you can compile your favorite language to a universal binary instruction set that can run on any device type, from datacenters to Arduinos, at near native speeds (or better), in an environment designed to handle untrusted code. This is the promise (and increasingly the reality) of WebAssembly.
Okay, so why is this important? Why would WASM displace container technologies, like Docker, for example? Well, you might have noticed the 30 ms serverless cold start comment above, but more generatlly, in his own words: Solomon Hykes, co-founder of Docker:
If WASM+WASI existed in 2008, we wouldn’t have needed to created Docker. That’s how important it is. Webassembly on the server is the future of computing. A standardized system interface was the missing link. Let’s hope WASI is up to the task!
Like WASM, another Web technology that promises to have a much wider impact than originally intended is module federation . Basically, MF is to software delivery what WASM is to compute delivery. It has the potential to change how software is distributed and managed. Federation rejects the practice of transmitting and storing copies of data, when direct access is more efficient. By extension, federated software is not installed on the server, but streamed over the network as needed. This zero install, browser-like approach to software deployment has many advantages, for example, built-in deployment automation. It also happens to fit the model of WASM software distribution quite nicely, supporting functions like streaming compilation.
Federation also affords new architectural choices when designing cloud-native applications. Using it, we can sidestep certain trade-offs that today severely limit the value we can derive from software. Federation let's us build truly modular, zero-downtime, hot-reloadable software , whose components are designed to be developed by multiple teams and loaded from multiple network locations and repos, but deployed independently to a single application instance. There’s no need to distribute components as standalone executables talking over a network, like today’s microservices; especially if all you’re looking for is deployment independence or polyglossia. Developer autonomy doesn't have to come at the price of operational complexity, like it does today under distributed computing. There are many more advantages to federation. You can about them here.