I’ve recently heard/been involved in a lot of discussion around the concept of cloud computing and whether or not there is an impending evolution/revolution around it. As such, I decided to put in my 2 cents.
Let’s get the punch line out of the way: cloud computing is coming…so deal with it.
Skeptics cite a handful of reasons why this is purely “hype” as opposed to the way of the future. Mainly the issues around reliability, accessibility, security, and performance. I’ll deal with each of these points individually.
Reliability is no doubt an issue currently. When one looks at sites like Twitter and the issues surrounding it, it is no wonder that this is a major concern of the skeptics. It’s important to remember, however, that we’re in the early stages of this transition. Looking back on the initial digital revolution the computers of the day weren’t very reliable either. Computers would crash and lose the active document, hardware would fail losing all the documents on the computer, and we still constantly face issues around viruses and data corruption. As time has gone on, however, we’ve found solutions to most of these problems. Word (and many other applications) have periodic auto-save and document recovery features, software has gotten more stable over time, hardware has built-in monitoring to warn of pending failures, and anti-virus has matured while data-redundancy options have begun to go mainstream. Similarly, the reliability issues around cloud computing will evolve over time. The network will become more reliable, the individual sites will be held to a higher standard of up-time, and data redundancy will become a trivial task built in to the libraries the applications are built on top of. There are possible early examples of this already available using solutions like Amazon S3 and Google AppEngine that aggregate the needs of many applications to take advantage of economies of scale. As the cloud computing applications mature and become more wide spread the issues around reliability will diminish until web apps are no more or less reliable than their desktop counter parts.
Accessibility is another commonly cited example. What will we do when we don’t have access to the internet? How will we use these applications? My answer to this: A long time ago, we didn’t have laptops. Instead desktops (and their corresponding data) was trapped in that single location on that single machine. As the technology matured we got cheaper desktops that we could buy for personal/home use and laptops that we could take with us anywhere. This freed users to use their applications wherever their hearts desired. It’s easy to see that internet connectivity is getting more and more wide spread. Wifi is everywhere and access to cellular networks is filling in the gaps. As this trend continues it’s easy to see that internet connectivity will one day be available wherever electricity is available (which we often take for granted now). In the transition, however, we’ll continue to see development around projects like Gears that allow users to take their web app experience offline and re-sync when the internet becomes available. Accessibility is an issue fading fast and will fade even faster as the trend continues.
The issues around security are real and worth noting. Having data accessible via the internet means it’s accessible to everyone on the internet if the proper security isn’t in place. Although the internet isn’t exactly built for security there have been huge leaps in this area over the last few years. As encryption becomes more prevalent and new systems of multi-authentication become widespread we’ll see many of the same types of security issues we’ve faced with laptops come and go in the web space. Ultimately many of the security issues will come from user-error and social engineering, not software failure. While this is significant, it’s important to note that these same issues would be faced on a traditional desktop application and/or even pre-digital revolution data storage (old school papers and files). The biggest holes in security will continue to be in the people accessing the data, not the systems in place to protect it.
And lastly, performance is a commonly mentioned issue. Web apps have a reputation as being a bit slow and clunky. This mostly stems from the fact that these applications are built in JavaScript which is a powerful, but dated system. JavaSscript is interpreted, which makes it run much slower than compiled counter parts. As the technology matures, however, we’ll see the same trends we saw in the desktop space: initially the improvements will come from clever programmers and minor improvements in the processing of the code itself, but over time the hardware improvements will out-pace the software changes allowing the same applications to run faster on the new hardware/platforms (in this case it’ll most likely be a combination of hardware improvements and browser enhancements). The performance woes will subside as we see the line between the client and the server blending (as made possible by the technical enhancements previously mentioned).
In summary, although there are some real issues around the current state of cloud computing many of these issues aren’t all that different than the issues we faced in the initial digital revolution. And, just like in the previous revolution, these concerns are far out-weighed by the advantages of the cloud computing model. The accessibility of having your data and your application available from any internet enabled device is very powerful. Add to that the advantages of direct, digital distribution (software updates are seamless and immediate…dramatically lower distribution costs as everything moves to digital downloads) and you’ve got a real force behind this movement. Watch for clients to become simpler, more prevalent, and the emphasis to move more to form factor and usability as opposed to power and performance.
The cloud computing revolution is coming…might as well embrace it.