"... the cloud will soon become a disruptive force in the mobile world, eventually becoming the dominant way in which mobile applications operate."
Cloud computing is gaining acceptance as an efficient and cost-effective architecture to deploy many types of systems. More recently, mobile cloud computing has entered the scene, as an important means to deliver mobile apps and data. This article discusses trends that are driving the adoption of the mobile cloud, important components of mobile cloud infrastructure, and the role of open source.
Cloud computing provides a flexible, convenient and affordable way to remotely distribute processing and data. In the context of mobile devices, the ability to offload processing and data storage is highly desirable because mobile devices have limited processing, memory, network bandwidth and battery life. A mobile cloud infrastructure that remotely performs computing, manages data, and can back up wireless devices in the event of loss, power failure or network interruption, makes for a compelling use case.
Computing requirements of a mobile cloud differ significantly from those of a regular computer cloud. The biggest difference is found in the diversity of supported mobile devices. There are four billion mobile phones, representing a vast array of mobile operating systems and hardware platforms. While mobile standards exist on large numbers of phones, there are significant variations that make it practically impossible to provide rich, usable mobile apps that support more than a small fraction of devices.
This device fragmentation is poised to become more difficult to address before it improves as several new types of mobile devices are entering the market. These include e-book readers, tablet PCs, digital picture frames, wifi cameras, and wireless cars and appliances. These devices have increasing amounts of storage and connectivity, and are good candidates to connect to a mobile cloud. It is easy to imagine that people will want to access a wide variety of data and content on different mobile devices.
For example, people may want to access Gmail addresses on a wifi camera or e-book reader so they can email photos or an article. They may want to view a work or family calendar on a home refrigerator or vehicle screen, or they may want to post a photo from a camera phone to a corporate intranet or social network. A mobile cloud should provide the infrastructure to support these possibilities and more.
Mobile Cloud Components
There are several essential elements of mobile cloud infrastructure that make it distinct from a regular computer cloud, as depicted in Figure 1.
Figure 1: Mobile Cloud Infrastructure Elements
The primary purpose of a mobile cloud is to make it easy to sync mobile phones and devices with systems such as social networks, email systems, computers, and virtually any data store. The goal is to perform processing and to manage data in the cloud, to offload these functions from mobile devices. What follows is a description of the significant components and capabilities of the mobile cloud.
Sync engine: a mobile cloud should be able to sync a wide variety of data and content, between any source and device. Some people may question whether syncing is still needed in an age of broadband wireless networks. The answer is "Yes". Even with fast 4G networks, there will still be pockets of non-networked areas and times when devices are offline, and people will still want access to their data and content. Furthermore, for a good user experience, it is necessary for many apps to access local device data. For example, users do not want to wait while video buffers.
Web 2.0 portal: a second major element is a web 2.0 interface for user data and content. This provides a means to view, manage, edit and filter data and content that flows between devices and data sources. This applies to mobile data such as address books, calendars and email, as well as rich media such as photos and video.
Consider the proliferation of contacts in systems such as email, social networks, VoIP and more. People may have hundreds or thousands of contacts in multiple places, yet they typically only want a small fraction of these on their phone. A web 2.0 portal should make it easy to set up groups of users or to indicate which contacts to include from which sources.
Another example is posting photos from a phone to multiple destinations, such as social networks, photo sharing sites or personal computers. There needs to be an easy way to allow people to specify how rich media should be managed. A web 2.0 portal that provides an intuitive desktop-like user interface in a web browser, to access and manage mobile cloud data, is important.
Device management: small, portable and relatively inexpensive mobile devices are dropped, broken, lost, stolen and exchanged with greater frequency than other computing devices. This not only makes it more important to back them up, in case their data becomes lost, but it makes them more costly to support. An important aspect of a mobile cloud platform is the ability to remotely manage devices over the air, in terms of provisioning devices, performing diagnostics, updating software and settings, and remotely locking devices and erasing data for security reasons. These functions are typically found today with higher end smartphones such as BlackBerries and iPhones, but they are increasingly becoming expected with other types of portable devices.
Data adapters: to sync a wide range of data and content, there needs to be an easy and flexible way for mobile cloud apps to access diverse systems such as social networks, email systems, databases, customer resource management (CRM), and enterprise resource planning (ERP) applications and servers. Without this ability, it could take too long to perform even simple tasks. An important component of mobile cloud infrastructure is data adapters that provide the rapid ability to sync with common systems and to supplement this with the ability to interface with custom systems.
Beyond these core mobile cloud infrastructure components, there are several additional capabilities that are important in a mobile cloud platform, as illustrated by the smaller clouds in Figure 1.
Push notifications: when data or content is changed in one place, for example on a mobile device or online, it is important that the change automatically propagate everywhere it should, without the user initiating an update. This is the role of push notifications, which can be performed using a variety of methods, including TCP/IP, SMS and polling. Some networks and devices are only capable of supporting certain forms of push notification, so the form of push notification used needs to conform to the profile of the involved networks and devices.
Aggregation: many mobile cloud apps require aggregation, such as gathering data from multiple email systems, social networks and other systems. The mobile cloud platform should be able to intelligently source data from a variety of systems. Considerations include how often remote systems are accessed and which data is cached on the server versus stored locally or pointed to remotely.
Conflict resolution: when working with data from multiple sources, one of the most common yet perplexing challenges is reconciling differences among like data. A simple example stems from having someone's name in a mobile address book, while having a different version of their name in an email system or social network. When aggregating this information, it is easy to end up with multiple entries representing the same person.
A critical capability is detecting 'twins' by comparing attributes such as email addresses, phone numbers and other data, to determine whether these are the same person. There need to be configurable rules for determining which data should win a conflict. This may be viewed as a fairly arcane aspect of mobile cloud services, but maintaining the integrity of people's data is paramount, and a robust conflict resolution system is a must.
Core apps: many mobile cloud apps involve a common set of functions, such as syncing contact data, calendars, email, files and photos. It is important for mobile cloud infrastructure to provide common capabilities so these functions can be performed without reinventing the wheel.
Privacy and access: as user data is stored in the cloud, it is critical that data is highly secure and backed up. At the same time, there needs to be a simple way for users to specify which data to share with other people and systems.
Rapid development: there needs to be a way to rapidly build mobile cloud apps that work on a variety of mobile phones and devices. Until recently, developers either needed to build native apps for each mobile platform, which was extremely expensive and labour-intensive, or build web apps, which worked on many phones but were unattractive and clunky. There are some new initiatives that purport to provide developers with the best of both worlds: the creation of one version of a mobile app that can be widely deployed, while exhibiting many of the characteristics of native apps such as a rich user interface, local data storage, and integration with other apps on the device. Examples include the newly announced Wholesale Applications Community (WAC) initiative, technology from rhomobile, and a newly announced open source mobile web 2.0 framework from Funambol.
Scalability: an important aspect of mobile cloud infrastructure is the ability to support large numbers of users and, in some cases, millions or tens of millions of devices. This can be accomplished by using industry standard application servers and infrastructure, and approaches for load balancing and fault-tolerance.
The Role of Open Source
It would be seriously remiss to discuss the mobile cloud without mentioning the role of open source.
Two years ago, if you mentioned open source and mobile in the same sentence, most people thought you were referring to obscure projects for developers. Much has changed. Google's Android open source mobile operating system has been embraced by many top device manufacturers and is an attractive platform for developers due to its openness. On the server side, Funambol's open source mobile cloud sync server has been adopted by leading mobile companies and has been downloaded three million times. These projects illustrate that open source is transforming mobile and is attractive to both companies and developers.
In the case of Funambol, an open source mobile cloud platform, open source permeates all aspects of the solution. The vast majority of Funambol code is open source and there is a large, worldwide community of more than 50,000 developers who have contributed to the Funambol project. Their contributions generally fall into one of the following areas:
1. Device compatibility: the largest area of contribution pertains to enabling Funambol to support more mobile devices than comparable software. This stems from the community's development and testing of Funambol software on a large range of mobile devices and sharing this work.
2. Connectors: there are several dozen Funambol community projects for connecting the Funambol mobile cloud server with various email and groupware systems, social networks, CRM systems and other applications.
3. Server enhancements: some Funambol community developers have extended the core Funambol mobile cloud sync server to provide advanced functionality such as server-to-server synchronization.
4. Many other open source contributions: Funambol has received numerous additional contributions, in the form of software and documentation that has been translated into different languages, significant feedback about the software performance, and much more. Funambol's mobile cloud platform has reached a critical mass of functionality and usage due to open source.
Several trends are favouring the increased adoption of mobile cloud infrastructure, not the least being the growing diversity of mobile phones and devices. There are several major components of a mobile cloud platform, including a sync engine, web 2.0 portal, device management and data adapters. Important capabilities of mobile cloud infrastructure include sync as well as push notifications, aggregation, conflict management, core app functionality, privacy and access controls, rapid development and scalability. Open source has played a major role in the evolution of mobile cloud infrastructure by significantly increasing device compatibility, connectors with other systems and many other aspects.