A distributed network comprising a plurality of subnets; wherein each of the plurality of subnets comprises a plurality of nodes; the network is configured to run a set of computational units; assign each of the computational units to one of the plurality of subnets according to a subnet-assignment, thereby creating an assigned subset of the set of computational units for each of the subnets; run on each node of the plurality of subnets the assigned subset of the computational units; replicate the assigned subsets of the computational units across the respective subnet; and exchange unit-to-unit messages between the computational units via a messaging protocol based on the subnet-assignment; characterized in that the computational units are a piece of software that is running on a node of the distributed network and which has its own unit state, wherein the unit state comprises an input queue and an output queue of unit-to-unit messages; wherein the unit-to-unit messages comprise inter-subnet unit-to-unit messages to be exchanged between computational units assigned to different subnets; and intra-subnet unit-to-unit messages to be exchanged between computational units assigned to the same subnet; and wherein the network is configured to store the subnet-assignment as network configuration data; the messaging protocol is configured to exchange the inter-subnet unit-to-unit messages between a sending computational unit and a receiving computational unit by looking up the subnet-assignment of the receiving computational unit in the network configuration data; and routing the inter-subnet unit-to-unit message to the subnet that is assigned to the receiving computational unit according to the subnet assignment. each of the plurality of subnets comprises a plurality of nodes; the network is configured to run a set of computational units; assign each of the computational units to one of the plurality of subnets according to a subnet-assignment, thereby creating an assigned subset of the set of computational units for each of the subnets; run on each node of the plurality of subnets the assigned subset of the computational units; replicate the assigned subsets of the computational units across the respective subnet; and exchange unit-to-unit messages between the computational units via a messaging protocol based on the subnet-assignment; characterized in that the computational units are a piece of software that is running on a node of the distributed network and which has its own unit state, wherein the unit state comprises an input queue and an output queue of unit-to-unit messages; wherein the unit-to-unit messages comprise run a set of computational units; assign each of the computational units to one of the plurality of subnets according to a subnet-assignment, thereby creating an assigned subset of the set of computational units for each of the subnets; run on each node of the plurality of subnets the assigned subset of the computational units; replicate the assigned subsets of the computational units across the respective subnet; and exchange unit-to-unit messages between the computational units via a messaging protocol based on the subnet-assignment; characterized in that the computational units are a piece of software that is running on a node of the distributed network and which has its own unit state, wherein the unit state comprises an input queue and an output queue of unit-to-unit messages; wherein the unit-to-unit messages comprise inter-subnet unit-to-unit messages to be exchanged between computational units assigned to different subnets; and intra-subnet unit-to-unit messages to be exchanged between computational units assigned to the same subnet; and wherein the network is configured to store the subnet-assignment as network configuration data; the messaging protocol is configured to exchange the inter-subnet unit-to-unit messages between a sending computational unit and a receiving computational unit by looking up the subnet-assignment of the receiving computational unit in the network configuration data; and routing the inter-subnet unit-to-unit message to the subnet that is assigned to the receiving computational unit according to the subnet assignment. looking up the subnet-assignment of the receiving computational unit in the network configuration data; and routing the inter-subnet unit-to-unit message to the subnet that is assigned to the receiving computational unit according to the subnet assignment.