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 virtualised 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 componentisation and starting small.
What this means is 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 percent availability on a cloud platform with a 99.5 percent 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 guarantee 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.
So next time you catch yourself asking the above question, don't think migrate. Think transform instead.