Tuesday, May 24, 2011

Cloud or vault?

My understanding of cloud computing is somewhat superficial.  I am going to refer to it in the next few posts in the meaning of cloud computing, cloud services, software as a service (SAAS) and no doubt, applications you would not immediately associate with "the cloud".


The cloud is a means to separate data from it's processing and storage. Until recently, data and processing power had to be co-located. Word processors, for instance, are fat client installed on a PC, used to create, edit documents that are destined to be stored on the same unit. Cloud computing allows to separate the functions and to have for instance the storage, processing of the data physically separated from it's access and editing functions.
A browser, a thin client or an app present content and data, while its storage and computation happen in the cloud. This has been made possible by the increase in available fixed and wireless bandwidth and two key concepts I develop below.


Elasticity
As applications and content require more and more processing power and as the type of content and application is in constant flux, we need to have the capacity to have very flexible model for allocating in near real-time capacity for the processing, delivery, management of content and applications.
This concept in cloud computing is called elasticity.



Fungibility
If you operate a server, for instance to stream video, it has finished capacity in term of I/O, CPU, wattage,etc... When you reach the system's capacity, performance decrease and in some case, the application shuts down. Theoretically, in a cloud, you have a large amount of servers, that are not dedicated to one application in particular, but as demand increase in one service, then capacity can be captured from other resources. Of course, it means virtualization across application and intelligent networks that can organically adapt to the demand. Ideally, a large farm of servers or a collection of data centers present a general capacity, processing power, etc... that can be used by units, on demand by the residing applications.

This concept is called fungibility. You might have a large server farm, with several applications deployed concurrently in a virtualized environment. Ideally, the resources of the farm are dynamically allocated to each application as the demand for these resources vary over time.

Cloud or vault?
Cloud computing is a great evolution. It enables us to use resources in a more efficient manner, reducing fixed footprint for specific applications. What cloud computing is not, though is free, unlimited resources. Cloud computing is still bound by law of physics so if you need a lot of processing power or storage for an application, the fact that you are using cloud computing does not necessarily mean you are being more efficient. Cloud computing in my mind is particularly well suited for spiky, unpredictable, low I/O, transactional content and apps.

I am not saying that the cloud is not ready for business critical high bandwidth, high I/O traffic, just that I am not. It is more a matter of mindset, maybe of generation than technology.



I feel more confident and more in control with a vault than a cloud. I would keep all my content, programs, apps in a vault, that I can physically access myself, even if it is less efficient, more costly and ultimately less reliable than the cloud. That is until the cloud is so prevalent, with so much redundancy, so many safety nets that I could never loose one bit of data and the service could never be interrupted.

I am not ready to relinquish total control over my content and apps. I am less trained, equipped and capable than cloud services  providers, but I will need to change my mindset to choose a cloud service over my vault.

I will provide a couple of example of my best and worst experience with cloud computing as a consumer in the next few posts.



In the meantime, please comment, are you cloud or vault?

No comments: