One of ZapThink's favorite roles is that of iconoclast. When we see a growing hype bubble, we love being the ones to pop it. We relished dispelling the confusion over the SOA is dead meme, and now it's time to let a little air out of the latest gas bag: Cloud Computing.
Don't get us wrong -- we see a great future to Cloud Computing, but that doesn't mitigate the fact that the hype around this trend is getting way too far ahead of the reality. People can't even agree on what Cloud Computing is, and vendors are already rolling out products, conferences are ramping up, and pundits are working themselves into a frenzy. It's time for a refreshing contrarian view, taking a critical look at why Cloud Computing will likely fail, or at the very least, why we're nowhere near ready for it.
Déjà Vu All Over Again
Does this situation ring a bell? Key industry deep thinkers work out a new approach for organizing IT resources to better meet the needs of the business, but before they can work out the details, vendors turn the approach into a bandwagon and jump right on. Confused enterprise buyers are left scratching their heads, as what the vendors are selling ends up bearing only a superficial resemblance to the approach the experts are touting.
It should sound familiar -- not only did the same thing happen with Service-Oriented Architecture (SOA), it happened with Enterprise Application Integration (EAI), the Internet, Client/Server, and virtually every other architectural innovation to hit the world of IT since the earliest mainframes. What gives? Well, the key word in the previous sentence, of course, is "architecture," that is, best practices for organizing and using technology, where "buying more" is only occasionally such a practice. Architecture is something you do, not something to buy, but the vendors, naturally, want you to think about stuff to buy!
Now it's Cloud Computing's turn. The broad benefits of Cloud Computing are so promising that the bandwagon is already chock full of hungry vendors. IT resources available only when needed! Pay as you go! Outsource your IT infrastructure! If Amazon.com can make it work, so can we! OK, enough of the noise. Let's take a closer look.
Raining on the Parade
The first challenge Cloud Computing faces, of course, is that no one can agree on what it is. Ask various people and they'll often respond with a definition of something else, like Software-as-a-Service (SaaS), Utility Computing, or resource virtualization. ZapThink's perspective is that Cloud Computing is some combination of SaaS, virtualization, and SOA, but it's not up to us to pin down a definition.
The problem with this confusion over meaning is the old wine in new bottles problem: SaaS, Utility Computing, and virtualization have been around for a while, and there are products and solutions already on the market in each of these categories. Now along comes Cloud Computing, and the vendors of the various existing approaches now have a new label to slap on something they've been trying to sell for a while now, with limited success. And you know they've had only limited success because if their existing solution was a real hit then they wouldn't be so excited to call it something else!
The next issue has to do with a fundamental bifurcation in the nascent Cloud Computing marketplace: the different value propositions of third-party clouds vs. internal clouds. Third-party clouds -- where an organization uses a service provider's cloud à la the Amazon Elastic Compute Cloud, offers pay-as-you-go utility pricing, but gives software vendors little to sell. Convincing enterprises to build their own internal clouds, however, sounds the cha-ching for the vendors. To build your own cloud, you would need all manner of new gear, at least in theory. Sounds like a win-win scenario, right?
The problem is, existing enterprise environments are far too complex and heterogeneous to support such clouds. You'd be better off, in fact, with some focused virtualization solutions like storage-area networks, plus SOA for agility in the face of heterogeneity. But therein lies the next problem: virtualization and SOA aren't nearly as synergistic in practice as they are in theory. In theory, building loosely coupled Business Services that abstract virtualized capabilities makes perfect sense. In practice, however, the people involved in the virtualization efforts and the SOA team are usually different people addressing different issues. We meet with architects involved with their organization's SOA efforts all the time, but very rarely are these the same architects who are working on their virtualization efforts. That's not to say such virtualization efforts aren't taking place; the problem is, they're manned by a different team, generally with different priorities. Until such organizations can put together a coherent combined SOA/virtualization story, they have little hope of implementing a successful internal cloud.
The Service Provider Opportunity
Service providers who are looking to build cloud infrastructures for their customers don't have the heterogeneity issues that enterprises do. Instead, they generally have the luxury of beginning with a blank page, so these firms offer a bona fide opportunity to the vendors who seek to supply them. The question then is, what is the total addressable market for such service-provider cloud offerings? While the analysts are happy to throw around multiple billions of dollars in their market size prognostications, there is a mitigating force that might conspire to keep this opportunity smaller than the pundits are predicting.
This mitigating force is the trust issue. Just how secure are these multitenant clouds? Will any enterprise ever be truly comfortable relying upon a third-party cloud vendor to support their mission-critical operations? Just this week Google had a security breach in their office application offerings, which admittedly are more an example of SaaS than Cloud Computing, but the lapse still highlights the risks of the general approach. Sure, it's fine for scrappy Web 2.0 firms to use the cloud, and I'm sure enterprises will leverage cloud-based resources for certain tasks, but can you imagine the CIO of, say, a large bank looking forward to retiring their core transaction systems in favor of third party cloud resources? Not any time soon!
Architecture to the Rescue?
The most significant roadblock to Cloud Computing of all, however, is the fact that Cloud Computing requires a level of SOA maturity that few organizations have managed to achieve. This level of maturity is beyond what we call "SOA in a box." Rather, we mean the ability of the organization to apply SOA best practices broadly as an integral part of their overall approach to Enterprise Architecture. Many organizations have struggled with SOA, and run the risk of thinking Cloud Computing will solve problems that unsuccessful SOA attempts were unable to solve, while others think they're doing SOA, but are really not, and as a result, will never truly understand the connection between SOA and Cloud Computing.
For example, there's been some recent discussion in the blogosphere about how SOA governance applies to Cloud Computing. We wonder what all the confusion is about. After all, SOA governance is about leveraging SOA best practices to create, communicate, and enforce policies that apply to how the organization leverages IT resources, so it shouldn't matter whether those resources are in the cloud or not. In other words, true SOA governance includes cloud governance. Vendors, however, are quick to point out that you need to upgrade your SOA governance gear to handle cloud governance, which is generally true as far as it goes, but if you're confusing governance with your governance tooling, then you'll miss the forest for the trees -- just another example of confusing the tools (which you buy) with the best practices for using them (which you should do).
The ZapThink Take
It may sound like ZapThink thinks Cloud Computing is a bunch of hooey, but that's really not the case. We just like playing the devil's advocate, especially when some topic becomes overhyped, and even Cloud Computing's biggest fans are likely to admit that the hype on this topic is over the top. In fact, we see the general trend of which both SOA and Cloud Computing are a part as the real story here. It shouldn't matter where your technology resources are physically located; instead, they should be available as needed where needed.
The secret to realizing this vision, however, doesn't depend on buying software, and certainly doesn't rely upon believing in hype. No, it depends first and foremost on architecture. We won't be able to achieve the benefits of Cloud Computing unless we understand the best practices for implementing and using technology resources, and furthermore, we must also have the organizational discipline to follow those best practices. In fact, as the gear we can buy improves, the more important knowing how to use it properly becomes. If Cloud Computing becomes a shortcut for bypassing architecture then it's doomed to fail. If it's the culmination of all of today's architectural best practices, then yes, it promises to be wildly successful.