Many developers have embraced moving production to the cloud, even though lots of companies still struggle with this concept. Read about solutions that make it easier to develop apps in the cloud.
Many organizations struggle with the idea of moving production workloads to the cloud. There are legitimate operational and technical challenges with moving workloads from a private data center to the cloud; however, development is one type of workload that is appealing for cloud.
Development is a source of a good deal of shadow IT. Developers looking to services such as Amazon Web Services (AWS) and Google's Compute Engine are able to take advantage of the elastic provisioning of public cloud but encounter the same operational challenges that exist when other groups outside of the IT infrastructure such as Marketing undertake cloud projects. Developers gain the immediate benefit of elastic infrastructure that can be provisioned in a matter of minutes when they adopt a cloud service.
The same operational issues that a traditional data center manager has to tackle still exist in the cloud — managing the life cycle of virtual machines (VMs) and refreshing applications are just two examples. The technical challenges include providing an identical infrastructure environment. Most developers are not infrastructure savvy, so the differences in the underlying cloud infrastructure from production can frustrate programming efforts. Other challenges include just importing a VM into a target public cloud providers network. While import tools exist, the changes to the underlying virtual hardware can complicate the import.
VMware's dominance comes into play
Since most Fortune 500 companies use VMware, I think it's fair to assume most development environments are based on VMware. The appeal is strong. Internal IT organizations can leverage the features of vSphere to create snapshots of production and to provide multiple environments for an organization's software development life cycle (SDLC). An additional enterprise feature of VMware-based development environments is a self-service portal via a cloud management platform (CMP) such as OpenStack, Eucalyptus, or vCloud Automation Center (vCAC).
The ideal solution would be to leverage vCenter-like functionality to simply take a snapshot of the production system and publish it to the cloud. VMware's network of vCloud providers and VMware's Hybrid Cloud Server (vCHS) offer this capability: System administrators can deploy VMs from their vCenter data center to a vCloud service provider by leveraging the vCloud Connector.
vCloud-based solutions are no small commitment from a cost perspective. The challenge is not the cost per compute hour but the difference in consumption models between AWS-like services and vCloud. In the vCloud approach, the consumer commits to a reserved amount of cloud resources and is charged for this amount whether it's used or unused. While this may be a strong model for production workloads that have some consistency in usages, the uneven development cycles will introduce inefficiency into resource allocation and usage.
AWS, Google, and most OpenStack providers such as HP charge by the minute. Basically, a customer only gets charged for what is used; this is one of the primary appeals of public cloud to developers, who can bypass their Infrastructure group by just using a credit card and expensing their development workloads.
Have your cake and eat it, too
A vendor looking to provide a hybrid of the two delivery models is Ravello Systems. Ravello offers a virtualization service that enables its customers to run native VMware VMs on public cloud providers other than the vCloud ecosystem. Ravello's service is more than an import/export tool — it uses binary translation to virtualize vSphere workloads onto competing cloud infrastructures.
When I talked with Ravello's CEO Rami Tamar about the service, he shared the idea behind the company's "Application Blueprints," which are templates that can be imported and reused across multiple development environments. Ravello encourages its customers to import their VMs and basic network configuration. Once imported, the user can select from three cloud provider options: Amazon, Google, and HP (OpenStack). Ravello resells each service, so there isn't a need to set up an account with both Ravello and the desired cloud provider.
Combining the REST API and blueprints, a customer can build a robust development environment that integrates with their CMP. A complex scenario would be allowing a developer to provision three identical environments that could be used to test three different application changes simultaneously. Each environment would have identical IP addressing and DNS naming. Once complete, the developer could promote one environment to a higher level or even to production via the CMP portal.
I played around with the solution for about a week. I imported simple but large VMs and selected AWS as the provider; the performance was more than acceptable for development work. The extensibility of the system is more impressive than the system performance.
While most organizations are struggling with the concept of moving production to the cloud, many developers have already embraced it. Solutions such as vCloud and Ravello help alleviate the pain points associated with developing enterprise apps in the cloud, and embracing one or more of these solutions will show the data center manager as a partner in the business. It also enables the data center manager to keep cloud resources under the control of the appropriate group.