A2Cloud: The Anytime Anywhere Cloud

A2Cloud: The Anytime Anywhere Cloud

João Nuno Silva, Luís Veiga
DOI: 10.4018/978-1-4666-4781-7.ch013
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

This book chapter presents the integration of widely available technologies to bridge the gap between mobile devices and their computational rich surrounding environments. Taking as common glue Cloud Storage systems, new interaction between devices becomes more natural. The processing of files can be transparently executed on nearby computers, taking advantage of better hardware and saving mobile devices power. In this chapter, the authors present a novel resource evaluation mechanism, which allows a finer evaluation and more precise comparison of remote resources, leading to fewer wasted resources and better use of those resources. The use of remote resources can be performed by means of processing offloading, executing complete application on remote devices or by relocation of mobile classes. Both methods resort to the presented resource evaluation mechanism. Monolithic applications are transformed (with information from a configuration file) into distributed application, where some components execute on remote devices: nearby computers (to take advantage of existing human-computer interaction devices) or on the cloud (to speed processing). Processing offloading is accomplished by executing on nearby computers applications compatible with the one on the mobile device. This speeds that processing task (better CPU, better interaction devices), reducing the mobile device’s power consumption.
Chapter Preview
Top

Introduction

In his seminal paper, Mark Weiser (1991) predicts the disappearing of the computer as it was known and its transformation on transparent ubiquitous devices. Although not fully realized, the current personal computing environment is much different from what it was 30 years ago: users move freely with close to complete connectivity and carry along a myriad of mobile devices (smart phones, laptops on even computing tabs). In a keynote at the UIST '94 Symposium on User Interface Software and Technology (Weiser, 1994), Weiser presented a graph depicting the evolution of the various computing paradigms, showing the obvious decline of the mainframe. Again, the computing environment has changed from the 90s but has not evolved as predicted.

Today the computing environment ranges from the old desktop computer, to the mobile tablet or smart-phone, to the centralized (from the user point of view) cloud provider, but with close to continuous connectivity. Wireless 3G coverage is close to total, free or public wireless networks exist, and most homes have wireless routers, all providing the necessary network access to the full integration of the available resources.

Although cloud resources (storage and processing power) have become widely available, and personal computers have become mobile devices (still with limited battery power and computing capacity), applications for such devices are still developed as if for fixed desktop PCs. Neither connectivity, nor battery capacity are taken into account, nor available resources are used to offload computations.

Previous work has been developed in the area of ubiquity, but it was not completely successful at easing the access to cloud resources from a mobile device, unable to transparently (with respect to programming) offload computations from the mobile device.

In this work, we investigate and develop a suite of methods that, combined, aim to allow an easy development of mobile applications (those that execute in mobile devices) that can take advantage of cloud resources (storage and processing power) along with others available in the surroundings of the device (idle computers or large displays).

We address this gap, by allowing programmers to develop centralized applications, to be executed on mobile devices, and at run-time split them and execute parts of it (UI, or processing intensive classes) on remote resources. The resulting infrastructure resorts to a mobile code execution platform in order to allow the execution of, otherwise centralized, code on remote devices. The same platform is used for the offloading of user interfaces (for instance, to larger displays) to nearby devices, and for the offloading of more intensive processing to the cloud.

These applications should be adapted transparently by middleware that helps to decide where to process data or present user interfaces and results taking into account the following:

  • Available battery power,

  • Wireless connection availability,

  • Available neighboring resources, and

  • Remote cloud resources.

These factors impact greatly the way data can be processed: if, for instance, the mobile device has network connectivity, but not enough battery, the data can be processed in the cloud (close to where it was stored) and, if a large display is available, results can be made available on a close-by display.

Due to the different nature of the involved devices (resource constrained mobile devices, desktop PCs, set-top boxes, or cloud servers), a mobile code platform should also allow the replacement of the classes to be remotely executed by others with the same functionality and interface, but optimized to the target architecture. This enables the presentation of different UIs for the same application (taking into account the display size or input methods) and the execution of optimized code for a particular target.

The work in A2Cloud described here follows up, enhances, and integrates the previous work that allowed the automatic and transparent offloading of class objects to remote hosts without user intervention and program modification (Silva, 2004; Silva, 2009) and an algebra for precise evaluation of resources (Silva, 2010).

It also applies the resource evaluation mechanisms to optimize processing offloading. This document also shows how to improve user experience when handling cloud stored data from mobile devices.

Complete Chapter List

Search this Book:
Reset