List of things that let you write a single program which performs a distributed task
These are problem areas where you'd normally use multiple separate programs/configurations/whatevers.
But with these things, you can use a single program instead.
Problem areas where you'd normally write a single program,
but with so-and-so tools, you can instead write multiple programs (for locality and performance, usually)
are also interesting (transforming a shell script using ssh into multiple communicating programs; BPF; XDP; the storage equivalent of XDP; uploading code into a service in general; etc.),
but not eligible for this list.
- Distributed languages and distributed DSLs
Distributed programs execute pieces of their code in parallel on
different processors. [...] The first requirement for distributed
programming support is therefore the ability to assign different parts
of a program to be run on different processors.
Software-defined networking (SDN). Note that the SDN term is somewhat abused, and today lots of people use it to mean "overlay networks implemented in software". I mean the original sense:
An SDN consolidates the control plane, so that a single software
control program controls multiple data-plane elements. The SDN control
plane exercises direct control over the state in the network’s
data-plane elements (i.e., routers, switches, and other middleboxes).
"HTML over the wire".
I think this is best explained by the docs for
In contrast to traditional virtual DOM implementations, a remote
virtual DOM runs on the server and is replicated to the client,
which just acts as a dumb terminal. [...] With a remote VDOM,
all code runs on the backend – no need to come up with ways to
share functionality between server and client, to validate forms
twice or authenticate API requests.
- Capability systems let you control access by passing around objects in a single conceptual program, instead of many separate ACL configurations.
- Single-program systems. :)