Saturday, June 16, 2012

The Fake cloud, the Real Cloud

This article is a little rant about all of the "cloud" proposals in the market. And I think a little history is in order.

During the late 90's , a group of companies lead by Oracle (including Netscape, Sun, IBM and even A pre-Jobs Apple was in the club) proposed the Network Computing Architecture, or NCA. Some technologists (like myself) bought into the idea right away. Back then, nobody spoke about “the cloud”.

The idea behind the NCA was having big application servers serving the needs of clients, moving the computing power to the network, and having thin clients, with no storage units. Some models even had an ID Card as login credential.

The model was attractive, cheaper than the client/server model, easier to maintain, update, backup, and support. The computer (called “network computer”) was going to be an appliance, almost disposable.

The NCA was ridiculed by a big sector of the tech press. They claimed “nobody wants go go back to the dumb terminal again” (not true, though, since network computers had an interesting level of computing power), and many went as far as saying that the web was OK for a shopping cart but it was never going to be able to support a whole business system.

Back then, during the dawn of the public Internet (or the www era, or the .com boom, however you want to call it), the terms used for the available services were:

  • Hosting: a company rented storage in their servers, to host HTML code (a web site), files (via FTP) and email. Later on, the service expanded to providing database access, back-end programming and scripting and some additional services.
  • Application Service Providers (ASP): Companies Building web based applications (in many cases they were not strictly “web based”, but “plugin based” or “applet based”) so customers could pay a fee and use them. 
  • Housing: I could set up my own server and place it in their data center. Housing companies would provide the networking services to access the servers. Some people called it “caging”, for the cages used to store the servers.

Those services still exist. But with minor modifications, they replaced them as “cloud computing”.

To me, the “fake cloud” is just an old service with new packaging. And to me, the “fake cloud” doesn't deserve the right to be called “a new paradigm” or “an innovative model”. It's just not fair.

Let's see some models. Let me start with Amazon Elastic Cloud. It's a great service. It's helping a lot of start ups. But it's still nothing else than housing. The only difference is, server are virtual instead of physical boxes. But the service core is the same: placing my box into someone else’s data center. Once set up, the skill level to set it up is no different than the skill level you need to set up a server sitting on your desk.

Google Apps are another example. I love Google Apps. Despite its limitations, it's a great service for those not willing to spend tons of money in traditional productivity suites and gaining collaboration. But once again, that is ASP to me. Nothing more than a bunch of applications offered via the web. It's not a new or innovative model. It's a great implementation of an already existing model. And it doesn't deserve the cloud “medal” either.

Microsoft Azure allows developers to build apps in Visual Studio and SQL Server and put them to work on Microsoft’s data center. If you're a Microsoft developer, I think it's a great way to deploy applications. But still, it's still hosting to me. It's giving me database, web and back end coding storage. Shouldn’t that service be called simply “hosting”?

In that matter, proposals from Oracle, IBM, HP and most big vendors are not much different that the ones mentioned.

Let me insist: those are NOT worthless services. I think it's great we have those available. But to me, if “cloud” is supposed to define a new paradigm, we cannot include “reheating old dishes”.

What would I expect from something called “the Real Cloud”? First, I’d try to inherit as much from the NCA as possible, meaning, the workstation should be as thin as possible. In a way, that means the operating system should become irrelevant. Real Cloud applications mush be 100% platform agnostic.

A Real Cloud platform should include development tools. And those development tools should be cloud based too! We should be able to leave nothing at the client level. As we promise the power of using an application in the cloud, with no client software installed, we should also be able to promise the ability of BUILDING application in the cloud. Real applications, which we can make available to desktop computers, laptops, tablets and phones, effortless and in one shot.

The Real Cloud platform should also be able to talk to legacy systems. This world is not a binary world, where it's “cloud or nothing”. Cloud apps should be able to talk to legacy applications, in a comprehensive and complete way.

In order to achieve that Real Cloud, we need to change the way we know databases.  The way we understand development. We’ll need to kill old paradigms, not because they’re wrong, nor because they’re old, but because they can not take us to the Real Cloud dream.

The Real Cloud has the potential to change computing as we know it. And to me, changing computing as we know it has a name: A revolution.