As the terms cloud computing, cloud storage and cloud networking have become second nature to most IT people these days, not everyone understands one of the key issues for anything cloud is the Real Time performance and design of cloud infrastructure. I have been preaching the real time nature of everything we do in networking for years now. Nothing could accentuate this understanding more than the nature of "clouding". Not everyone that hears me buys into my real time focus, but they all end up learning sooner than later what I refer to. For example, most software engineers will say that web browsing is not real time, nor is email, nor is file transfer. They will say that voice communications and video communications can be real time if they are bi-directional. One-way video or voice is not real time, they will argue. These philosophies date back to the 70's and 80's when most of their professors were probably studying networking and their applications. Unfortunately these views are very outdated understandings.
Watch the average user on their smart phone. Watch their activities and you will see that almost 100% of what they do is indeed interactive: texting, gaming, emailing, searching the web, getting directions, etc. etc.. Further, you will note they can't wait for answers. Their need is immediate and in real time. Elevate this to the professional interacting with business apps, conducting business, and the real time nature of what they are doing is even more evident. I am typing this blog into a web-based application and as I type it is noting spelling errors, saving drafts for back up purposes, and I am getting a WYSIWYG (what you see is what you get) view all in real time as I type.
Let's face it, we have been building such a powerful network that just about everything we do is in real time. All you have to do is slow things down and you will further understand my point. Imagine a less powerful network, where emails take minutes instead of milliseconds, where web pages do the same, where file transfers take overnight! Wait, I am having flashbacks! The network is so powerful that application writers have to think only gently about performance. Consider the applications Facetime or Skype. When the network under-performs, we simply disconnect and re-try. Consider how little functionality is actually in these applications to deal with non-real time issues. Can you adjust the applications to make the best possible connection? Not really. They work because the network works.
OK, so we are living in a real time world, and we are about to feel this even more. With cloud computing, cloud storage, and cloud networking, the dependency on the network is spiking. This means that a user may be using a cloud based service that may shift from one data center to another transparently to the user. This move of resources must happen under the very strict requirements of real time performance. For example, lets say there is a big news story and everyone is wanting to watch the video reports. Like today, load balancing can be done across multiple servers in the cloud, transparently to the end users. But then lets throw in an Amazon like event where there is an outage on a server platform. Sure, the cloud technologies will "fly" this resource to another server platform, but the question is which one? If the resources are flown to a server with improper network performance to maintain the real time performance, user experience will suffer.
This means that the designers of cloud solutions (compute, storage, and network) must balance all their solutions to deliver performance within the time constraints of the applications. I have personally read a ton of data on offerings and almost none will make performance guarantees, nor will they discuss these issues. Of the several experts I have had candid discussions with, they all say the same thing: it is too early in the technology to address these issues. This may be the case in their view, but I could not disagree more. These issues should be dealt with from the start. Why would anyone adopt a cloud solution that provides poor performance to the applications? The designers of any cloud sub-system must deal with this very difficult issue up front. I need the tools to design solutions with cloud that include management so that I know - in real time - exactly how applications are performing. I also need tools that allow me to define the parameters of performance for every application I support so that these "personalities" of my applications can be tied directly to the cloud infrastructure reactivity when something fails or moves. Think of these as ecosystems surrounding applications that allow the application to perform within network definable parameters. Unlike today's high bandwidth network, bandwidth may not be the only component to worry about.
These ecosystems begin to look more and more like living organisms that are under constantly changing environmental conditions, yet must maintain a certain quality of condition for the application itself. The main point here is that everyone must push the equipment vendors and the service providers to engage the issue of real time in cloud solutions. Your thoughts and comments are welcomed.