I learned a lot from Andrew Shaft's talk on building a private cloud. My biggest takeaway, perhaps not Andrew's main point, perhaps not even a point he was making, regardless... Clouds are not about virtualization. Virtualization is an implementation of a cloud infrastructure, one could just as easily build a cloud infrastructure with physical boxes.
A cloud infrastructure is more about automation and the ability to grow and manage one's infrastructure without physically logging into machines to manage them. Clouds are about tooling, not about a specifc tool for managing services. Machines are basically worthless, services provide all the value, focus on the service not the hardware or software. Scott McNealy brought up a simaar point years ago when I heard his keynote at JavaOne, back in 1999 (or 2000?), the JavaOne where we all bought real cheap Palm Vs! He pointed out that hardware by iteself and software by itself has no value. However, when you take a Sun box + Sendmail you get a service that has real value to people. Ok, so clouds == deployment and management of services via tools.
Everyone that talked about "the cloud" stated categorically that unless you are treating your infrastructure like you treat your code there is no way you are ready for the move. Obviously, this assumes that your code is managed in source control, you have plenty of autoamted tests, and that you have a repeatable build and release process. What we struggle with, here at Edmunds, is the configuration and deployment aspects. We have gotten a lot better at configuring our software, however, we have a long way to go with the deployment of our applications, the configuration of our systems, and the configuration of our environments in a repeatable manner. Too often we find ourselves SSH'ing into a box to check or change a configuration. Once in the cloud you won't have enough time in the day to check all the boxes. For that matter, once we have additional data centers we won't be able to do this either.
- If you don't have automated configuration management you can't build a cloud, once you have that you will probably realize it is cheaper to use a provider!
- People and culture are usually the biggest barriers to appraoching infrastructure as code! (no suprise there same as with tdd!)