Documentos de Académico
Documentos de Profesional
Documentos de Cultura
We are still at the early days of Cloud Computing and the technologies underlying this concept
are maturing fast. However, the services offered by different vendors are facing downtimes. In
fact, such downtimes were part of even the traditional infrastructure approaches like
On-Premise hosting and Managed hosting too. Since, Cloud Computing is a new technology, it
has already captivated the imagination of businesses worldwide and, as a result, we are also
seeing some harsh criticism by certain segment of the media and tech blogosphere. Even
though some of them are unwarranted, there is some merit in these criticisms and it is time for
us to do a reality check. As I have mentioned in this blog and elsewhere, I believe in a future
where we will have an ecosystem of open federated clouds and pretty happy with the current
state of progress in Cloud Computing. However, for the sake of this analysis, I would like to
wear a contrarian hat and do a complete rethink of the Cloud Computing architectural model.
Let us do a brief recap of how Cloud is architected at present and, then, do a complete rethink
of this model to keep such downtimes at its bare minimum. Before describing the nature of
Cloud Computing as it exists today, let us dig back into the history of computing. Till a few
decades back, the computing was done on huge centralized mainframe machines and super
computers and are accessed by users using dumb text based terminals. All the software,
peripherals, etc. were part of this huge centralized powerful machines and were centrally
managed by dedicated teams. This centralized client-server model of computing was in vogue
for quite some time before the PC revolution ushered in a new era of distributed client-server
model. This new client-server model saw the federation of management and offered greater
flexibility than the centralized client-server model. The past few years saw the emergence of
Cloud Computing which is a much sophisticated evolution from the centralized client-server
system but built using large numbers of cheaper x86 systems. Even though the computing
resources in the Cloud model appear to be centralized like the centralized client-server model of
mainframe years, there are some significant differences. In the traditional mainframe client-
server model, the work was split between the server and the client whereas in the Cloud model,
the work is done completely on the "server" side (I have used the double quotes here to
differentiate from a single powerful server). On the traditional model, the server was a single
powerful machine like a mainframe or a supercomputer whereas in the cloud model, the
"server" is actually a server farm with hundreds or thousands of cheap low end x86 machines
that acts as a centralized computing resource. Even though the Cloud model is a much
sophisticated evolution from the previous client-server models, we are still dealing with a
"centralized resource" from a single vendor. Some of the big vendors use geographically
distributed datacenters and state of art virtualization technologies or "fabric" technology to offer
high reliability in terms of uptime. However, it is not the case with all the vendors. Many of
them use a single datacenter and a Cloud like architecture to offer their infrastructure services.
This leads to a single point of failure, like what happened in the case of Rackspace recently.
Even with geo-distributed datacenters, there are partial outages like the recent lightning strike
on one of the Amazon's datacenters.
A way to minimize the downtimes is to do a complete reboot of the way we think about Cloud
Computing and architect it using P2P technologies. P2P, also known as Peer to Peer, is defined
in Wikipedia as
P2P on the computing side is not something altogether new. It is an extension from the
distributed computing model used in the projects like SETI@Home, Protein Folding, financial
modeling, etc.. It is possible to build a Cloud that taps into the idle CPU cycles of desktops and,
let me be a bit bold here, the servers in some of the enterprise datacenters. This underlying
P2P technology can be masked with a "fabric" that could offer a perception of a centralized
computing resource. Well, such a P2P cloud cannot be built on top of naked P2P nodes alone
and there is a need for an hybrid approach containing servers for management, messaging,
monitoring, etc. (much like how it is done for Skype). I am not discussing my childhood
fantasy here in this article. In fact, a group of researchers in the University of Western Ontario
has been working on a project to build a stable, predictable, P2P cloud infrastructure that
leverages the idle CPU cycles. There are also other academic research groups looking at the P2P
based Cloud model. I am not aware of any company, like IBM, doing any research on P2P Cloud
but it is just a matter of time before some of these companies start exploring in this direction.
Well, P2P based Cloud is a realistic possibility but it is not clear if it will be more effective than
the current "client-server" model. However, its reliability cannot be questioned and Skype is a
good example for this. The technology is still inside the academic labs and it is a long way to
go before we see its adoption on the commercial side. It is important that we explore the P2P
model as an alternative to the current Cloud Computing model.