- Thinking Scalability is just about technology
- Overuse of Synchronous calls
- Failure to weed or seed soon enough
- Inappropriate use of databases
- Cesspools instead of swim lanes
- Reliance on Vertical scale
- Failure to Learn from History
- Changing Development methodologies to fix problems
- Too little caching, too late
- Overreliance on Third parties to scale
January 24, 2010
James Hamilton is one of the leaders in this industry and has written a very thought provoking post about private clouds not being the future. This is what he said about private clouds when compared to existing not-cloud solutions.
- A fix, Not the future (reference to an InformationWeek post)
- Runs at lower utilization levels
- Consumes more power
- Less efficient environmentally
- Runs at higher costs
Though I believe in most of his comments, Iâ€™m not convinced with the generalization of the conclusions. In particular, what is the maximum number of servers one need to own, beyond which outsourcing will become a liability. I suspect this is not a very high number today, but will grow over time.
Hardware costs: The scale at which Amazon buys infrastructure is just mind boggling, but organizations buying in bulk could get pretty good deal from those same vendors as well. Its not clear to me how many servers one has to buy to get discounts like what amazon does.
Utilization levels: Cloud providers optimize utilization by making sure all the servers are getting used all the time. Its also important to remember that because they trying to maximize utilization they donâ€™t always buy all the servers for all of its customers when they sign up.
At scale, with high customer diversity, a wonderful property emerges: non-correlated peaks. Whereas each company has to provision to support their peak workload, when running in a shared cloud the peaks and valleys smooth. The retail market peaks in November, taxation in April, some financial business peak on quarter ends and many of these workloads have many cycles overlaid some daily, some weekly, some yearly and some event specific. For example, the death of Michael Jackson drove heavy workloads in some domains but had zero impact in others.
This is something which bothers Enterprise IT departments everywhere when they are building private clouds. Can they get away with buying less servers than what the organization really needs and at times say â€œnoâ€ to some departments when they run out of computing power ? Its hard to beat the scale of shared clouds.
The other reason why utilization levels are low in private clouds is because most organizations donâ€™t have computationally-intensive batch jobs which could take advantage of servers be done while servers are not in use. On Amazon one could even bid for a lower price on unused EC2 resources.
This is a tough problem and I donâ€™t think private clouds can outperform shared clouds.
Power usage: Inefficient cooking and power conversion losses can quickly make hosting infrastructure more expensive. Having domain experts can definitely help, and that's not something smaller organizations can do either.
Platform: There arenâ€™t any stable, proven, internal cloud infrastructure platform which comes cheap. VMwareâ€™s ROI calculator might claim its cheap, but Iâ€™m not convinced yet. The xen/kvm options look very stable, but they donâ€™t come with decent management tools. In short there is a lot of work which needs to be done just to pick a platform.
A private hadoop cluster is still a cloud infrastructure. At lot of organizations are now switching to similar batch processing based clouds which could be shared for different kinds of jobs. And there are still others who could decide to invest in smarter deployment and automation scripts to fully utilize their private infrastructure without using virtualization.
Overhead of the shared cloud: Larger an organization is, more difficult it is for it to migrate to a shared cloud. In fact migrating an existing live RDBMS based application over to cloud would be impossible without significant resources to architect the whole application and datastore. These organizations also have extensive well tested security policies and guidelines in place, all of which would have to be thrown to the dogs if they have to put their data on a public network over which they have no control. But I do believe this is a temporary problem which will be resolved over time in favor of shared clouds.
Cost: Cloud infrastructure providers are not non-profit organizations. Though are here to make money, they would still be significantly cheaper for many. But do your homework and make sure you and your management team is ok with giving up infrastructure control for some cost savings.
That being said, here are my predictions for next couple of years.
- Except to see more non-virtualized, application clouds in the enterprise.
- Expect the shared cloud providers to get even more cost effective over time as competition increases.
- See more open source initiatives to build tools which manage private cloud infrastructures.
- See more interesting tools which provide end-users the ability to visualize actual cost of resources they are using. Making the cost more transparent, could guide developers to design smarter applications.