Six weeks ago JP Morgan released a cloud computing survey that should make everyone recognize just how profoundly the world of IT is changing (unfortunately, Morgan has not publicly published the report or a summary of the findings, but here is a Barron’s article discussing some of the report’s details). Morgan surveyed more than 200 large enterprise IT CIOs regarding their use of cloud computing and future plans. The results were, in a word, earthshaking.
For those in the IT industry — both vendors and users — the most important question in the survey related to application deployment. Morgan asked survey respondents these questions:
“Please estimate what percent of your organization’s workloads that are currently being run out of a public cloud” and “Five years from now, please estimate what percent of your organization’s workloads will be running out of a public cloud?”
According to the survey takers, today they run 16% of their applications workloads in the cloud. In five years, that number will grow to 41%; put another way, over the next five years 25% of total enterprise application portfolios will find a new home. To get a sense of just how dramatic that is, look at figure 1 below.
The slope of the line shows that enterprise IT groups are making a wholesale shift toward cloud computing. By 2020, going on 50% of enterprise workloads will run in public cloud environments, and there’s nothing in the survey to indicate that the trend will stop in 2020. By 2025, it’s not inconceivable that 70% or more of all applications will run in public cloud environments. Without question, this represents the biggest IT transformation in history.
For those of us who are involved in the creation and deployment of applications, the obvious question is how will all those applications be migrated? After all, it’s one thing to announce an intention; it’s something entirely different to actually execute it. Unfortunately, in the real world of IT, as distinguished from the fantasy world of science fiction, there is no magic method to “make it so.”
So what are the methods you should use to succeed with this migration effort? Here are the three primary methods most IT organizations will use:
The least disruptive mode of application migration is what is referred to as “lift-and-shift.” In this model, applications are transferred as-is to external cloud environments, with no effort expended to change anything.
The attractive aspect of this approach is that, assuming the application can transfer unmodified, it is the quickest way to migrate an application from an on-premise environment to a cloud provider. This approach is most appropriate for IT organizations under pressure to empty out existing data centers or move to lower-cost computing environments.
I estimate that lift-and-shift will probably account for 20% of the 25% total application migration during the next five years. That’s because of the tight timeframe — it will be hard enough just to get all these applications moved, much less change them.
Of course, many people observe that lift-and-shift is hardly ideal. Many applications use computing infrastructure inefficiently, and moving them to cloud environments won’t somehow make them run better. Even worse, now that they’re operating in a pay-per-use environment, charges keep increasing whether the underlying infrastructure is working or just waiting for something to happen.
The way to address this economic inefficiency is to refactor applications. This refers to the process of rearchitecting applications to better match the characteristics of the underlying infrastructure.
With respect to placing applications in cloud environments, this means rebuilding applications along cloud computing lines, including:
- Breaking large applications into smaller executable portions so that individual components can run in smaller, less expensive virtual servers. For example, by moving data layers out of the business logic layer, both can run in cheaper virtual servers.
- Better load management with horizontal scaling. Traditionally, most enterprise applications just used bigger servers to address large workload variation; in cloud environments using oversized virtual machines to deal with occasional traffic spikes means wasting money most of the time. A better approach is to use smaller, redundant servers at every application layer to allow growing and shrinking the layer pool as load changes. This approach is often called “scale out” versus the “scale up” approach of using larger servers, and it is a common refactoring technique.
- Mapping the application to better-suited cloud services. One drawback of the lift-and-shift approach is that it imposes application architectures designed for on-premise environments onto cloud environments that offer additional services that can better serve application functionality. For example, many cloud providers offer managed relational database services that reduce the need for user operational oversight. The opportunities for rearchitecting applications is by no means limited to swapping like for like. There are many other opportunities to achieve greater efficiency or better functionality by re-examining the application and considering how to take advantage of cloud services. One example is the use of asynchronous message queues for application component communication. Instead of synchronous passage of user requests through the application, one component will send a message to another, and then move on to work on other tasks. The benefit is that performance can be improved with accompanying user satisfaction increase. Of course, this approach requires additional effort, but can result in significant improvement in overall application satisfaction and economics.
While the headlong move to cloud computing probably means this approach will not make up the majority of near-term application migration, it’s likely that a significant proportion of the lift-and-shift migrations will eventually be refactored to make the applications better suited for cloud environments.
The lowest percentage of these migrated applications, but the ones with, perhaps, the highest long-term potential are what I refer to as “reimagined applications.” A reimagined application is one where the IT organization starts, so to speak, with a blank sheet of paper regarding the application’s functionality in light of the characteristics of its new deployment environment. Instead of migrating the application as-is (lift-and-shift) or modifying it to better suit the cloud environment (refactor), this approach reevaluates the application in terms of what it does and how it provides business value.
An example of this would be an insurance underwriting application. Obviously, the company could move its existing underwriting application to a cloud environment. It could even modify to support redundancy and scaling, which would make it more efficient and could even increase availability. But the greatest payoff would be if the company looked at the underwriting process to see if there are new ways to perform the process or additional functionality that can be added to it now that it will run in the cloud.
For instance, cloud environments are very good for adding algorithmic modifications based on aggregating user data in real-time. So, an auto underwriting application could receive data based on actual miles driven, as reported by the customer’s auto(s). That would allow increasing or decreasing the insurance price based on actual user driving characteristics rather than self-reported information. This greater price flexibility could, in turn, allow the insurance company to differentiate itself from its competitors.
This example indicates the potential when IT organizations rethink the role of applications in light of the cloud environment in which they’ll run. This is, obviously, the most challenging kind of application migration, and will probably represent no more than 1% or 2% of the total application portfolio that will be transferred from on-premise to cloud environments. However, this approach also represents the best use case for cloud computing. Why treat the cloud as nothing more than someone else’s servers used to run the same old applications? Far better to reimagining the way you do business, made possible by the unique capabilities cloud computing offers.
A sea-change in enterprise IT is approaching. The old model of building applications designed for on-premise, limited flexibility execution environments is falling away. Tomorrow’s applications will increasingly be placed in public cloud environments, which offer much greater scale, much better economics, and much richer computing services. The next five years will primarily see straightforward lift-and-shift application migration, but a growing percentage of applications will be redesigned and reimagined to align with the characteristics of cloud computing, with immense business results in the offing.
About Bernard Golden
Named by Wired.com as one of the ten most influential persons in cloud computing, Bernard Golden is CEO of Navica, a consulting firm focused on cloud computing and DevOps. Bernard also serves as the cloud computing advisor for CIO Magazine; his blog has been named to over a dozen “best of cloud computing” lists and is read by tens of thousands of persons each month. He is a highly regarded speaker, and has keynoted cloud conferences around the world. Bernard is the author or co-author of four books on virtualization and cloud computing, including his most recent book, Amazon Web Services for Dummies, published in Autumn 2013