Application development and testing in the cloud are gaining popularity, as more businesses launch public and private cloud computing initiatives. Cloud development typically includes integrated development environments, application lifecycle management components (such as test and quality management, source code and configuration management, continuous delivery tools), and application security testing components.
Although technology executives and developers with experience in cloud-based development say there are clear benefits to developing in these environments -- such as costs savings and increased speed to market -- they also caution that there are challenges and surprises to look out for.
[ Get the no-nonsense explanations and advice you need to take real advantage of cloud computing in InfoWorld editors' 21-page Cloud Computing Deep Dive PDF special report. | Stay up on the cloud with InfoWorld's Cloud Computing Report newsletter. ]
Just how common development in the cloud is likely to become isn't clear. But industry analysis shows it's on the rise. In a February 2011 research note, Gartner said clients that attended the firm's symposia in 2010 expressed "sharply increased interest" in cloud computing to enhance the development and maintenance of existing custom Web applications.
"I see it the most in prototyping and parallel branch development, but there's also huge growth in the load- and performance-testing space," says Eric Knipp, a principal research analyst at Gartner.
If you're looking to venture into cloud development for the first time, here are nine types of hurdles you might encounter and suggestions on how to address them from developers who've actually done the work.
Cloud development gotcha 1: The cloud doesn't always work like the "real world"
Developers might find that the configuration they use in production is hard to replicate on cloud services. For example, with an application you develop in the cloud before bringing back to run locally, you might need to test against a legacy system that you can't simply copy onto a cloud service, Knipp says: "That means there might be a lot more stuff that developers have to stub out to get a test app up and running."
Service virtualization technology can help, Knipp says, and developers can take advantage of market offerings that enable multiple/parallel branch development. Take the case of iTKO, which offers a software suite called Lisa that helps companies move enterprise applications into the cloud.
Developers accustomed to noncloud development might also encounter surprises when it comes to building Web applications in the cloud. For instance, Greg Taylor, who built an online registration application for the Ohio Music Education Association, wasn't expecting that he'd need such a thorough understanding of database structure and how users would interact with it when he created the application.
The app, which handles the registration of school music performers in statewide music contents, uses a MySQL database as the back end and Alpha Five 10.5 from Alpha Software for the front end. "I am coming from a FileMaker Pro background [and] that product is extremely forgiving with regards to database structure," Taylor says. "A poor design can still be used with a reasonable amount of success."
But developing with MySQL forced Taylor to be extremely organized so that the Web app would have the best performance possible. Going back to the table structure to add more fields is time-consuming, as it involves rotating between different development tools, Navicat for MySQL and Alpha Five for the actual Web page design, he says. The first tool creates the database structure, while the second one creates the pages the user interacts with in order to enter and edit information in the database.
"This may not be an issue for developers leveraging a database that has already been created," Taylor says. "They would simply use Alpha Five to develop the Web pages that a user would access. In my case, I was simultaneously developing both the database and the Web pages, which would have required me to switch between the development tools if I had not planned carefully."
To avoid that ongoing round-tripping, Taylor had to change his database development approach: "By developing a clear ERD [entity relationship diagram] with all needed fields first, my Web app is efficient and my overall development time is greatly reduced."
In some cases, cloud development tools do work like the real world -- at least, of yesterday's version of the real world. Jeff Hensley, HRIS senior analyst at DaVita, a health care firm specializing in kidney dialysis, was surprised that developers working in the cloud needed to use command-line tools, XML, and SQL, "which reminded me of the old DOS days." He expects that old-school approach to change over time as adoption increases.
DaVita is using both cloud-based application delivery platforms and hosted servers to develop and deliver human resources data warehouse and business intelligence applications.
Cloud development gotcha 2: Some apps aren't ideal for development in the cloud
The more hard-to-access or hard-to-replicate systems an application integrates with, the more difficult it is to develop and test it on cloud computing resources, Knipp says.
For example, Dan Stueck, vice president of IT for Faith Educational Ministries, avoids developing high-end applications in the cloud that have extreme data security or regulatory restrictions, or rely on legacy coding projects, such as those in Cobol. "Those two are probably best kept in house," he says, "the first due to the obvious security concerns, and the second because of the 'dead' language issue."
Where Stueck has used the cloud is to run a development server on Amazon.com's public cloud service and to build a student information system, student transcript archive, and home schoolbook selling application in the cloud.
Cloud development gotcha 3: Developers often dislike the unfamiliar cloud territory
Cloud computing is still relatively new to a lot of organizations, and it can be a disruptive technology, including in the development arena. 20/20 Cos., a provider of outsourced sales services, used the Force.com cloud platform from Salesforce.com to build a custom application that allows outsourced reps to enter sales data into 20/20's order-to-invoice-to-payroll tool.
"The thing that was probably most unexpected was how well the entire [cloud development] project was received by the management and sales teams and everyone who uses the system, [and] how poorly it was received by the IT organization and in particular developers," says Mark Warren, chief architect at 20/20.
The IT people were accustomed to working with Microsoft .Net, SQL Server, Java, and other traditional development platforms, Warren says, and Force.com was a completely different model. "If you know SQL and Java, that's your toolbox, and you're not going to want to go to this completely alien platform that's coming in," Warren says.
As a result, the sales application was developed primarily by business staff, not by IT developers. That brought its own set of challenges, Warren says, the biggest of which was a lack of understanding among the businesspeople about change management and IT governance. "IT has a level of discipline that businesspeople are not used to having enforced on them," Warren says. "We had to bring them up to speed on change management issues."
As for addressing the reluctance of technology people to develop in a cloud environment, there are programs IT can implement to help adopt cloud computing internally, Warren says. "Training is certainly a good method to facilitate," he says. "However, unless the culture of IT is open to new methods and technologies, organizational change [getting new developers] may be the only option."
Cloud development gotcha 4: Lack of documentation hinders cloud developers
DaVita's Jensley was surprised by the lack of documentation to help developers understand the cloud and the tools and resources that can be used to build applications in that environment.
"I would definitely expect that to change as the demand increases and more and more companies begin adapting the cloud concept," Hensley says. "We were able to combat that by partnering with a consulting firm."
Cloud development gotcha 5: Network issues can bedevil private cloud environments
Developing in the cloud sometimes means developing in your own private cloud, which may not have the multitenancy and load-movement capabilities that keep your applications available 24/7. In a private cloud environment, "one of the challenges is to design for and anticipate scheduled and unscheduled maintenance of the servers, and how to fail over gracefully," says David Intersimone, vice president of developer relations at Embarcadero Technologies, a provider of database management tools.
Embarcadero is using its virtualized data center for application building and testing. "For internal private clouds, we have a couple of options: choosing the scheduled date/time, and staging which servers are done in a certain order," Intersimone says. "There are automated build and automated smoke test processes that are running all the time in our main private cloud and also in regional development offices."
To get a more available environment, Intersimone says he's looking into a cloud container and virtual private network offering from CohesiveFT that can be installed in public and private clouds to provide on-demand scaling, failover, disaster recovery, and disaster readiness.
Other issues that can affect development and testing involve network delays and latency and the size of network pipes, especially in certain parts of the world. Embarcadero has research and development centers in Scotts Valley, Calif., Monterey, Calif., Toronto, St. Petersburg, Fla., and Iasi, Romania, plus a sprinkling of smaller teams and individuals throughout the world.
Embarcadero's geographically diverse development environment "makes it harder to synchronize check-ins, builds, and automated testing," Intersimone says. To solve some of this, developers do local builds and regional builds, as well as on the code check-in, on the virtual servers available to all. Developers also do local builds on their own machines. Embarcadero ensures these don't fall out of sync with the master versions on the private cloud by using Subversion, an open source tool for source code control.
"When a build occurs, an automated test is run to validate the build," Intersimone says. "Then notifications go to all development teams and the build is automatically pulled over a Chinese wall to a large number of automated test virtual machines at our development centers." Automated and manual tests are done on the resulting build to verify the status, and emails go out to other team members after this process is completed. "All of this happens continuously during a project's development lifetime," he says.
Cloud development gotcha 6: It's easy to let the meter run unnecessarily on the cloud
Another potential problem is wasting money on cloud fees. Developers can easily forget or neglect to turn off virtual machines they aren't using. "I've heard from some clients that let developers go wild with virtual machine resources that sometimes the developers would just leave stuff up and running, say over a weekend," Gartner's Knipp says. "When it was on an in-house, capitalized server, this was no big deal. But when it is on usage-metered, leased resources as with public cloud computing, this is a waste of money."
Knipp says he expects this to become a new challenge for enterprises as they roll out private cloud initiatives.
While there's little risk in getting a big, unexpected bill for developer virtual machine usage in a private cloud, "in a self-service, private IaaS environment, a developer can spin up VMs and never turn them off," Knipp says. "These will effectively eat up resources from machines that are not being effectively utilized and could result in the organization buying too much capacity as planning gets skewed."
Cloud development gotcha 7: Cloud licenses can contain surprising deployment restrictions
Among the nontechnical issues with the cloud that can have an impact on development are licensing restrictions. Two years ago Kelly Services, a national temp agency, decided to use cloud-based development for many of its homegrown applications, with Salesforce.com's Force.com platform acting as the delivery vehicle.
Cloud development has brought benefits such as faster turnaround time on app development and lower costs, says Joe Drouin, CIO at Kelly Services. But the company also encountered some unexpected issues with licensing, specifically regarding what types of user seats it had and what limitations they carried. For example, a seat might have a set number of objects a user could access. As a result, "at some points we were surprised by what we could or couldn't do" with development, Drouin says.
Cloud development gotcha 8: Integration can be harder to troubleshoot
Integrating new applications with existing ones can be a key part of the development process, and the cloud brings even more challenges from an integration perspective, Drouin says: "With cloud computing, companies typically don't have open access into their cloud providers' infrastructure, applications, and integration platforms."