goodboy / tractor

A distributed, structured concurrent runtime for Python (and friends)
GNU Affero General Public License v3.0
262 stars 12 forks source link

Deployment Scenarios and Testing #97

Open salotz opened 4 years ago

salotz commented 4 years ago

In order to design proper "process" backend abstractions it should be necessary to pin down exactly what kind of deployment strategies we want to support. Furthermore, this will actually give us a checklist of concrete kinds of tests we want to support.

There are 4 broad categories of actor deployment:

Deployment options:

First is what I call the "herd of unixen" of which there are multiple strategies for ranging from completely ad-hoc to completely software defined, in that order roughly:

Of these the most reasonable are CM tools, functional package managers, and linux containers all having different tradeoffs for different scenarios. For initial testing purposes containers will probably be the easiest here since we don't actually need to set up VPSs or an RPi cluster.

Another non-unix approach is the use of unikernels like UniK, OSv, potentially Genode. IMO these have all of the benefits of containers with better encapsulation, smaller footprints, shorter startup times, and the potential to be "on the metal" and not have to compete for scheduling. The drawback is that they are underdeveloped in terms of tooling compared to something like Docker.

Of special interest is Genode, which actually can go beyond the unikernel use case that I won't detail here as it is very much a futuristic thing and a lot of the standard unix ways of looking at "processes" breaks down.

Another novel (and very appealing) scenario is that implemented in the mitogen project which can self-replicate python programs to any (unix) machine with a sufficient python version installed. Biggest drawback here is that I don't think you can do any FFI or rely on any subprocess calls to the system (without also using one of the above tools).

TODO: put links in

goodboy commented 3 years ago

Hmm, linking this to #149 which is basically a first attempt at this.

@guilledk just fyi.

goodboy commented 3 years ago

Some projects that might be helpful down the road @guilledk :