Unity is intelligent and intuitive software that is prudent to figure out required type of topology and to generate execution plan accordingly. For example, if compact deployment is selected (typical for Dev), Unity will allocate a single VM and orchestrate its configuration in the appropriate order, starting with the bottom of dependency tree. Unity would generate a different execution plan for more complex deployment in which services could be deployed into separate VM clusters. It will always attempt to parallelize as many operations as possible, and would only force sequential processing where it is necessary to manage configuration dependencies.
In our example, such auto-generated execution plan would have the following steps:
- Allocate VMs:
Ø Using Infrastructure Management API, Unity will invoke a batch operation to allocate all VMs. There are 5 VMs in this example. As soon as each VM is ready, Unity moves immediately to the subsequent processing step for that node.
- Initialize and secure VMs:
Ø Unity will use built-in capabilities as well as plug-ins to configure network, security and other parameters (DNS, Domains, accounts, etc.). It will continue moving automatically to the next step.
- Install Services:
Ø Installation process typically does yet have dependencies, so Unity will install each service instance on the appropriate VM. It will run in parallel on all 5 VMs in the sample and will configure 2 VMs with DB, 2 VMs with App Server and 1 VM with a Load Balancer.
Notice that an Operator can open Activity view and see ALL details of all parallel/sequential activities for this deployment. Operator also can see problems, if encountered, fix them and continue orchestration process from the stop or failure point.
Once installation step (3) is completed, Unity forces a sequential processing from the bottom of dependency tree:
- Configure DB services for Master VM and begin to test them:
Ø Add necessary Accounts for other services to access the DB. Configure secure Endpoint for accessing the DB. Configure the Second DB VM as a Slave and set up replication. Notice that this level of processing has reliable ordering that allow to tag instances as Master and Slave without writing any code.
- Configure App Server VMs while providing them with auto-configured secure endpoints for DB Access.
- Deploy application specific customizations for both App Server and DB (using admin endpoint, from a single node):
Ø Application Endpoint(s) are initialized and tested. At this point App Server is ready to accept application specific requests.
- Load Balancer is configured to include each App Server instance.
- Load Balancer proxy configuration is updated in the App Server (some applications generate URLs and may require proxy information):
Ø At this point rotation can accept requests.
- Setup access control to allow external access to the Load Balancer end point:
Ø Unity can set up various types of network configurations, including ACLs and routed networks to provide isolation for private endpoints while enabling public access.
Unity does most of heavy lifting and coordination, tracking progress and error recovery without any user participation. User(s), if necessary, can provide simple inputs or add customized scripts.