There is cloud for everything these days! As a matter of fact, a form of cloud we all know is called "The Internet." Hold on, but then, isn't it true that cloud has been in existence for a very long time already? (Rhetorical.) Well, then why so much hype around the cloud now? Soon, we will get to that. In fact, that's the intent of this article: to discuss what it means to its different consumers. I think "The Cloud" that we know today has grown organically and at a very fast pace causing there to be varied opinions out there about 'what cloud is.' My goal here is to try and build some common perspective on this topic.
What Cloud Is and Is Not
Cloud is not one entity where users would go to and seek services (although it is true that all large players are providing a variety of services under one roof). Speaking of services, back in my early days of web development, the most appropriate services I needed were servers and DNS. We would call it "hosting" back then (ring a bell?). That was quite a popular form of cloud and it still exists today. Today there are service providers who perform payment transactions without requiring you to actually store customer credit card data. Yet another one provides you with a service where you would write your application logs to a third-party provider who would retain them so you could go back to it to perform analytics on the errors encountered eventually allowing you to improve your services to your customers. Even as an end consumer, most of us store pictures from our mobile phone on some sort of cloud. Heck! we even watch movies from the cloud!
The point here is that Cloud is not just hardware/infrastructure nor it is just software/a bunch of applications hosted online. If an Enterprise Application is comprised of multiple layers, such as Infrastructure, Platform, Application Services & Middleware and finally, the User Interface, then each layer can be thought of as Cloud. That is so because each layer provides some sort of services to the layer on the top. For example, Infrastructure provides computing services to the platform; Platform provides necessary basic application components to Application Services; while Application Services & Middleware actually execute business functions/rules that are accessed from some sort of UI. Thus, in the train of thought, it often appears that each layer can act like a blackbox to the layer above. The blackbox is usually then so self-contained that innovative services can be built around the blackbox. That's when you might have heard of terms often referred to as "X ... as a Service" (commonly denotes as "XaaS"). There are service providers who provide one or a combination of services labelled as IaaS (Infrastructure as a Service), PaaS (Platform as a Service), or SaaS (Software as a Service). Recently, the XaaS concept has become so popular that almost anybody providing blackbox service(s) comes up with one or the other substitution for 'X'. As an example, recently BPO (Business Process Outsourcing) providers are found to be labeling their services as BPaaS (Business Process as a Service).
Thus, as difficult as it is to pinpoint one common definition of Cloud, I think one general understanding will make it easier for us to consume any Cloud. That is that of a blackbox. According to BusinessDictionary.com, blackbox is defined as:
Device, process, or system, whose inputs and outputs (and the relationships between them) are known, but whose internal structure or working is (1) not well, or at all, understood, (2) not necessary to be understood for the job or purpose at hand, or (3) not supposed to be known because of its confidential nature.
Yes, indeed that sounds like Cloud because also most often it is assumed to be the silver bullet for almost anything that nobody wants to do or understand, but there are guarantees put in place such that it continues to work as designed.
So, What Makes Cloud, Cloud?
It would be unfair to not give credit to the right place for the form in which Cloud has evolved to today.
- Recent advancements in infrastructure virtualization have allowed the physical infrastructure to shrink while the virtual infrastructure to grow. A common measure of the success of implementing Infrastructure as a Cloud is "oversubscription." Read more on oversubscription via a great paper on usenix.org.
- From Web 1.0 which was mostly static in nature to Web 2.0 which enabled application integration, making it possible on one end for service providers to build the web as a platform while on the other end for service consumers to break down their monolithic applications into modular service-oriented applications. Refer to this great article on O'Reilly Media.
- As I mentioned very early on, the Internet and widespread adoption of it cannot be forgotten. The spread of internet from wired connections to over-the-air and constant connections made the most impact in my opinion. Certainly, there is a catch-22 in terms of opinions around whether the internet pushed development of mobile development or vice-versa and we can leave that discussion for sometime later.
- Last but not the least, credit is also due to some early adopters who pushed technology to create innovative cloud-based offerings either to the development community or to end consumers.
Cloud may mean a lot of different things to different people. A lot of services can also be provided via the cloud, thus it also serves as a platform for service providers to reach a wider audience. However, if there was one thing I would like to leave behind here it's that cloud has many use cases for both service consumers as well as service providers. In the modern world, we all use cloud... and generally, we don't have a choice!