Cloud Development: 9 Gotchas to Know Before You Jump in
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 byusing 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."
Kelly has experienced performance issues between cloud-based applications and its on-premise systems as well as among multiple applications in the cloud. It's difficult to troubleshoot these issues because the company often can only track transactions in its own infrastructure, Drouin says.
To minimize integration issues, Kelly developers try to use cloud providers' APIs whenever possible; that's been fairly easy to do because many cloud providers expose their APIs, Drouin says.
Cloud development gotcha 9: The cloud's fast pace of change can be hard to keep up with
IT services provider Avanade uses the Azure cloud platform from its part owner Microsoft, along with Microsoft development tools, to develop and test both internal and client work.
The familiarity of the development tools and the speed of the development and test environments have been pluses for the firm, says Graham Astor, director of global solutions at Avanade. But "being on a quickly evolving cloud development platform means it's necessary to update best practices frequently," he says.
Azure is on a two-month release cycle of performance and feature improvements, so Avanade meets monthly with members of the Microsoft product teams to get a heads-up on what's coming. Would others get that kind of access? "I have no idea," Knipp says, "but it is in Microsoft's interest to get as many consulting firms as possible on board with Azure, in order to drive adoption."
Despite the learning curve, cloud development is appealing
Despite the potential challenges, for many organizations application development in the cloud rather than sticking with traditional methods makes sense, for the same reasons that cloud computing in general makes sense: elasticity of resources and cost, and reduced operational complexity, both of which lead to shorter completion time.
This article, "Cloud development: 9 gotchas to know before you jump in," was originally published at InfoWorld.com. Follow the latest developments in business technology news and get a digest of the key stories each day in the InfoWorld Daily newsletter. For the latest developments in business technology news, follow InfoWorld.com on Twitter.
Read more about application development in InfoWorld's Application Development Channel.