Dev/Test in the Cloud: Rules for Getting it Right

CIO.com's Bernard Golden explains how to improve your dev/test operations using cloud computing. Consider these practical steps to take as you meld, not replace, your existing environment with the cloud.

By Bernard Golden
Fri, October 30, 2009

CIO — In last week's post, I discussed why dev/test can be a good first use of cloud computing. Without rehashing the entire post, it's clear that dev/test is often hampered in its activities by the difficulty of getting enough computing resources to its job.

What are the steps one should take to really leverage the cloud for development and QA tasks? This week's post sets out how to improve dev/test through the cloud.

It's always tempting for bloggers/consultants/vendors to turn a list like this into a set of "beware" items, which is always frustrating to read, because the lists say what not to do, not what to do, with an implication that, unless you're really, really careful, things could go wrong. Rather than repeat that tiresome approach, in this post, I'll state the positive things to implement to make dev/test better via the cloud.

[For timely cloud computing news and expert analysis, see CIO.com's Cloud Computing Drilldown section. ]

The most important fact to keep in mind is that you're integrating cloud computing into the dev/test process, so it's an and situation, not an or situation; that is, the resulting environment will have both existing practices and artifacts and cloud artifacts, so it's vital that your approach meld the two. Your task is to blend internal and cloud environments:

Integrate with code management systems:

Treat the cloud as an extension, not a separation. It can be tempting to upload fully deployed applications from a developers box (or even a staging box), but a better arrangement is to have a cloud VM pull the code from the on-premise code management system and install it into the VM. This ensures that version control issues are avoided; nothing is worse than bugs being fixed in the latest version, but reported because they were present in an older version which was uploaded to the cloud. There's a reason development shops use code management systems as the "one version of the truth," and using the cloud should align with that practice.

Ensure easy integrations to internal systems are available:

If the application makes calls to other applications, make sure the interfaces are clean. This implies that service oriented-type interfaces are available that avoid direct interaction between applications. Certainly any integration that relies on direct database calls or on hard-coded IP addresses or internal DNS names should be avoided. If such integration mechanisms are in place, either encapsulate them in a service interface or do not attempt to use the cloud as part of this application's development lifecycle.

Ensure the application can operate on commodity hardware:

Cloud environments have standardized hardware environments, so be sure your application aligns with that fact. It's important that hardware dependencies that cannot be accommodated in a cloud environment be avoided. This means applications that require specialized cards, are architected for particular processors or unsupported operating systems, or that assume high performance infrastructure are not good candidates for cloud dev/test.

Consider architecting for cloud environments:

Make the application scalable in both directions. Admittedly, this recommendation can be a bit controversial. The cloud can certainly host non-elastic apps just fine, and if the target environment production environment does not support bi-directional scalability, architecting for it may be unnecessary. In fact, if one is sure the application will not experience large variability of load and therefore never need to scale, architecting for bi-directional scalability may impose application complexity where it's not needed. On the other hand, many, many applications find they bump into a performance ceiling because their architecture is unable to grow gracefully, so it might make sense to implement a flexible architecture where it seems unneeded— today.

Scrub any sensitive data:

Don't let the fact that this is a development effort obscure the fact that you're putting data into a different environment. Make sure that any data put into an application in a development cycle is treated with the security and privacy it deserves. It can be tempting to just take a data dump from the production system and load it into the development application; in a purely internal development environment that may be appropriate. However, when data is put into a more publicly accessible environment, it's important that it be analyzed for privacy/security concerns and sanitized as needed.

Make sure your software licenses are in order:

Cloud environments may not align with application component licenses, so caution is a byword. Many software licenses assume a permanent host and may be locked to a particular MAC address. Licensed software sometimes requires that the component "phone home" for approval to run. And most software is licensed on a perpetual basis, not on a pay-as-you-go arrangement. It's important that you examine all licensed software that is part of the application under development to ascertain that it may be run in a cloud environment, where variable numbers of copies of the software may be running at any given time, with each of the copies executing on a sporadic basis. If the application under consideration for cloud development has software components for which their licenses are incompatible with cloud operational characteristics, it is probably not a good candidate for this effort.

Plan for the complete application life cycle:

applications iterate through a number of phases, so plan for this upfront. An application repeatedly moves through the development, QA, and production cycle; in fact, with today's emphasis on agile development there are likely to be a high number of iterations through this cycle. The system cloning that is a characteristic of the virtualization that underlies clouds makes it so seductively easy to reproduce application versions that one can end up with application sprawl in a situation not unlike Mickey Mouse as the Sorcerer's Apprentice, with similar outcomes. Therefore, it makes sense to consider using a cloud management tool to enable version control and release. There are tools like Skytap, Surgient, and VMLogix specifically focused on the dev/test use case; companies also use general purpose cloud management tools like enStratus or RightScale for dev/test purposes (disclosure: my firm has a partnership with RightScale).

Using the cloud for dev/test is an excellent first step in cloud computing. It obviates many of the concerns enterprises have about moving production systems into a cloud environment, while ameliorating many of the issues dev/test confronts in building applications within a production environment. As an added benefit, the pay-as-you-go cost structure of cloud computing helps stretch limited development budgets. Of course, any new environment poses challenges in terms of adapting existing tools, practices, and processes to an unfamiliar situation—but don't let that stop you from experimenting with moving some dev/test efforts into the cloud.

Bernard Golden is CEO of consulting firm HyperStratus, which specializes in virtualization, cloud computing and related issues. He is also the author of "Virtualization for Dummies," the best-selling book on virtualization to date.

Follow Bernard Golden on Twitter @bernardgolden. Follow everything from CIO.com on Twitter @CIOonline

In this paper, Forrester Consulting examines the total economic impact and potential return on investment (ROI) realized by three Enterprise organizations as they virtualized mission-critical Oracle databases on the VMware vSphere platform. The purpose of this study is to provide readers with a framework to evaluate the potential financial impact of VMware vSphere on their organizations.
Even though virtualization has brought positive change to enterprise IT over the last decade, some skepticism remains about how valuable virtualization can be in the way companies deliver and run business applications. Uncover the truth about how you can run your business critical applications with confi dence without sacrifi cing
availability or service quality-and at lower costs.
This IDG whitepaper highlights key findings based on the Quickpoll Survey conducted with more than 300 Enterprise and Commercial IT decision makers worldwide about the state of their virtualization of business critical applications. This paper answers such questions as: What drivers are pushing companies to extend virtualization beyond servers? and What value are they realizing? Central to the paper are key results that expose risks of the past (fears of limited ISV support, performance impact) no longer are a factor for companies moving to 80+% virtualized.
The Kelley School of Business at Indiana University deployed VMware Infrastructure which decreases costs, streamlines server deployment, and reduces energy consumption.
New study quantifies how VMware improved TCO and ROI for three companies' IT landscapes.
This IDC white paper explains how much of the Enterprise IT community is at a crossroads in extending their journey to the private cloud: Companies must virtualize their business critical applications in order to reap the benefits of cloud computing. The paper also includes two case studies and a sidebar highlighting the experiences of three enterprises with virtualizing their business-critical applications, which include Oracle and Microsoft SQL databases, SAP and enterprise Java, and a Microsoft Exchange email system.
As greater numbers of datacenter servers transition from the physical to the virtual world, the components of virtualization success come to the fore. What scores of organizations have discovered is that success is derived from an optimal pairing of the right software platform with the right hardware platform.
Virtualizing business-critical applications is an essential step in your journey to the cloud. Microsoft SQL Server, Exchange and SharePoint, and Oracle applications, are often the backbone of business IT. The benefits of virtualizing these applications extend far beyond mere consolidation. Understanding how VMware improves quality of service and agility while reducing costs will help you make the case for taking virtualization to the next level in your company.
Virtualizing business-critical applications has become a key focus for organizations as they move along their virtualization journey. With the launch of VMware vSphere® 5, VMware is helping customers accelerate the deployment of business-critical applications, including Exchange, SQL, SAP and Oracle.
Want to say goodbye to missed SLAs? VMware can help you virtualize mission-critical applications such as Oracle, MS Exchange and SharePoint to achieve dramatic improvements in uptime, performance and responsiveness. In this webcast, we'll discuss the key benefits of virtualizing your agency's most critical applications and Oracle databases as a necessary first step in fulfilling OMB's mandate to move IT services to the cloud. With VMware, you'll be on the way to quick, effective and full compliance.
Federal IT managers are on the forefront of realizing the benefits that a secure, easy-to-manage virtual desktop environment can provide. The key is how to deliver the end-user experience that is comparable to a physical desktop. This webcast will show how the recently released VMware View 5 environment is being used to deploy virtual desktops to provide mission-critical solutions around Disaster Recover/COOP, telework and secure mobile applications to federal organizations. View this webcast and learn how new features and benefits of the VMware View 5 environment meet the needs of Federal customers
This video webcast is designed to help those with little to no virtualization experience understand why virtualization and VMware are so important to driving down both capital and operational costs. The session will start with the introduction of the key concepts and technologies of virtualization, introduce the vSphere Hypervisor, and build up to an overview of VMware vSphere® 5, the world's most robust and complete virtualization platform. This session will also discuss new solutions such as the vSphere Storage Appliance and VMware GO that are making it easier than ever before to get started with virtualization.
Newsletter Sign-Up »

Receive the latest news test, reviews and trends on your favorite technology topics

Choose a newsletter
  1. View all Newsletters | Privacy Policy
Resource Center