Improving the Application Lifecycle with Cloud Computing

Yesterday, I read the latest post on James Urquhart's Wisdom of Clouds blog. As I often do, I found myself nodding my head as I read James' latest thoughts on cloud. In this particular post, James provided some thoughts on the types of applications for which we would see growing cloud-based deployments in 2011. I suggest you read the full post here, but I do want to identify the three application types James points out in his post:

- Data intensive, analytical applications: James points out that cloud makes the economics of storing and processing large sets of data feasible. In that vein, one may reasonably expect that more companies will turn to the cloud for this style of applications.

- Online commerce and communities: James says that online commerce applications and communities take advantage of low startup costs and risk enabled by the cloud. One can reasonably expect the number of applications in this mold to continue to grow.

- Core versus context: James argues that companies may be less likely to move their core applications to the cloud in the short-term, but they are definitely looking to the cloud for their context systems (e.g. email).

Based on my own anecdotal experience, empirical data, and observable trends, I would say it is hard to argue with this assessment. Taking a step back, I also think this is a good approach in anticipating cloud usage for the coming year. Looking at both the technical and business attributes of applications gives us a sound context with which to predict the likelihood that users will want to deploy that application to a cloud.

That said, this is certainly not the only way to anticipate cloud usage for applications in the coming year. In fact, I think there is a spectrum that overlays or abuts this kind of application profiling approach. Specifically, I believe we also need to acknowledge the application lifecycle when making predictions about cloud usage in the coming year.

In just about every enterprise shop, a lot happens before applications go into production. For those enterprises that are active in application development, there are development iterations or sprints, testing cycles, quality assurance steps, and probably more, all before putting the application into production. Even companies that primarily buy their applications from third-party providers will have pre-production steps, such as installation verification and integration testing, that they need to conduct. The bottom line is that applications do not just magically appear in production. At least one hopes not!

The concept of the application lifecycle takes on different meanings across different users. However, regardless of the specifics, nearly everyone wants to accomplish two things when it comes to their application lifecycle: speed up the elements that precede putting the application in production, and decrease the costs associated with supporting the overall lifecycle. In that light, it is no surprise that many users are looking at their application lifecycle structure and determining how cloud computing may be able to help at each step.

Further, companies are looking at all kinds of applications. This includes the ones mentioned in James' post and more. This includes both core and context applications. As someone with a stake in cloud, I have to be honest and say it is nice to see users taking a fine-grained approach in determining whether they can use cloud computing techniques for a particular application. While they acknowledge that they may not want or be able to use the cloud for each phase of an application's lifecycle, they also realize there are other phases where cloud is wholly appropriate.

To be clear, I am an advocate of this kind of measured approach, but at the same time, I am quick to point out that it requires careful consideration on part of the user to avoid negating the benefits of the cloud. In particular, when I talk to users that are planning to leverage cloud computing to aid a subset of an application's lifecycle, I ask them two questions:

1) What phases of the application's lifecycle will you support with the cloud?

2) How will you handle the transition between cloud and non-cloud?

The first question is usually easy to answer. There is often a well agreed upon point in the lifecycle at which the cloud is no longer suitable, either from a technical or business perspective. On the other hand, the second question is a little tougher to address.

In order to address the second question, users first have to identify the components in their cloud and non-cloud environments. For any differences in componentry (software or hardware), they must identify the effects and put in a plan to reconcile the differences as part of the transition process. As an example, differences in compute power per server may suggest different application deployment density as users move between the cloud and non-cloud environment.

In addition to identifying these kinds of differences, users also have to formulate an effective plan to ensure they can produce a consistently configured application environment as they move between cloud and non-cloud. Consider a company that uses a cloud computing environment to enable the development and testing of an application, but switches over to a non-cloud environment to host the application in production. If they cannot deploy that application to production in a way that renders it functionally consistent with what they developed and tested, then they have an obvious and likely costly gap. In order to ensure what I will call migratory consistency, companies need hardened transition processes buffeted by technical capabilities geared toward this type of configuration transition.

Again, I hope this does not give the impression that I advise against looking at an application's suitability for the cloud in the context of its lifecycle. I think this approach is suitable for many different scenarios and can provide real business value. I think of this as more of a ‘heads up', and a reminder that, no matter what you are doing in cloud, there is no magic. Plan accordingly!

Dustin Amrhein joined IBM as a member of the development team for WebSphere Application Server. While in that position, he worked on the development of Web services infrastructure and Web services programming models. In his current role, Dustin is a technical specialist for cloud, mobile, and data grid technology in IBM's WebSphere portfolio. He blogs at http://dustinamrhein.ulitzer.com. You can follow him on Twitter at http://twitter.com/damrhein.