Chapter 16. Applied WebAssembly: Decentralized Applications
It’s true that contemporary technology permits decentralization, it also permits centralization. It depends on how you use the technology.
Noam Chomsky
The software we write takes on a role depending on where and how it is deployed. Legacy systems were often single applications that took in input, did some processing, and produced output. Unix commands are often tools to coordinate together into scripted workflows. In this book, we have largely been discussing WebAssembly’s strengths in client-side user interfaces with the occasional foray into server-side technology. These days, our software plays many other parts in the cloud, through microservices architectures, in embedded systems and mobile devices, and through serverless functions.
These different roles often serve an architectural purpose in an attempt to manage change, allow for independent technology choices, meet scale demands, or facilitate reuse and avoid silos. There is an underlying tension to how the disparate elements are organized and coordinated. Most conventional systems are centrally managed, but we are seeing an increased aptitude in developers being able to wrangle widely deployed, decentralized systems into productive use. Let’s start by discussing some of the trade-offs.
Centralization Versus Decentralization
Our industry has long vacillated between centralization and decentralization. Neither arrangement is ideal; both have their benefits and ...