Out of all the inquiries I get from Forrester enterprise clients the above question is by far the most common these days. However, the question shows that we have a lot to learn about true public cloud environments.
I know I sound like a broken record when I say this but public clouds are not traditional hosting environments and thus you can't just put any app that can be virtualized into the cloud and expect the same performance and resiliency. Apps in the cloud need to adapt to the cloud - not the other way around (at least not today). This means you shouldn't be thinking about what applications you can migrate to the cloud. That isn't the path to lower costs and greater flexibility. Instead you should be thinking about how your company can best leverage cloud platforms to enable new capabilities. Then create those new capabilities as enhancements to your existing applications.
This advice should sound familiar if you have been in the IT business for more than a decade. Back in 1999 we did the same thing. As the Web was emerging we didn't pick up our UNIX applications and move them to the web. We instead built new web capabilities and put them in front of the legacy systems (green screen scrapers, anyone?). The new web apps were built in a new way - using the LAMP stack, scaling out and being geographically dispersed through hosting providers and content delivery networks. We learned new programming architectures, languages and techniques for availability and performance. Cloud platforms require the same kind of thinking.
- Commodity infrastructure requires applications that are designed to fail and set their own availability SLAs
- Cloud economics encourage componentization and starting small
What this means in that you have to think differently as you approach cloud development. There's far more power in application design and configuration once you free yourself from assumed reliance on the infrastructure. The end result is new degrees of freedom for developers - if you embrace the new model. For instance:
- Can you achieve 99.999% availability on a cloud platform with a 99.5% base SLA - yes you can.
- Can you build an enterprise-class, high performance application with a $0 base footprint - yes, and this should be your new norm.
- Capacity planning? Forget it. You can solve for this after the application has matured.
These new factors almost gurantee that your existing data center applications will fail and be too expensive in the cloud. So don't start there. Instead learn from the cloud pioneers (and your own web history) and start your cloud journey with new capabilities that front-end your existing systems. In my latest research report, "Don't Move Your Apps to the Cloud," Jeffrey Hammond and I document many of these cloud best practices and help you understand the new architectures that need to be embraced.
So next time you catch yourself asking the above question: Don't think migrate. Think transform instead.