It's a company's worst cloud computing nightmare come true: The development team has built a proprietary application on a public cloud service, but the company now wants to bring the application in-house to its own servers. Or the company has been using the cloud application for awhile, but the data is now locked in when the team tries to switch.
To help developers and CIOs alike sleep well at night, experts recommend adhering to standards and thoroughly investigating cloud service providers and application vendors.
Seeking cloud standards: Easier said than done
Underlying the portable cloud app problem is the fact that there are no cloud-specific standards, according to James Staten, vice president and principal analyst at Cambridge, Mass.-based research firm Forrester Research. However, a cloud-specific set of application programming interfaces (APIs) does exist, and they are becoming de facto standards, he said.
The most common APIs are Amazon's API for Elastic Compute Cloud (EC2) and Simple Storage Service (S3), although OpenStack APIs are trying to emerge as a de facto standard, Staten said. However, the numbers of vendors that support OpenStack are limited -- HP, RackSpace and a few smaller vendors with private clouds. "You can write to Amazon and be portable, or you can write to OpenStack," he said.
Another option Staten mentions: writing to a management tool that remaps underlying features for the developer for greater portability. For example, RightScale allows applications to be deployed to up to 60 different clouds and exposes more services, he added.
Investigating cloud providers and application vendors
Yet vendor-specific APIs can entrap developers. Avoiding those APIs may be the easiest way to ensure application portability, according to Charlie Key, CEO of Cincinnati, Ohio-based hosting platform Modulus. "If you're building an application and know it's going to run on Amazon infrastructure, you want to avoid using their APIs to try to do anything," he said.
There's a simple way to make sure that pre-written cloud applications are portable: Ask many questions and conduct extensive research before signing an agreement.
Jeff Kaplan, THINKstrategies Inc.
That approach makes development more complicated and time-consuming, he acknowledged. But it also gives developers the ability to create a truly portable cloud app that can run on any public or private cloud of the company's choosing.
Developers can also keep pieces of the applications as small as possible. "Literally, if you're building out a giant application that's going to do 20 different things, you can really look at that and try to architect it so it's broken down into multiple smaller applications," Key said. Different cloud services run on different hardware, some with better performance than others. So if the company decides to move to another cloud service with the application, building it in small chunks makes it easier to run on multiple machines, he said.
Among the more difficult paths developers can take is choosing portable technology as a base to provide the ability to run their apps on more environments, Key said. "That's not always something a developer has control over," he said. For example, the company may require the application to be built in Java or .NET, but using a portable base technology allows the application to run on more operating systems.
When choosing prewritten cloud applications, there's a simple way to make sure they're truly portable cloud apps: Ask many questions and conduct extensive research before signing an agreement, said Jeff Kaplan, managing director at Wellesley, Mass.-based consultancy THINKstrategies Inc. "Unfortunately, depending on the nature of the application, the amount of information you can gather is going to vary depending on the nature of the software and the vendor," Kaplan said.
He recommended asking vendors point-blank what it will take to move data and applications from one vendor to another, or to move them in-house. It's also smart to research vendors online, particularly in user groups, he said: "Wherever there's a community of like-minded individuals, it's very possible that you can solicit them and ask about the good, bad and ugly with specific vendors in mind."
However, well-established Software as a Service (SaaS) and Infrastructure as a Service (IaaS) vendors recognize that portability is a major customer concern, Kaplan said. "A vendor can't do business without making sure they can relinquish the data back to the customer for whatever cause," he said.
Companies also need to look at the tools vendors provide for migrating their data, according to Betsy Bilhorn, vice president of product management at Manchester, N.H.-based software provider Scribe. "Your ability to get [your] data is really only as good as the API or export tool that the vendor is going to supply," she said.
Most vendors do provide export tools for companies to access and migrate their data, as well as to use it in other applications, Bilhorn added. "In the cloud, you've got the one-two knockout punch of getting to the API and being able to write against it, but it's what the vendor is actually going to provide to you," she said. "They say you own your data, but in a way, you don't."