Cloud computing - offline

With all the talk around cloud computing, a general assumption seems to be the availability of internet connectivity and uninterrupted availability of the cloud. Cut to the real world – where interrupted connectivity is a given and even the best of hosted clouds fall short of 100% availability. What would users of cloud based apps and services do in such situations ?

In my earlier post I was highlighting the usefulness of a cloud based suite of office productivity applications (such as Google Docs) and how they could either complement or in some cases replace traditional desktop software. There are many useful cloud based apps which can enable users to migrate from the traditional model of installing apps on their local machines and maintaining copies of their data at each location where they need to access it.

Any move to a cloud computing paradigm must consider the requirements for “offline” access to cloud resources – would users require offline access to their cloud applications and also understand the fact that not all applications lend themselves smoothly to offline access.

Looking back at the example of cloud based office applications (Google Docs) or even cloud based communications apps such as email and calendar, there are tools to enable offline access for these applications. Technologies such as Google Gears, facilitate this offline access. There are many real life use cases where such offline access is required – allowing users to, for example, download their emails & calendar events to a local cache while working offline and later uploading changes when connected back to the cloud.

However, there are applications where such offline access can pose significant challenges. Take the case of large distributed ERP applications that are hosted on a cloud wherein some users are working online (connected to the cloud) and some are working offline with a snapshot of the data downloaded to their devices. Issues around data integrity can quickly arise when folks who are offline make changes to data / create new entries and later try to sync back to the cloud while the folks who are already on the cloud have made other changes to the same set of data. Take a simple example of a salesman on the field who uses the offline data that shows stock available of a particular product and then commits to the customer to deliver it immediately. However, another sales person who is on the cloud has also made a sale of the same product to another customer and now there is no stock available. The sales person who is offline will later try to sync back to the cloud and realize that delivery as per commitment would not be possible. Again, looking at the same sales person who is offline and generates an invoice with the invoice number being auto generated based on the last invoice number. If folks on the cloud have also simultaneously been generating invoices, we can easily end up in a conflict situation where the same invoice number could be assigned to multiple customer orders. Such cases do not mean that we just say “No” to cloud based apps – there may be few cases when “No” might be a more plausible way to go – in most other cases, some amount of thought around re-design of applications to cater to the challenges of working on the cloud will be required.