One thing that I have found interesting is that even though almost all vendors, analysts and experts refer to Orchestration and Automation as an important element within Cloud Solutions, I have seen very little guidance on the approach or Architecture of Orchestration workflows.
I promised my manager I would no longer work on ‘Technical’ topics so I will spin this the best way I can to be strategic in nature.
Step 1: Basic Orchestration Architecture – Error Handling
Orchestration is the ability and approach of automating complex processes. It also should include the logic and sophistication to provide ‘Error Handling’. By far the most common element of Error Handling is ‘if something doesn’t go as planned or as expected – what information do I need to provide or steps do I take going forward.’ Many Application Developers will be very aware of how important Error Handling is in building and coding Applications however when Orchestrating complex workflows, a mature Error Handling Routine can make or break a complex workflow.
I will not (for the sake of boring the readers of this thread to tears) go into Error Handling routines or approaches but instead suggest that an Error-Handling Workflow be included within a complex Orchestration Workbook outside of specific and specialized workflows. In the application developer world this would be referred to as a specialized ‘function’. Here is a fantastic example of an error handling routine developed by the Datacenter Services Core Team and which can be found today within the Datacenter Services 2.0 Portfolio of Solutions:
The above workflows is looking to get the security needed to give access to a tenant requesting a VM.
If an error does occur at any point of the workflow the above Error Handling Routing is initiated. ‘Assuming’ that the request originated from a Change Request an incident is created and associated with the original change request and the specific error is logged.
Step 2: Basic\Specialized Run-Books
Before we can build a library we must have a collection of run-books. How should you create a run-book you may ask? Well for starters ensure that they handle single functions and are not tightly coupled. This means that when you need to perform maintenance on a run-book you can do so without modifying dependent or workflows. Additionally, this makes troubleshooting and upgrading run-books that much easier.
Step 3: Building the Catalog
OK, so now you have a collection of run-books, workflows and a centralized error-handling routine now it’s time to put them all together. The fastest and easiest way to begin stitching these pieces together is to start with actual Business or IT Processes. Let’s take something fairly obvious like Virtual Machine Provisioning. The first step in this process would be to read a Change Request to perform the deployment of a Virtual Machine. Before we can start the first step we will need to ensure that the appropriate capacity is available in the system, rights and permission check out and what other governance that needs to be performed prior to the first step of the process. If we look in our library we should be able to pull in a generic workflow or activity that:
Read Request –> Check Capacity –> Accept Request\Deny Request
If this was laid out as a process for the Activity ‘Create VM’ you can quickly see how existing run-books can be stitched together to form a workflow. Additionally because none of the run-books are tightly coupled you can re-use and modify run-books as needed.
Any insight on approaches and suggestions to further refine this model would be greatly appreciated.
If you would like greater insight into the Datacenter Services Offering and how Microsoft Services can assist your organizations in Automating and Orchestrating IT and Business Processes through System Center please reach out to me or the Datacenter Services Core Team.
Business Solutions Architect
Datacenter/Private Cloud Center of Excellence