Wednesday, May 27, 2009
An Economic View of Cloud Computing, and More
McKinsey & Company recently released a report where they compare, contrast, and provide their own definition for “The Cloud”, clear up some points around its usage, and provide adoption recommendations. Their main point is that at this point in time the cloud is more suitable for small to medium enterprises than it is to large enterprises. Their calculations show this to be the case primarily (but not solely) due to simple financial reasons – enterprises can in most cases get better “bang for the buck” by running their own servers, while avoiding all sort of concerns associated with running their software on someone else’s hardware (like reliability and security).
While the report makes some very good points, I’ve had some thoughts while reading it that I would like to share.
Note: It is important to note that their report is focused on the Cloud as a platform-as-a-service for running one’s software on, and not Cloud Services which are composable components that one can utilize when building a SOA-based solution. The report is somewhat inconsistent in its use of the term Cloud though, and on several occasions use “cloud services” to mean “cloud platform services”. Just keep that in mind as you read through it.
The report takes an operational-cost centric approach, which I like in general. They also provide information to support their analysis which is interesting by itself. However, there are some implicit assumptions they make and viewpoints they take, that I believe should have been called out.
Process vs. Machine Virtualization
The analysis in the report seems to take a very VM-centric view of the cloud as a platform – the report is comparing running servers in the cloud to running them in-house (directly on the hardware, or by leveraging virtualization). This approach addresses the model that AWS is offering, but misses the mark on process-level virtualization of the type that Microsoft Azure, Force.com, and Google AppEngine have to offer.
I think that part of the reason for this is that very few people have grokked process-level virtualization at this point in time, and that measuring per-machine costs is much better understood than measuring per-process costs. Nevertheless, this is still missing from the article’s analysis and is something that needs looking into before dismissing the cloud platform as being “too expensive”.
Short-Term vs. Long-Term Investments
While operational-cost is typically measured over a long period of time (which is exactly why keeping it low is so important!), there are cases where long-term savings are not as important. In particular, I am talking about cases where the time-period over which the resource is used is short.
The report looks at the steady-state, and does not address the benefits that large enterprises can get with scale-up-on-demand. There are great cost advantages, as well as improvements to ROI and ROA, that large enterprises can introduce by avoiding (a) the delay introduced by the IT procurement cycle, (b) the cost of additional IT administration headcount, and (c) the cost and delay associated with facilities.
If an enterprise needs to spin up resources to deal with a short spike in the demand for computational or storage resources, it should definitely explore cloud-computing as an option. Examples of such short-term, spike-generating events include external events that affect the business (e.g. tax day, election day, a sport event, etc.), one-time processing of large volume of data, one-off large-scale simulation, etc.
Enterprise IT vs. Departmental IT
An aspect that the report did not address, and that greatly changes the way things play out in the “real world”, is the Departmental nature of of the Enterprise. As it turns out, many enterprises are run as an amalgamation of departments, where in addition to the global IT budget each department has its own separate IT budget. (In some cases this has to do with organizational politics as much as it has to do with technological and financial management.) In organization of this nature some IT facilities are shared and financed through a company-wide IT budget, and some are not shared and are financed through departmental-level IT budgets.
One example of such enterprise is Microsoft. Microsoft offers many shared resources like Active Directory, email servers, SharePoint servers, and alike, to the different departments and product teams in th3 company. In addition to those shared resources, every product team at Microsoft has its own IT budget that it can use to drive product development. Instead having to coordinate resource usage in a central lab with the rest of the company (like time-sharing on mainframes), separate budget and facilities make it much simpler for each team to acquire its own computing resources and manage its their usage.
If a team at a company that is manages in this way needs to use large-scale resources on a sporadic basis, there is little reason for that team to build, support, and staff a lab full of hardware. For example, a team may need to run large-scale stress test on their product for a few weeks before they ship. A team like that would most likely benefit from utilizing the pay-for-use, FTE-saving, on-demand resource availability model that the cloud can offer.
Up until now I mentioned examples where an Enterprise can benefit from the Cloud as a platform. There are however reasons why the Cloud may not yet be ready for broad Enterprise adoption. One key hindering aspects for the adoption of the cloud as a platform is the Management Infrastructure, or lack/immaturity thereof.
The ability to monitor and manage resource utilization, as well as the charges that their consumption creates, is paramount to broad adoption. The report only touches on this briefly (on slide 32), but generally speaking that aspect is a huge adoption blocker, as no CTO worth his salt would approve spending on something that they cannot measure and have the tools to control. There are some vendors out there today that offer such management services, but at this point in time there are no standards on how to integrate this management with existing management infrastructures that Enterprises (of any scale) have in place.
At this point in time I would make the following recommendations for large enterprises who are looking to adopt the Cloud as a platform:
- Look closely at the economic viability of the various cloud platforms compared to aggressive virtualization, or running your own “internal cloud”
- Examine all virtualization models, not just virtual machines.
- Experiment and measure your actual costs of running your applications in these environments versus on your own servers
- Adopt different approaches for short-term vs. long-term investments.
- Don’t limit yourself to thinking about hardware as an asset that you needed to buy and manage.
- Consider using cloud platforms for short-term investments
- Look to adopt cloud platform at the departmental level instead of investing in your own departmental HW and the FTEs to run and manage it.
- Especially for needs of a “spiky” nature
- Pay close attention to cost, and push your Management software vendor to provide you with management capabilities for your cloud platform investments
Your thoughts and comments on this matter are most welcome!
Labels: SOA Governance
Subscribe to Posts [Atom]