As a programmer I have always seen the cloud, and more accurately cloud deployment, as a friend. It's one way to get an app as a service into the user's hands. Just recently, however, I have had the tables reversed. With me as the user, I suddenly find a cloud delivered app not quite as attractive as I thought.
Continuity; it all comes down to continuity or the promise of it, or is that the myth of it?
What I want to examine is the deal that the cloud offers an end user. This is different to what it offers a big company or an enterprise with the need for huge computing power. There are cases where cloud computing is the only option, but there are many others where the server could just as easily run on a local machine.
Before moving on to the main topic it is worth looking at the broader logic behind cloud computing.
The cloud is in many respects a throwback to the old ways of doing things. If you were back in the 1980s you would have laughed if I had told you that the future was getting computing power together into big buildings where everything was centralized and managed. You would have told me:
No that's the past. We have computer centers at the moment that hold big mainframe computers. The future is the personal computer, the desktop machine that machine that lives with you at home and in the office.
The advantages of the personal computer were so obvious that the demise of the computer center was clear.
Today we have server farms that are far bigger than any old-fashioned computer centers. The irony is that we also have more personal computer power in our phones and mobile devices that access the server farms that we ever had in an early desktop computer.
So how has this come about and is it all for the better?
Back in the early days computer centers were essential because powerful computers were big and needed a building to themselves. This had a spin off advantage that the data that they processed was also all in one place.
Today, we still occasionally need server farms for their aggregated computing power but this isn't the main reason that end users are turning to the cloud. In most cases, cloud hosting of what used to be run on personal computers isn't done because of the need for huge computer resources. Users are turning to cloud hosted services for things that just recently would have been personal computer apps - office suites, photo albums, to-do lists, calendars, email and so on.
Let's look more closely at email, for example.The growth of cloud based email is something of a mystery if you just look at cloud hosting as providing raw computing power. Put simply, email doesn't require much computing power - neither in terms of cpu nor storage. You can just as easily run an email client on your personal computer and until quite recently this was the normal way to do things.
So why has everyone rushed off to cloud hosted email services such as gmail and outlook.com?
The simple answer is that it provides a high degree of mobility. You can pick up your phone read some emails, move to your tablet read from where you left off and then sit down at your office computer and continue. The point is that a server will deal with a range of clients and as the state is held on the server you can transition from client to client and pick up where you left off.
But wait this is still very weird.
This is an advantage of a server based architecture, not one of cloud hosting. For example, you could just as easily host a web email server on a machine in your office or back room and connect to it across a range of devices from lots of different locations. Put simply, you don't need the cloud for web mail, you can host it locally.
What stops people from doing this?
There are a number of reasons. The most obvious is that end users don't want the hassle of having to set things up and maintain the system. In theory, when you hand the job over to a hosting company it does all the hard work. Of course this is theory, in practice things go wrong.
Users do get locked out of their web mail accounts, emails go missing and service isn't always 100%. However, most users aren't capable of building the infrastructure needed to host their own servers and so this is the best option.
This can't be the complete reason as if it was some one would package up the necessary technology into an appliance and it would all become as simple as plugging in a router (not that plugging in a router is that simple). Microsoft even had a go at doing just this with its Home Server - now defunct.
The extra problem that has to be solved is connectivity. Many offices, and most homes, survive on ADSL connections with 8MBytes/s or better download rates but perhaps 1MByte/s or less upload speeds. As such it can be painfully slow to host your own server and connect to it from far away places. One of the main reasons users like cloud hosted services seems to be that they don't want to clog up their local bandwidth.
Now consider the day that we all have Google's, or someone else's, fiber optics?
Who needs cloud hosting then for end user applications such as email?
OK so suppose this day has arrived, why would I switch from a cloud hosted service to a local one?
Consider my own efforts to replace Google Reader. This is a crisis brought on by a big company discontinuing a popular end user service, i.e. RSS feeds. This may sound too specific a problem, but it does have all of the characteristics of selecting a cloud hosted app.
The choices that have to be made in replacing Google Reader are fairly standard. You first look for a cloud based solution and quickly discover that none of them are big enough to offer you the promise of continuity. The smaller outfits that offer a free tier are initially attractive, but with so few paying users what is the chance that they are going to be around next year? They could vanish overnight and take your data and the application you use to work with the data with them.
With a desktop app, even if the company making the app goes under, the only damage to you is that you don't get support or updates. I have desktop apps that are well out of date still running on virtual machines and still providing access to their legacy data. If it ain't broke don't worry about updates.
When it comes to cloud apps, continuity of service is essential.
I don't want to lose all my RSS feed data when my company of choice goes under and the servers are repossessed. Putting your data into the single basket of a web hosted end user app is risky, unless the company is too big to fail. Even then the company may decide to close the service without much reason. You don't need to look further than Reader - we all chose Google's offering until the plug was pulled and now we are migrating en masse to alternatives. But will they be able to cope, or be willing to provide a free service?
So what are the conclusions?
The first thing is that end user apps in the cloud have to have some sort of guarantee of continuity from the point of view of the end user. This is something you need to remember if you are planning to create a startup to provide such a service. You might not get the users simply because they can't trust you to be there next week.
The second is that as internet connection speeds increase the need for cloud hosted end user apps decreases - there will be a window of opportunity for end user servers packaged as appliances. This packaging could be either hardware or software.
For example, you could create an off-the-shelf email server based on Raspberry Pi or similar. Alternatively, you could simply create an end user email server that installed onto a spare Windows desktop with no configuration necessary - have you see the complexity of the current email server offerings?
The third is that if you are techie enough to know how to set up your own servers, you should consider creating a VM of what you need and get that hosted on the web. This gives you flexible access, doesn't load your local internet connection and, if the hosting service goes out of business, you simply move the VM to a new host.
In case you are wondering, this is what I did for the replacement for Google Reader and now I'm contemplating the same move for Gmail and Google Docs. I set up a virtual server running an RSS aggregator sever, tested it out locally, and when it was all working I moved it to a hosting service. I now have the advantage of cloud hosting, but with the knowledge that I can take the server back onto a local machine and/or move it to another hosting service in a few minutes.
If you are interested, ask and I'll provide the details in a future article.