The best way to organize any system, especially a distributed system, is to try to frame it as a hierarchy of command and control. In computer systems comprising a multitude of processes, most services will be provided by subroutines to their callers, child processes to their parents, and servers to their clients on the network. Even at the hardware level, the notion of a master and slave is common, and it is this tendency for active entities to play the role of coordinator or subordinate which transitively aggregates into the tree-like global nature of most systems.
At the top level, which is notionally unique even if physically replicated for survival reasons, is the genealogical head of a process tree. Client-server relationships induce further dependencies between processes, cross-linking the skeletal tree.
This kind of system has an inside and an outside (its interface), and I simply refer to it as a Box. The phenotype of a Box embodied in WEBeye will illustrate how the facilities described in Chapters 2 [Environmentally Friendly I/O] and 3 [Internet Sockets] can work in harmony with the liberal use of fullweight processes to produce a system that is flexible, robust, efficient, and maintainable.