
April 21, 2009 -
Word on the street, and in the trade press and blogs and analyst reports, is most CIOs are not rushing to outsource applications to cloud providers. CIOs are not immune to the temptation and certainly want to realize the cost reductions associated with cloud computing. But questions of security, privacy, reliability, visibility, and portability continue to prevent a wide-scale rush to adopt. Instead, questions regarding best practices and architectural 'how-tos' for building internal clouds are popping up in blogs and inboxes.
Like SOA before it, cloud computing is not a product. This makes it difficult to implement; it necessarily requires coordination not just across a variety of data center infrastructure but disparate teams, as well. It is not just an exercise in implementing an architectural model. It requires coordination and collaboration between people, which may in fact be the more difficult hurdle for organizations to overcome. Your organization must be ready and willing to change its thinking about applications and how they are deployed, as well as how they are budgeted and assigned resources. Project managers will need to change how they assign costs to projects as virtualization and a cloud model necessarily requires a focus on compute resources rather than physical hardware and software.
Unfortunately the issue of people collaboration and project management is well outside the scope of this article. We will be focusing solely on identifying the key steps required to architect and deploy what is more accurately referred to as an on-demand service-oriented infrastructure.
Start with a small application that is non-critical to the business. The goal of a cloud computing pilot is to recuperate idle resources, validate the cost savings, and gain an understanding of how to manage performance across a virtualized infrastructure.
Decide which technology will be the basis for your on-demand application infrastructure.
Most don't start thinking about a cloud computing infrastructure until they've already deployed a number of virtualized applications, so the decision regarding which virtualization technology will be the organizational standard is often already made. But if it hasn't, decide before you start. There are pros and cons to both a heterogeneous and homogenous virtualization infrastructure, and the decision will impact the ability to manage and monitor infrastructure later, so make this decision first.
Don't forget that to automate the provisioning and management processes, changes in the application infrastructure at the network layer are required. The ability to boot from the network and automate network/IP configuration is paramount to ensuring connectivity and the ability of processes to spin up images of applications on-demand.
Determine what delivery infrastructure will be used to abstract the application infrastructure.
The on-demand capabilities of a cloud infrastructure are primarily designed to do two things: ensure scalability and make efficient use of resources. To accomplish the former some method of load balancing/application delivery will be necessary.
This layer of the architecture will abstract the applications from the instances and provide a consistent means of access to users and customers, shielding them from the high rate of change occurring in the infrastructure.
The delivery infrastructure/load balancer will need to be included in the provisioning process and will be relied upon to provide visibility into application performance, capacity, and resource management, so ensure that your choice is capable of being integrated into the automation system. This can be accomplished via standards-based APIs or through remote execution of scripts. Most solutions are capable of one or the other, or both, but ensure your choice matches the way in which you will integrate the system into the architecture.
Also verify the solution is capable of providing the visibility you will need into performance metrics. If thresholds will be based on capacity, ensure the application delivery infrastructure can provide that information. Decide early what metrics and thresholds you'll use to trigger provisioning processes and ensure the infrastructure can support it.
Prepare the network infrastructure.
This step may seem as though it needs not be stated, but there is a great deal that goes into preparing the network to deal with an on-demand application infrastructure. Hardware - network, storage, application delivery - must be configured correctly for the application being deployed. While this is a simple task when considering a single virtualized application, remember you'll eventually share hardware resources across multiple application instances. The network must be able to handle applications migrating from hardware to hardware, and must be configured to deal with such change without requiring human intervention.
Because applications will be moving from server to server, the network will require constant optimization to adapt to changing traffic patterns. This rapid rate of change necessitates automation as it is impossible for manual processes to keep up and human intervention will likely introduce errors.
Provide visibility and automation of management tasks.
Visibility is key to an on-demand infrastructure. The infrastructure and associated management systems must know what is running, where, and when to evaluate available resources and make decisions regarding the assignment of resources. Determine how you will collect the data and from where. CPU and memory utilization on hardware should come from the individual servers, but will it be collected via virtualization management system or individual servers? Will bandwidth utilization come from routers and switches or the application delivery infrastructure? Capacity and response time can be collected from individual servers, the application delivery infrastructure, as well as third-party application performance management systems. Decide which system or device is authoritative for each metric and verify there is a way to feed that information in real-time to the automation system.
Integrate all the moving parts, such that the infrastructure actually becomes on-demand and realizes the benefits of abstraction, automation, and resource sharing.
The most difficult piece is last, and requires the previous steps be completed as it relies on those systems and information. The integration, a.k.a. automation, of all the requisite pieces of the infrastructure - network, storage, and application - is what enables the infrastructure to act on-demand. Without automation the realization of cost-reduction benefits will be marginalized.
The integration step automates workflow. For example, when an application meets or exceeds a SLA or established threshold, a workflow should be executed to spin up additional images. Automation requires constant monitoring across the application infrastructure from the network layer to the applications executing in the environment.
In most cases this integration will require a custom solution. A few commercial implementations exist to assist in automating infrastructure, but if you're an early adopter it may be necessary to build an automation framework and management system yourself.
Virtualization is the first step toward a cloud infrastructure. Moving beyond virtualization requires the ability to coordinate the actions of multiple tiers of the architecture in response to specific events. It is necessary to re-evaluate the suitability of each critical layer of the architecture for inclusion in the new infrastructure model.
Building a cloud infrastructure will require an investment - if not in hardware or solutions then in time and effort. Reconfiguration, automation, and integration will require significant IT resources to accomplish. The investment up-front should pay off quickly as your on-demand infrastructure recoups unused processing power and makes more efficient the entire data center architecture.
About the Author: Lori MacVittie is Technical Marketing Manager at F5 Networks. She can be reached at L.MacVittie@F5.com.