Micro Focus is now part of OpenText. Learn more >

You are here

You are here

5 tips to ease cloud application development

public://pictures/image2015-4-7 13-54-37.png
Paul Korzeniowski Blogger, Independent
Businesses that embrace the cloud need to develop a new set of tools and best practices. Here's what you should take into account before developing applications for the cloud.

Application development is application development, right? Well, maybe not. Cloud programming tools are different from traditional systems, performance can slow in novel ways, and integration work takes on a new layer of complexity. To clear these hurdles, enterprises must develop new best practices.

Increasingly, companies are embracing cloud computing. A recent Computerworld Forecast Study found that 76 percent of businesses have already moved part of their data center infrastructure to the cloud. More deployments are on the way: 52 percent of enterprises with more than 1,000 employees plan to increase spending in this area in 2015.

The application development process typically involves a series of interactions among the development team and members of one or more business units. The groups then work together to outline design specifications, write the code, test the system, and eventually deliver the application. With cloud, the process remains largely the same, but there are a few important differences. Here are five tips to get you off on the right foot.

Get out of your comfort zone

Traditional development has relied on tried-and-true programming environments, such as Microsoft's .Net or Oracle's Java Platform Enterprise Edition. While these options are good for enhancing existing infrastructure, cloud often means working with different platforms. "The cloud development environment is usually at least somewhat and sometimes completely new to developers," says Satya Ramaswamy, vice president and global head of TCS Digital Enterprise at Tata Consultancy Services.

Developers must become familiar with new platforms, such as Amazon Web Service (AWS), Microsoft's Azure, and Salesforce.com's Force.com. In addition, developers may encounter open cloud solutions like Apache's CloudStack and OpenStack. "Corporations need to invest in training so employees understand how to maximize cloud development," says Manoj Karanth, general manager and head of cloud computing, digital business at Mindtree Ltd.

In response, a new training and certification ecosystem has taken shape. For example, the CompTIA Cloud+ certification contrasts on- and off-premise hosting and digs into security issues arising from multi-tenancy, the need for proper data segregation in a dispersed environment, and the need to isolate network elements on an interconnected system. Also, leading platform vendors offer training courses for their products. For example, the AWS Certified Solutions Architect program covers the movement of data in and out of AWS, outlines architectural best practices, and estimates AWS costs.

Peel the performance onion

Performance issues can bedevil system development and cloud presents new challenges. Data may extend out across multiple data centers and travel from the United States to Europe or Asia. "As information moves, systems can encounter network bottlenecks, latency, and constrained network pipes," says Ramaswamy. Applications have to be architected so sufficient wide area network resources are available along each step of the journey. That challenge becomes especially difficult with public cloud because the customer doesn't control the size of the pipe coming into the provider's site.

Bottlenecks can also arise in the data center because cloud—especially public—often means denser systems. Historically, applications ran on a few computers, so performance bottlenecks were easy to identify and contain. Cloud services can—and typically do—run on multiple servers in some extremely large data centers. "One cloud provider that I worked with had a data center that is three city blocks by two city blocks," says Todd DeCapua, chief technology evangelist at HP Software. "About 10,000 miles of cable were used to connect its systems."

Developers must be aware of and design for the potential lag time as information flows among web servers, database servers, and application servers. In addition, the computers may run in either synchronous or asynchronous mode, which can also affect performance. Your application design must account for potential server load or bandwidth issues to ensure that the systems meet service-level agreement objectives.

Understand the ripple effects

Increasingly, businesses interact more closely with partners and customers, which means extending applications to outsiders' systems. Cloud enables businesses to extend their systems and share data and processes, but developers must understand the ramifications of opening up these systems to others. Programmers who have traditionally focused on their own systems don't always fully understand the repercussions of connecting to other applications in the cloud. Prior to joining HP, DeCapua saw such issues arise during consulting engagements. "One company inadvertently exposed their security processes to one of their partners," he said.

Such problems are becoming common. System exposure to third parties played a key role in the highly publicized Sony data breach. Developers need to extend their focus beyond their own applications to examine all connected components.

Know the integration challenges

Integration is another longstanding bugaboo, and cloud only increases integration complexity. "Companies significantly underestimate not only integration challenges but also their potential impact," says Mindtree's Karanth. Today, applications can consist of tens of thousands of small modules that interact with one another. From a logistics perspective, tracking the connections and simply figuring out what is connected to what can be difficult.

Occasionally, a business may need to peek into the connections and make sure the various elements operate correctly. Unfortunately, they may have limited visibility into all the connections. For example, the organization's cloud services vendor may work with different development and monitoring tools than the organization uses internally. Customers need to determine the products and tools upon which the supplier relies and estimate the amount of work required to connect the various solutions, especially when working with public cloud services.

Watch those system resources

Another problem is the potential to unknowingly waste money on cloud service fees. Application development is dynamic, and system configurations are constantly in flux. A virtual machine may be allocated for a test one day and still be running weeks later.

With traditional systems, such an oversight is no big deal. You'll pay for the electricity needed to keep that server running, but that doesn't add significantly to operating expenses. With usage-based metering on leased virtual machine resources, however, the bill rises with every moment that resource runs—that can quickly add up.

Cloud offers companies many potential benefits, such as added flexibility, more agility, and lower costs. But to ensure that development is as efficient as possible, businesses need to understand the fundamental differences and take the steps necessary to mitigate these potential downsides.

Image source: Flickr

Keep learning

Read more articles about: Enterprise ITCloud