We are becoming increasingly reliant on mobile technology and the internet in our daily business lives, and a large part of our software and data now resides in various cloud-based services. The question of what happens when we don’t have Internet access has been downplayed, but I believe the technology has now progressed to a level of both sophistication and ubiquity that makes offline access more than just a “nice to have”.
Why Offline Is Needed
Cloud evangelists like to argue that we’ll soon be living in a world of thin client computing where our devices will just be windows through which we look at data held in a server. These same people argue that local computing can never provide the resources of the cloud, where you would have an entire data centre to do your computing. I believe that the cloud holds enormous promise (in fact, far more than has been realised to date) but there is a problem with the cloud-only view: what happens when you don’t have network access?
Of course, many futurists scoff at this argument, insisting that increased coverage of mobile data services and public Wi-Fi means that there are very few places where we cannot get network access. This is where I believe there is a gap between optimism and reality: just last week I attended a popular industry event in London where mobile signal was unable to penetrate the building’s walls.
When travelling, unless your train service or airline provides Wi-Fi, it is very likely that you will have no connectivity for some or most of your trip (and free Wi-Fi typically remains both slow and rare).
Further, this problem won’t go away with better coverage; in fact in major cities we will eventually run into the limits of how much data can be carried, and as more people want to transfer more data more often it is believed that we could reach this saturation point as early as 2020. The obvious way to deal with this challenge is by adopting smart data transfer patterns that take advantage of the capabilities of the cloud but don’t impede user experience.
Challenges Of Offline
That’s not to say that providing offline access is easy: it’s a significant technical challenge and one of the reasons cloud-only has been pushed as the future is that offline was seen as being a bit tricky. Although I am very excited as the company I work for supports the ability to build offline capability into our mobile platform, I remain aware there are many challenges to think of when you are considering providing offline access to applications.
The key challenge has been security: in particular, what data is stored on the client, and how this can be compromised. The security of the network and server or web app are less significant here because although they present challenges, these are almost the same as in a cloud-only situation.
I don’t want to get into too much technical detail in this article but any offline access requires storage on the device. This means that the data could be read by malware or if the device is stolen, and this is why mobile device and application management (MDM and MAM) are becoming such important issues in enterprise mobility.
However MDM and MAM are not alone in securing objects; any good mobile platform will allow you to encrypt local data objects and allow you to develop a mechanism to delete them once a set time frame has expired. Therefore while security has been a daunting challenge, there are now a wide range of very capable security options and you just need to identify which is most appropriate for your business.
Another issue is how to manage the offline patterns, as there are several options, including synchronisation, matching and download, and how to identify which of these best fits your user’s needs can be a challenge. This is important because it determines how users affect the online copy when updates are made: if multiple users have edited an item, which should take precedence?
There are two broad options: synchronisation, and concurrency. At a simple level, synchronisation works at a very low level and is implemented to prevent an incorrect read or write of the data due to thread racing. This is where two signals “race” each other to produce the first output, and is a problem in multi-threaded applications, especially when there could be multiple concurrent users.
Concurrency is essentially a policy which determines what to do in the event of a synchronicity problem, such as when a second user attempts to access the same data. Several concurrency patterns are widespread and each is optimised to a specific business scenario and problem:
- An Optimistic Offline Lock aims to prevent conflicts by rolling back the transaction if a conflict is detected, and validates that the data in question has not been altered since it was loaded
- A Pessimistic Offline Lock, as the name suggests, is a variation on the Optimistic version which is optimised for environments with a high chance of conflict between sessions; it avoids conflict by only allowing a single session to access each piece of data
- A Coarse-Grained Lock is a single lock which covers a group of objects, which can be very useful when a user needs to access a customer record: all objects under that record can be automatically locked helping avoid session conflicts associated with that record
- Finally, an Implicit Lock allows framework code to acquire offline locks, which helps avoid human error in development (if code fails to release locks, productivity will eventually become impossible) by having key locking tasks handled implicitly by the application rather than explicitly by the developer.
While locking patterns are very effective, it is sometimes necessary to use more subtle and complex forms of concurrency control, including:
- Serialisation graph-checking, which checks for cycles in committed transactions
- Timestamp ordering, where access to data is controlled in timestamp order
- Commitment ordering, where the chronological order of commit events is checked
- Multiversion control, which generates a new version of the object allowing greater version control
- Index concurrency, where access operations are synchronised to indexes rather than user data
- Private workspaces, where each transaction maintains a private workspace for its accessed data, which is only made public upon commit.
However, an equally significant challenge is how to actually build a web app that works offline in the first place, since issues such as manifest caching can make updating your code an opaque process, and current browsers provide very little feedback when problems occur; and the less said about cross-platform compatibility, the better.
Using metadata to identify the various elements that are available offline allows the online record to be updated more easily, by simply comparing the metadata in the online and offline copies. The solution here is to use a mobile application development platform which is built to handle metadata, works across platforms and which handles the coding for you, and which has offline support built in.
Why Offline Access Is A Game Changer
Despite the challenges, I believe that being able to offer offline access to your web apps is a game changer because this allows users in every type of business, from large enterprise internal users to consumers of B2C services to rely on a web app for their everyday business and pleasure, without the concern that a network outage or lack of connectivity will cause them to lose their work or be unable to access critical data.
Offline access doesn’t just mean not having full access to a network, but it could be more nuanced. For example, a user on 3G (let alone 2G) may not want to spend time and precious data downloading a very large item such as a catalogue, so in this case the user may well prefer an offline version.
In workflow management, for example, it is important that all workflow elements are followed and logged, and in many cases there can even be compliance issues around this reporting. However, with more mobile users with less defined work hours, there is no guarantee that the user will have access to the central system when completing parts of the workflow, so having reliable offline access can allow the user to continue working with a cached copy of the information which the finished workflow can be automatically updated later.
Also, we run into business processes all the time in the mobile world, such as the employee who needs to log his time sheet on a daily basis but is only able to upload to the central system on a Friday; in this case being able to complete the task but synchronise with the system at a later date can be very useful.
A similar situation could apply in task updates where a remote worker who has been called out to a customer site can log all the information needed to complete the task (including ordering spare parts or booking a return visit if needed) without having to worry about having reliable network access.
Similar efficiencies can be built into time-sheets, project management reports and expense claims: offline access to the systems means the users can complete the reports when it is convenient for them to do so, without worrying about connectivity.
Offline access to systems is especially useful to sales professionals who need to be able to look up information such as price lists, past proposals and creditworthiness on the go. With offline access they can reliably use a cached copy if they are unable to get network access, and also need to be able to input new data into the system which they are with the customer; especially if it is for an order!
At this point it is not just a question of efficiency but also of gaining the customer’s trust; the seamless experience that offline access helps to generate can be important in creating a perception of being a company that really has its act together.
Finally, in the B2C consumer world offline access is increasingly becoming a highly sought-after capability: consumers want to have data now, where they are and as easily as possible. After all, we are living in the future and we expect our technology to be magic.
The most critical consumer apps for offline are those related to travel and retail; we are making more use of our smartphones as the boarding pass, the cinema ticket and the hotel booking, not to mention the local map. All of these things are far too critical to risk not having access due to poor coverage so the consumer will place great importance on having that information everywhere. This is why I believe that providing offline access is a game changer: it brings us one step closer to the truly mobile connected future.