Basic Architecture and Terminology

Basic Architecture and Terminology

IncrediBuild is a software solution that distributes computing processes across multiple machines in the network, allowing every workstation to become a virtual super computer that can scale up according to the amount of memory and number of CPUs available in the network. The solution includes various software components that need to be installed on the various computers participating in the resources pool.

An IncrediBuild environment consists of two major components: The IncrediBuild Coordinator (server) and IncrediBuild Agents (clients). These combine server-based and peer-to-peer protocols to achieve a robust, effective, and scalable distribution environment.


As illustrated in the above figure, the typical end-user architecture of the IncrediBuild environment includes an Initiator agent, where the host software is installed, one or more Helper agents installed on remote computers, a Coordinator installed on any of the computers participating in the pool, and optionally a Backup Coordinator, which can also be installed on any of the computers participating in the pool. The only thing that has to be installed on a Helper machine is an IncrediBuild agent.

Jobs and Tasks

In order to understand the roles of each component, it is important to first understand the terminology used to describe the various process elements:

Initiator and Helper Agents

An IncrediBuild agent is installed on each machine in a pool. By default, each installed agent functions as a Helper. An agent can also function as an Initiator, provided that licensing for that agent includes an Initiator package. The IncrediBuild architecture includes at least one Initiator agent, which is installed on the host software machine, as well as multiple Helper agents. (There may be cases in which every machine in the pool acts as both Initiator agent and Helper agent; this occurs when licensing includes an Initiator package for each agent installed.)

Example: In Visual Studio, the Initiator agent is the computer of the developer on which Visual Studio is installed, and the initiating process is the beginning of the build execution.

IncrediBuild Coordinator and Backup Coordinator

The Coordinator is a central component that manages the availability of resources in the pool. It communicates with all of the Agents to identify all resources in the pool and know the hardware profile of each resource. It uses this information to establish a score of the power that is available from each resource at any given moment. The Coordinator performs the following functions:

The Coordinator is not a heavy process in terms of its functionality, and therefore can be installed on any machine in the pool. However, in a typical configuration, it is installed on the most stable and reliable machine in the network. During Job execution, when an Initiator agent has Tasks pending in a Job, the Coordinator provides the Initiator with the identities of a set of Helpers that can handle the necessary processing.

The Coordinator can handle multiple Initiator agents and multiple Helper agents. If a Helper agent has multiple CPUs, the Coordinator utilizes each core as an assignable unit. 

Another function of the Coordinator is related to management of the resource pool. The Coordinator subscribes Agents in the pool to make them available for performing Tasks, and unsubscribes Agents to make them unavailable.

The Backup Coordinator is a program that can take over the critical functions of the main Coordinator, if the main Coordinator fails or becomes unavailable. The Backup Coordinator enables distributed processing to continue unaffected.

The Initiators communicate with Coordinators as follows: The Initiator calculates how many additional cores (Helpers) it requires. If the Coordinator did not yet allocate the required amount of cores, the Initiator requests additional Helpers from the Coordinator.

For example, if the Initiator wants to execute 10 processes in parallel and requests 10 remote cores (Helpers), it will receive them from the Coordinator. After completing the execution of these 10 processes, if the Initiator needs to run eight additional processes, it already has 10 Helpers assigned to it, so it will not request more Helpers from the Coordinator but will instead release two Helpers.



You can use one of the following three interfaces or a combination of them, to integrate IncrediBuild functionality with the code and processes of your software product:

These are essentially different ways of dispatching Tasks to the main IncrediBuild processor. Regardless of the interface used to dispatch the Task, once the Tasks are queued, they are distributed and handled in the same manner.