I first ventured into Cloud Computing in Summer 2009 when our team was looking for a practical and cost-effective way to provide demo environments to our Citrix SEs.

Here’s the scenario:
Sales teams need to give demos to customers as part of their core job. To give a demo, you need virtual machines, a hosting infrastructure, and a way to access the environment. In the current approach, you spend your time building your own demo environment, possibly lugging around a second laptop with you from site to site, or spending many hours at a customer’s site setting up a demo environment. This approach is very time consuming and doesn’t allow you to use your time effectively. We wanted to define a much better approach where demo systems could be provisioned on-demand when they are needed. We also wanted to make them web-based so they could be accessed from any location. Finally, when the system is no longer needed, we wanted it to be cancelled automatically to free up resources and save costs.

Our solution:
Simply put – we needed the cloud! There’s a lot of blogs and articles out there today that discuss why the cloud is good, bad, not ready, pie in the sky, etc. You name it, you probably heard each opinion several times. Over the last 6 months our team built an on-demand provisioning system that uses the cloud for provisioning Citrix-based demo environments. We call that solution internally the Virtual Demo Center, and since it was released in mid-February it has been a big hit with our sales teams.

We get a lot of questions from partners and various teams about how we built this solution. To help explain our methodology and approach, I decided to write a blog series that discusses how we built this system. The first blog here discusses the conceptual architecture for the system. In Parts 2 and 3, I will go specifically into the architecture of the Virtual Demo Center and another cloud project from a different team at Citrix called the Solution Center Cloud. The main idea behind these blogs is to showcase that the cloud is something real for us today, and we use the cloud as part of our core Citrix business. I’ll provide more details about these two systems in upcoming blogs, but for now we’ll just focus on the architecture of them.

Conceptual Architecture:
The Virtual Demo Center and Solution Center Cloud architecture are similar in many ways but have a few differences. The primary difference between the systems is that the Virtual Demo Center leverages an existing cloud provider (SoftLayer) to host the provisioned virtual machines. The Solution Center Cloud leverages existing infrastructure (XenServers) that are personally owned by Citrix.

If you are designing your own on-demand provisioning infrastructure, what you are trying to build probably falls into one of these same two categories: (1) The system will use an existing cloud provider (e.g. SoftLayer, Amazon EC2, etc.) to host your provisioned resources, or (2) The system will use your personally owned infrastructure (e.g. XenServer, Hyper-V, etc.) to host your provisioned resources. Since both of these could happen as it did for us, I want to provide our conceptual architecture for both of these options:

Option 1: Using your own host infrastructure for the provisioning system
The conceptual architecture that we devised for this type of system is shown below. The Solution Center Cloud project follows this concept.

Component Description
Web Portal • Website where users go to request backend resources
• Stores all provision requests within database
• Reads database to display information about provisioned environments
• No direct interaction with the backend host infrastructure
• May also contain admin functions and usage reports
Authentication Provider • Handles authentication for the web portal
• Examples: Active Directory, SQL Server , Web Service
Database • Stores list of available resources that can be provisioned from web portal
• Stores all provision requests from web portal
• Stores any additional actions to be performed on the backend host infrastructure such as resource cancellations
Windows Service • Continually monitors database for any provision requests, cancellation requests, or other actions. May also perform automatic cancellation of resources based on defined usage schedules.
• Performs direct calls to the backend host infrastructure for performing provisioning actions. To provision virtual machines on XenServer, calls the XenServer APIs, for Hyper-V, calls the Hyper-V APIs, etc.
Host Infrastructure • Represents the hosting platform and resources (virtual machines) that can be provisioned by the system
• Examples: XenServer, Hyper-V, etc.
Email Server • Sends emails to users when critical actions have been completed by the Windows Service
• Emails may include: Notice that provision requests have been completed and are ready for use, Notice that resources about to expire or have been cancelled, Critical errors that system admins need to address, Usage reports that the project team should review

Option 2: Using an existing cloud provider for the provisioning system
The conceptual architecture that we devised for this type of system is shown below. The Virtual Demo Center project follows this concept.

This architecture is a lot like the previous one, with the main difference being that the Windows Service uses the Cloud Provider’s API for provisioning resources. Each major cloud provider provides their own specific API for ordering and cancelling virtual machine resources. When the APIs are called, the cloud provider internally handles the specific details for managing the host infrastructure, such as ordering vlans, placing virtual machines within the vlans, acquiring IP addresses, etc. This makes using the cloud providers an attractive option. The two cloud providers that I have personally worked with are:
• SoftLayer – http://www.softlayer.com/resources/softlayer-api/
• Amazon EC2 – http://aws.amazon.com/sdkfornet/

In this blog I provided a few different approaches for designing an on-demand provisioning system in the cloud. In the next few blogs I’ll go into a few specific real-world examples of how we used the conceptual architecture to build a real-system. Stay tuned!

Blogs in this series:
• Part 1 – Conceptual architecture (this one)
Part 2 – Real-world example 1 – Virtual Demo Center
Part 3 – Real-world example 2 – Solution Center Cloud

Ed York – Architect – Worldwide Technical Readiness
Ask-the-Architect Site: http://community.citrix.com/p/product-automation#home
Follow Me on twitter: http://twitter.com/citrixedy