The Domain

The Domain

A domain is a realm of control and administration. Specifically, a domain is a set of Fabric3 runtimes that are coordinated and managed together. A domain may be large, comprising multiple runtime instances on separate physical machines, or small, consisting of a single runtime. In a domain, components may be wired and connected to channels and contribution artifacts may be shared. 



Zones

It is often convenient to partition large domains into a set of smaller regions, or zones. For example, an organization may decide to deploy one application to a set of runtimes and another application to a different set of runtimes. If the organization assigned the applications to different domains, they would not be able to manage them as a whole.

Zones partition a domain into smaller managed units.  A zone is a set of one or more runtimes where applications (contibutions) are deployed. A domain always has at least one zone and may contain more. A zone is homogenous. In other words, all runtimes in a zone have the same configuration and host replicas of the same applications. 

Clustering

Clustering is provided through zones. When components in a contribution are deployed to a zone, they are replicated to all runtimes configured as part of the zone. 

Scaling Down

Using this architecture, it is possible to construct domain topologies that are easy to manage and scale. A domain consist of multiple zones, each containing clustered runtimes. However, it is also important to note this architecture scales down; a domain can be comprised of a single runtime instance. 

Zero Configuration

In keeping with the goal of simplicity, the only thing required to configure a domain is to assign each runtime a unique name. Based on the name, Fabric3 will automatically converge a domain consisting of multiple runtimes and create the necessary zones.