Cloud deployment shows pros and cons for legacy applications

Legacy applications may benefit from cloud deployment, but there are a host of concerns to look at, too, when considering redeploying older applications.

Many enterprises have legacy applications that may benefit from moving to the cloud. The advent of cloud computing has created a new playing field for the deployment of existing enterprise applications. On-premises programs involve completely known and finite resources. But, in the cloud, factors such as extreme scalability, on-demand provisioning and multi-tenant architecture create a novel set of opportunities for success or failure in deployment. Some traditional best practices translate well to the cloud. In other cases, IT must rethink its cloud deployment strategies to ensure success.

Outcomes for failing to plan an effective cloud deployment

If an organization deploys legacy applications to the cloud, but does so clumsily, it should be prepared for negative consequences, such as missing out on the benefits of elasticity or the efficient use of resources, which leads to lower consumption. Cost savings may not be realized or may be minimal compared to projected ROI.

If fault tolerances are misjudged, older applications may experience slower run times and far too much downtime after cloud deployment. The applications may not use failover properly to take advantage of the available backup resources provided in the cloud. This can lead to actual losses in profitability if mission-critical enterprise applications are affected.

The administrative burden can be high. Deploying to the cloud is supposed to conserve IT's human resources, but a poor deployment can mean IT staff spends even more time than before trouble-shooting applications or managing end user complaints.

With these concerns in mind, here are some deployment decisions that deserve special consideration.

Re-deploy or re-architect?

Legacy software built to run on-premises in physical servers will almost certainly require an overhaul to be ready for life in the cloud. Even those apps already running on virtual servers may not make the journey without some tweaking. Determining whether modest modifications will do or if the application must be rebuilt from the ground up is a must.

Here are some questions to help clarify this issue on an application-by-application basis.

Is a cloud migration going to let you completely retire an old and expensive operating system (OS), network or hardware? If so, it may be worthwhile to redesign the applications so you can make a clean break rather than running two parallel systems. If you don't want to redesign older applications and you are deploying to cloud infrastructure, make sure Infrastructure as a Service (IaaS) is able to mimic your current OS.

Is application performance really that important? Many enterprises have a library of apps that are only used occasionally. They do the job, but they don't have to do it particularly efficiently. In that case, it may not be worth the additional developer resources to re-architect them. A quick and dirty patch job may suffice.

Is the application ready for retirement? The pre-deployment assessment period is the time to determine whether an older application really still serves a business purpose for the enterprise. A modern software as a service (SaaS) application might do the job just as well or better and will be much simpler to deploy. Don't hang on to legacy applications out of nostalgia or because of the resources invested in them over the years.

Does the legacy application require a high level of security? If you are deploying to a private cloud, examine exactly how that environment exposes the application to new risks. You may need to add security features to the application prior to cloud deployment.

Determining deployment order

Deciding which applications should be migrated to the cloud first is another decision that requires you to answer some questions.

Is your organization highly risk averse? If so, it may make sense to deploy a less critical application to the cloud as a pilot. This provides IT with an opportunity to prove that the process works. Choosing an application that will make life noticeably easier for end users is a good decision in this situation. Perhaps you can choose an older application that performs poorly in the on-premises setting because of provisioning issues. The "Wow!" factor when performance improves with rapid provisioning will help bring stakeholders onboard for the next phase of migration.

Is ROI the most important factor in the migration decision? If so, linking the deployment decision to a clear-cut business gain is essential. This might be immediate cost savings in IT resources or profitability gains in serving a larger number of customers during an upcoming peak traffic period. In this case, you either win big or fail big, so it might be wise to choose an application that is already delivered via virtualized infrastructure. The migration should be simpler that way.

Is the application itself complex? Does it have many dependencies? Are you migrating applications but leaving resources such as specific databases hosted on legacy platforms? These answers may impact the order in which you re-deploy legacy applications to the Web. You may have to migrate some interrelated batches to ensure interfaces remain viable. Expect to spend extra time on integration and consider saving more complicated legacy migrations for after you have a few cloud deployment success stories under your belt.

Dig Deeper on Core Java APIs and programming techniques

App Architecture
Software Quality
Cloud Computing