Mobile Cloud Computing Taxonomy
By Dr. Dijiang Huang and Dr. Huijun Wu
MCC has originated from mobile computing and cloud computing, but there are significant differences between MCC and cloud computing, and between MCC and mobile computing. This chapter presents an overview of MCC, cloud computing, and mobile computing. The two pivot topics about mobile cloud are mobile cloud infrastructure and mobile cloud offloading, which will be discussed after the overview of MCC. Mobile cloud applications, including application programming platforms, will be presented at the end.
1.1 Overview of Cloud Computing
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort. The present availability of high-capacity networks, low-cost computers, and storage devices, as well as the widespread adoption of hardware virtualization, service-oriented architecture, and autonomic and utility computing, have led to a growth in cloud computing. Cloud computing has now become a highly-demanded service or utility due to the advantages of high computing power, cheap services, high performance, scalability, accessibility, as well as availability. Cloud vendors are experiencing growth rates of 50% per annum. After several years building-up cloud services, Amazon Web Services (AWS) has been historically generating profit and approached a $1 billion-a-year profit in 2016.
Based on cloud computing, companies can scale up as computing needs increase and then scale down again as demands decrease. Cloud computing allows companies to avoid upfront infrastructure costs, and focus on projects that differentiate their businesses instead of on infrastructure. Moreover, cloud computing allows enterprises to get their applications up and running faster, with improved manageability and less maintenance, and enables IT to more rapidly adjust resources to meet fluctuating and unpredictable business demand.
In this section, we present several important definitions and concepts for MCC. We first present the definition of cloud computing, then we describe what mobile computing is, and finally, we summarize the terms and concepts of mobile cloud computing.
1.1.1 NIST Definition of Cloud Computing
The National Institute of Standards and Technology (NIST), which is an agency of the US Department of Commerce, gives its definition of cloud computing :
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
The NIST definition of cloud computing is composed of five essential characteristics, three service models, and four deployment models. The essential characteristics are:
On-demand self-service.A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider.
Broad network access.Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).
Resource pooling.The provider's computing resources are pooled to serve multiple consumers using a multitenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, and network bandwidth.
Rapid elasticity.Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.
Measured service.Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
Cloud computing can be classified as presented in Fig. 1.1. The three service models categorize cloud computing into three layers according to the provided service types. The service models are:
Software as a Service (SaaS).The capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based e-mail), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
Platform as a Service (PaaS).The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
Infrastructure as a Service (IaaS).The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).
Cloud computing is usually deployed in four scenarios according to how the cloud infrastructure is constructed. The four deployment models are:
Private cloud.The cloud infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises.
Public cloud.The cloud infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization, or some combination of them. It exists on the premises of the cloud provider.
Hybrid cloud.The cloud infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).
Community cloud.The cloud infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be owned, managed, and operated by one or more of the organizations in the community, a third party, or some combination of them, and it may exist on or off premises.
1.1.2 Mobile Computing
|Figure 1.2: Networking examples of mobile computing.|
WiFi network is the most popular wireless access technology, supporting one-hop mobility between mobile devices and stationary access points as shown in Fig. 1.2. The portable and smart mobile devices have changed computing world dramatically, from huge machines that could not do much more than word processing to tiny handheld devices. It offers the opportunity to bring people together and give everyone access to a greater wealth of information and knowledge, and to share their knowledge with others. Peer-to-Peer (P2P) mobile ad hoc network has been promoted in military application scenarios; however, recent booming of Vehicle-to-Vehicle (V2V), communication solutions introduced P2P wireless networking solutions into civilian uses. Mobile computing can be generally defined as follows:
Mobile computing focuses on device mobility and context awareness considering networking and mobile resource/data access. Mobile computing applications usually rely on mobile devices to create, access, process, store, and communicate information without being constrained to a single location. Mobile computing usually considers similar types of mobile devices that offers many otherwise unattainable benefits to organizations that choose to integrate it into their fixed information system.
During the past three decades, mobile computing has expanded from being primarily technical to now also being about usability, usefulness, and user experience. This has led to the birth of the vibrant area of mobile interaction design at the intersection between mobile computing, social sciences, human-computer interaction, industrial design, and user experience design, among others. Mobile computing is a significant contributor to the pervasiveness of computing resources in modern western civilization. In concert with the proliferation of stationary and embedded computer technology throughout society, mobile devices such as cell phones and other handheld or wearable computing technologies have created a state of ubiquitous and pervasive computing where we are surrounded by more computational devices than people. Enabling us to orchestrate these devices to fit and serve our personal and working lives is a huge challenge for technology developers, and "as a consequence of pervasive computing, interaction design is poised to become one of the main liberal arts of the 21st century" .
From this angle, we can view mobile computing as the root of pervasive computing and even today's popular IoT technologies. Thus, it is important to understand the difference between mobile computing, pervasive computing, and IoT technologies. We can also view IoT applications as extensions of using mobile computing solutions, in which devices are heterogeneous (e.g., mobile vs. stationary, computer-grade smart phones vs. lightweight sensors), and they may belong to different administrative domains, where their computation and networking models are more distributed or decentralized, and the scale of the IoT system can be much larger than mobile computing application scenarios.
From the functionality and application per se, the history of mobile computing can be divided into a number of eras, or waves , each characterized by a particular technological focus, interaction design trends, and by leading to fundamental changes in the design and use of mobile devices. Thus, the history of mobile computing has, so far, entailed seven particularly important waves. Although not strictly sequential, they provide a good overview of the legacy on which current mobile computing research and design is built:
Portability.The era of focus on portability was about reducing the size of hardware to enable the creation of computers that could be physically moved around relatively easily.
Miniaturization.Miniaturization was about creating new and significantly smaller mobile form factors that allowed the use of personal mobile devices while on the move.
Connectivity.Connectivity was about developing devices and applications that allowed users to be online and communicate via wireless data networks while on the move.
Convergence.Convergence was about integrating emerging types of digital mobile devices, such as smart phones, music players, cameras, games, etc., into hybrid devices.
Divergence.Divergence took an opposite approach to interaction design by promoting information appliances with specialized functionality rather than generalized ones.
Applications.The latest wave of applications is about developing matter and substance for use and consumption on mobile devices, and making access to this fun or functional interactive application content easy and enjoyable.
Digital ecosystems (e.g., IoT).Finally, the emerging wave of digital ecosystems is about the larger wholes of pervasive and interrelated technologies that interactive mobile systems are increasingly becoming a part of.
|Figure 1.3: Mobile cloud computing: a view of virtual and physical world interactions.|
1.1.3 Mobile Cloud Computing
Mobile Cloud Computing (MCC) is initially built on concepts of cloud computing and mobile computing, where it relies on wireless networks to bring rich computational resources to mobile users. The goal of MCC is to enable execution of rich mobile applications on a plethora of mobile devices, with a rich user experience. MCC provides business opportunities for mobile network operators as well as cloud providers. For example, from a business aspect, people usually consider MCC as "a rich mobile computing technology that leverages unified elastic resources of varied clouds and network technologies toward unrestricted functionality, storage, and mobility to serve a multitude of mobile devices anywhere, anytime through the Internet, regardless of heterogeneous environments and platforms based on the pay-as-youuse principle." This definition is a combination of cloud computing and mobile computing by describing MCC's service features focusing on how mobile devices acquire and then use cloud computing based services through mobile networks.
Traditional client-server type of service model considers a thin client device requiring services from a powerful server. When replacing the powerful server with a cloud, the computation paradigm is not fundamentally changed, where the resource provisioning approach is based on cloud computing technologies. In the new paradigm of MCC, we can view the computing model as a virtual-physical interactive model, where the virtualized system and the physical system are interactively providing services to each other, which is shown in Fig. 1.3. The virtual system can be simply viewed as a mobile cloud application built on interfaces and APIs virtualized on top of a physical system composed by computing, networking, and storage devices, and humans. Through virtualization and abstraction approaches, the virtual system is a simplified view of their underlying physical systems. The interactions between virtual and physical system can be considered as continuous adjustments to best serve the humans' need. Physical system adjustments are changes such as location, protocols, communications methods, networking, services, etc., and the humans' need can also be changed due to changes of their location and job functions (or interests), etc.
Researchers usually use a computational augmentation approach, by which resourceconstrained mobile devices can utilize computational resources of varied cloud-based resources through offloading functions from mobiles to clouds. In general, there are four types of cloud-based resources, namely Internet clouds where immobile clouds are accessed through the Internet, proximate immobile computing entities, proximate mobile computing entities, and hybrid (combination of the other three models). Internet clouds such as Amazon EC2  are in the distant immobile groups, whereas Cloudlet  or its surrogates are members of proximate immobile computing entities. Smartphones, tablets, handheld devices, and wearable computing devices are part of the third group of cloud-based resources, which is proximate mobile computing entities.
In the MCC landscape, an amalgam of mobile computing, cloud computing, and communication networks (to augment smartphones) creates several complex challenges such as mobile computation offloading, seamless connectivity, long WAN latency, mobility management, context-processing, energy constraint, vendor/data lock-in, security and privacy, elasticity that hinder MCC success and adoption. As shown in Fig. 1.4, although significant research and development in MCC is available in the literature, efforts in the following domains still need significant investigation:
- Situation-awareness issues. Situation-aware computing possesses inseparable traits of contemporary handheld computers. To achieve the vision of mobile computing among heterogeneous converged networks and computing devices, designing resource-efficient, use-behavior sensing, and secure/privacy-aware MCC application running environment is an essential need.
- Architectural issues. A reference architecture for heterogeneous MCC environment is a crucial requirement for unleashing the power of mobile computing towards unrestricted ubiquitous computing. A current trend is to transit from a cloud- and network-centric service model to a user-centric model, where situation-awareness on real-time sensing and supporting users' need is the key factor to make MCC applications success.
- Function and service migration issues. Executing resource-intensive mobile application via function/service offloading involves encapsulation of functions and services, and migrating them from mobiles to the cloud or other mobiles, which is a challenging task due to additional overhead of deploying, managing, and interfacing for different application/service providers.
|Figure 1.4: Mobile cloud computing technologies.|
- Energy-efficient transmission. MCC requires frequent transmissions between cloud platform and mobile devices, due to the stochastic nature of wireless networks, the transmission protocol should be carefully designed.
- Mobile communication congestion issues. Mobile data traffic is tremendously hiking by ever increasing mobile user demands for exploiting cloud resources, which impact on mobile network operators and demand future efforts to enable smooth communication between mobile and cloud endpoints.
- Trust, security, and privacy issues. Trust is an essential factor for the success of the burgeoning MCC paradigm. The challenge is how to enable mobile devices and cloud services to collaboratively build new MCC applications by composing resource, functions, and services. Federated identity administration and management (IDM) should be established for MCC applications. In addition, security and privacy sharing the similar challenge when running MCC application across multiple administrative domains.
1.2 Mobile Cloud Solutions
The mobile cloud technology has been growing for decades. One of the major aspects of the mobile cloud technologies is infrastructure and framework. The mobile cloud infrastructure consists of the mobile devices and the cloud resources. Typically, smart phones are the common mobile devices which can host mobile applications and the cloud provides almost unlimited resources for the mobile applications to consume. Mobile devices can interact with the Internet cloud or a small cloud nearby the mobile device, e.g., Cloudlet , for caching the computation and communication. The mobile cloud framework, based on the mobile cloud infrastructure, provides the programming interface for the developers to build the mobile applications. The framework should handle the resource management including the mobile resource and the cloud resource, and usually provides the computation offloading feature. Some framework also provides offloading decision function.
The mobile application can run on both mobile device and cloud virtual servers since the application or the computation tasks can be partitioned into parts. The partitioned code and data are migrated to the cloud virtual machines to run and computation results are composed eventually and feedback to the user. Due to the various infrastructure and scenarios, the application partition and offloading decision is a key point for the mobile cloud application to earn benefit. This section first discusses existing mobile platforms and cloud-based mobile service platforms; then the offloading, migration, and composition concepts are introduced; existing work on how to partition applications and offloading frameworks are presented in the end.
1.2.1 Mobile Platforms
The mobile applications are developed on various platforms. Two platforms comprising the largest share of the current market are Apple iOS and Google Android.
Apple iOS (originally iPhone OS) is a mobile operating system created and developed by Apple Inc. and distributed exclusively for Apple hardware. It is the operating system that presently powers many of the company's mobile devices, including the iPhone, iPad, and iPod touch. It is the second most popular mobile operating system platform in the world by sales, after Android.
Originally unveiled in 2007 for the iPhone, it has been extended to support other Apple devices such as the iPod touch (September 2007), iPad (January 2010), iPad mini (November 2012) and second-generation Apple TV onward (September 2010). Apple's App Store is the second largest app store. As of January 2017, the store had 2.2 million mobile apps available for download.1 Games are by far the most popular category on Apple's App Store, accounting for about a quarter of all apps available on the platform. Business, education, lifestyle, and entertainment are also popular categories in terms of availability of apps. In late 2016, Apple announced that 140 billion apps had been downloaded from its App Store.
The iOS user interface is based on the concept of direct manipulation, using multitouch gestures. Interface control elements consist of sliders, switches, and buttons. Interaction with the OS includes gestures such as swipe, tap, pinch, and reverse pinch, all of which have specific definitions within the context of the iOS operating system and its multitouch interface. Internal accelerometers are used by some applications to respond to shaking the device (one common result is the undo command) or rotating it in three dimensions (one common result is switching from portrait to landscape mode).
iOS shares with OS X (used by Apple laptops and desktops) some frameworks such as Core Foundation and Foundation Kit; however, its UI toolkit is Cocoa Touch rather than OS X's Cocoa, so that it provides the UIKit framework rather than the AppKit framework. It is therefore not compatible with OS X for applications. In addition, while iOS also shares the Darwin foundation with OS X, Unix-like shell access is not available for users and restricted for applications, making iOS not fully Unix-compatible either.
Major versions of iOS are released annually. The current version, iOS 10, was released on September 13, 2016. It is available for the iPhone 5 and later iPhone models, the fourthgeneration iPad, the iPad Air and iPad Air 2, the iPad Pro, the iPad mini 2 and later iPad mini models, and the sixth-generation iPod touch.
Native apps must be written in Swift or Objective-C (with some elements optionally in C or C++) and compiled specifically for iOS and the 64-bit ARM architecture or previous 32-bit one (typically using Xcode). Swift is a new language for programming iOS and OS X apps that was first introduced in June 2014. Prior to Swift, most iOS apps were developed with Objective-C. Many existing apps in the App Store are built with it, and it's still possible to build apps with just Objective-C. In iOS, there are four abstraction layers: Core OS, Core Services, Media, and Cocoa Touch. The SDK contents is broken down into the four sets corresponding to the four abstraction layers.
Android (from its former owner Android, Inc.) is a mobile operating system (OS) currently developed by Google, based on the Linux kernel and designed primarily for touchscreen mobile devices such as smartphones and tablets. Android's user interface is mainly based on direct manipulation, using touch gestures that loosely correspond to real-world actions, such as swiping, tapping, and pinching, to manipulate on-screen objects, along with a virtual keyboard for text input. In addition to touchscreen devices, Google has further developed Android TV for televisions, Android Auto for cars, and Android Wear for wrist watches, each with a specialized user interface. Variants of Android are also used on notebooks, game consoles, digital cameras, and other electronics.
Initially developed by Android, Inc., which Google bought in 2005, Android was unveiled in 2007, along with the founding of the Open Handset Alliance - a consortium of hardware, software, and telecommunication companies devoted to advancing open standards for mobile devices. Android applications ("apps") can be downloaded from the Google Play store, which features over 2.8 million apps as of April 2017, among which 2.6 million apps are free apps.2
Android's source code is released by Google under open source licenses, although most Android devices ultimately ship with a combination of open source and proprietary software, including proprietary software required for accessing Google services. Android is popular with technology companies that require a ready-made, low-cost and customizable operating system for high-tech devices. Its open nature has encouraged a large community of developers and enthusiasts to use the open-source code as a foundation for community-driven projects, which add new features for advanced users or bring Android to devices originally shipped with other operating systems. The success of Android has made it a target for patent litigation as part of the so-called "smartphone wars" between technology companies.
Android apps are written in Java programming language. The Android SDK tools compile your code along with any data and resource files into an APK, an Android package, which is an archive file with an .apk suffix. One APK file contains all the contents of an Android app and is the file that Android-powered devices use to install the app. App components are the essential building blocks of an Android app. Each component is an entry point through which the system or a user can enter your app. There are four different types of app components:
- Activities. An activity is the entry point for interacting with the user. It represents a single screen with a user interface.
- Services. A service is a general-purpose entry point for keeping an app running in the background for all kinds of reasons. It is a component that runs in the background to perform long-running operations or to perform work for remote processes. A service does not provide a user interface.
- Content providers. A content provider manages a shared set of app data that you can store in the file system, in an SQLite database, on the web, or on any other persistent storage location that your app can access. Through the content provider, other apps can query or modify the data if the content provider allows it.
- Broadcast receivers. A broadcast receiver is a component that enables the system to deliver events to the app outside of a regular user flow, allowing the app to respond to system-wide broadcast announcements.
A comparison of Android and iOS features is shown in Table 1.1.
1.2.2 Cloud-based Mobile Service Platforms
In this section, we present some of current cloud service platforms that support mobile applications/services, in which a few application examples are presented to help readers get basic ideas of how a mobile cloud application works.
- Maps is a Google satellite, which gives an in-depth accurate map of almost every city in the world. Google maps gives directions from how to get from one point to the other, figures out the quickest route possible, and gives an Earth/Satellite/Street view. Maps is available on browsers as well as mobile phones, allowing custom maps as well as saved directions to be saved on Google Accounts and later be accessed from all devices. The map itself is downloaded from the cloud server when the user browses it. If user would like to know the route to some destination, the cloud server calculates the best route and sends it to users' devices.
- Google Translate is an online translating tool, which translates text from one language to the other instantly for a user. The phone does not store all the language mappings. Words or statements are sent to the cloud server to be calculated to the target language, in which processes, the machine learning and natural language processing techniques, are used to enhance the translation accuracy, which cannot be achieved using the limited resources on smartphones.
- Google Docs are online applications, which allow people to create, edit, or view different types of documents. In addition to word documents, Google Docs also support PowerPoint slides and Excel spreadsheets. Google Docs can be synchronized across all devices through a user's Google account. This allows the user to access his/her documents on any device as long as he/she can access Google Docs' server using a browser, and edit and share them without time and location restrictions.
The users collaborate on the same document, which requires the cloud to maintain the global document state and synchronize the document state to mobile devices.
Dropbox, cloud storage
Dropbox is a popular cloud-based storage service which supports mobile devices. It can help users store photos, docs, videos, and other files in clouds. Files in Dropbox are tracked with a version control system, each version is backed up, and users can access them using their mobile devices. It provides an easy approach to share a large file by sharing their Dropbox' URL even if a user does not have a Dropbox account. A Drobox client is required to be installed on mobile devices in order to manage files in the cloud. Compared to the desktop Dropbox client, the mobile version only downloads the files to mobile devices as the user instructs it to do so. When some files are added, deleted, or updated, new versions of files are synchronized to the cloud storage and all devices having the same Drobox account will perform an update. In this way, the new version is pushed to every device controlled by the same user and his/her file sharing peers.
Office365, cloud based collaboration
Microsoft Office365 is made for company employees to work together, sharing similar features with Drobox and Google Docs. Users can share docs with their working partners right from a phone and tablet. Mobile version Office365 along with Microsoft Azure provides:
- Easily sharing documents with the cloud-connected applications;
- Tracking changes, comment and mark-up docs so that everyone knows documents' change history;
- Sharing documents with others by simply e-mailing an URL.
Yelp application has a feature called Monocle, which is an applicationlication of cloud-based virtual augmentation. When the user points the phone camera to one direction, the shops and restaurants are displayed as an additional layer in front of the background photo. The Monocle applicationlication captures the location and direction, fetches the data from the cloud, and organizes shop information on the photo, such as the notes to the real environment.
Internet of things, cloud mirroring
The Internet of Things (IoT) is the network of physical objects-devices, vehicles, buildings, and other items which are embedded with electronics, software, sensors, and network connectivity, which enables these objects collect and exchange data. The Internet of Things allows objects to be sensed and controlled remotely across existing network infrastructure, creating opportunities for more direct integration of the physical world into computer-based systems, and resulting in improved efficiency, accuracy, and economic benefit; when IoT is augmented with sensors and actuators, the technology becomes an instance of the more general class of cyber-physical systems, which also encompasses technologies such as smart grids, smart homes, intelligent transportation, and smart cities. Each thing is uniquely identifiable through its embedded computing system but is able to interoperate within the existing Internet infrastructure. Experts estimate that the IoT will consist of almost 50 billion objects by 2020.
The IoT objects cumulatively build the main sensing capability for mobile cloud computing and they have to be managed well for MCC applications. However, due to the large amount of objects, small systems cannot handle huge data collected through IoT devices. To address this issue, cloud-based storage services come into the picture. IoT objects can be continuously mirrored by using cloud-based monitoring and storage services; while individual or group of IoT device(s) can be virtualized and manipulated in the cloud for MCC applications, and then control or data operation functions can be executed on physical devices.
1.2.3 Mobile Cloud Offloading, Composition and Migration
In a mobile cloud, mobile nodes are usually restricted by their energy supply. Many mobile cloud computing solutions have been recently proposed to describe how to offload applications from mobile devices to surrogates, which usually have high computation capabilities with constant power supplies. One mobile cloud application scenario is when a mobile device offloads one or multiple applications to an Internet cloud. Another scenario is when the Internet cloud is not available, and thus a mobile device can offload its applications to other mobile devices to share the computation overhead. In this scenario, each mobile node in a mobile cloud can be considered a surrogate. Thus, in the rest of this book, we do not differentiate a service provider's location, i.e., a surrogate can be either a mobile device or an Internet cloud server.
|Figure 1.5: Mobile cloud terminologies: (A) Offloading, (B) Composition, and (C) Migration.|
A mobile application can be further partitioned into multiple functions or service components. As a result, an offloading model can be considered a service oriented architecture, where mobile cloud services can be composed of multiple functions or service components provided by multiple surrogates. Thus, it is important to differentiate between offloading and composition. Additionally, another frequently referred to term, migration, is worth clarification from the terms offloading and composition.
In Fig. 1.5, we use several graphs to present the differences among three terminologies: (A) Offloading, (B) Composition, and (C) Migration.
|Figure 1.6: Offloading Model: No offloading case.|
Comparison of different service models
From the above definitions, we can see that composition is a special case of offloading that does not require software code transfer, while migration can be considered a change of surrogates, i.e., from surrogate yj to surrogate yk.
|Figure 1.7: Offloading Model.|
1.2.4 Mobile Cloud Application Partition and Offloading Decision
Three aspects are generally taken into consideration to model the application partition problem:
- Device profiles. The cloud virtual machine computation power is usually several times better than that of the mobile devices, which contributes to execution time modeling. The energy consumption of the CPU and Radio modules on the phone are generally categorized as active and standby parts, which will be discussed in Section 5
- Application profile. Mobile applications are usually modeled as a directed acyclic graph (DAG), where the vertices are the application modules and the edges are module dependencies or data flow. We will discuss the application model in Section 5.1.
- Environment profile. The connection between mobile devices and clouds plays pivotal role in the partition strategy. Especially the wireless connection such as WiFi or cellular connection is not always stable. We will discuss the application partition strategy in an unstable network environment in Section 5.2.2.
After modeling the application partition problem, which is generally an optimization problem, we may adopt deterministic and heuristic approaches to calculate the partition once. For a long time period, we may calculate the optimal solution by a series of partitions, which is discussed in Section 5.3.2.
The objectives of partition and offloading are usually improving performance and/or saving energy. This section collects the recent mobile cloud offloading strategies into Table 1.2.
Partitioning and execution of data stream applications
|Table 1.2:Mobile Cloud Offloading Strategies|
Yang et al.  studied how to optimize the computation partitioning of a data stream application between mobile and cloud to achieve maximum speed/throughput in processing the streaming data. The authors claimed that it was the first work to study the partitioning problem for mobile data stream applications, where the optimization is placed on achieving high throughput of processing the streaming data rather than minimizing the makespan.4 They proposed a framework to provide runtime support for the dynamic computation partitioning and execution of the application. Different from existing works, the framework not only allows the dynamic partitioning for a single user but also supports the sharing of computation instances among multiple users in the cloud to achieve efficient utilization of the underlying cloud resources.
Distributed abstract class graphs in mobile environments
Abebe et al.  presented a distributed approach to application representation in which each device maintains a graph consisting only of components in its memory space, while maintaining abstraction elements for components in remote devices. An extension to an existing application graph partitioning heuristic is proposed to utilize this representation approach.
Dynamic software deployment
Giurgiu et al.  developed a system that dynamically adapts the application partition decisions. The system works by continuously profiling an application's performance and dynamically updating its distributed deployment to accommodate changes in the network bandwidth, devices CPU utilization, and data loads.
Fine-grained, multisite computation offloading
Sinha et al.  described algorithmic approaches for performing fine-grained, multisite offloading. This allows portions of an application to be offloaded in a data-centric manner, even if that data exists at multiple sites.
Mobile Augmentation Cloud Services (MACS)
Kovachev et al.  presented Mobile Augmentation Cloud Services (MACS) middleware which enables adaptive extension of Android application execution from a mobile client into the cloud. MACS uses a dynamic partitioning scheme, and lightweight as extra profiling. Resource monitoring is performed for adaptive partitioning decision during runtime.
Partitioning applications for hybrid and federated clouds
Smit et al.  described an approach to partitioning a software application into components that can be run in the public cloud and components that should remain in the private data center. Static code analysis is used to automatically establish a partitioning based on low-effort input from the developer. Public and private versions of the application are created and deployed; at runtime, user navigation proceeds seamlessly with requests routed to the public or private data center as appropriate.
1.2.5 Mobile Cloud Offloading Framework
A mobile cloud offloading framework has to solve two essential problems. First, the offloaded code pieces have to run on the surrogate environment. Second, the offloaded code has to be invoked by the original application. To solve the first problem, the offloaded code is supposed to be compatible in the original and the surrogate environment by synchronizing both environment or code translating. To solve the second problem, there has to be an RPC-like mechanism between the original application and the offloaded code. We will discuss the POEM system in Section 4.2, which implements a mobile cloud offloading framework by OSGi and XMPP based RPC.
Besides POEM, this section collects the recent mobile cloud infrastructure and framework into Table 1.3.
CloneCloud  is a system that automatically transforms mobile applications to benefit from the cloud. The system is a flexible application partitioner and execution runtime that enables unmodified mobile applications running in an application-level virtual machine to seamlessly offload part of their execution from mobile devices onto device clones operating in a computational cloud. CloneCloud uses a combination of static analysis and dynamic profiling to partition applications automatically at a fine granularity while optimizing execution time and energy use for a target computation and communication environment. At runtime, the application partitioning is effected by migrating a thread from the mobile device at a chosen point to the clone in the cloud, executing there for the remainder of the partition, and reintegrating the migrated thread back to the mobile device.
The advantage of this model is that when a smartphone is lost or destroyed, the clone can be used as a backup for the recovery of data and applications . Moreover, CloneCloud augments execution of the smartphone applications on the cloud by performing a code analysis for application partitioning, taking into consideration the offloading cost and constraints.
CloneCloud also supports fine-grained thread-level migration that is more beneficial compared to the traditional suspend-migrate-resume mechanisms. Considering the shortcomings, the model is only capable of migrating at points in the execution where no native heap state is collected. Moreover, CloneCloud requires the development of cost model for every application under different partitions, where each partition is executed separately on the mobile device and the cloud. Therefore, the execution of partitions on mobile device for the development of cost model may consume extra energy. Furthermore, to fit all of the proposed augmentation types, basic and fine-grained synchronization is required between the smartphone and the clone that may be resource intensive in terms of bandwidth utilization and energy consumption. Nevertheless, the authors assume that the cloud environment is secure, which is not always the case.
In CloneCloud, the privacy of data and piracy of applications is of high concern from the clones' perspective. For example, if an adversary gets a clone of the smartphone from the cloud, then the clone can be easily installed on the same model of the smartphone. Therefore, the adversary may use the clones' data and installed applications that may lead to data privacy and application piracy issues.
ThinkAir  is a framework that makes it simple for developers to migrate their smartphone applications to the cloud. ThinkAir exploits the concept of smartphone virtualization in the cloud and provides method-level computation offloading. Advancing on previous work, it focuses on the elasticity and scalability of the cloud and enhances the power of mobile cloud computing by parallelizing method execution using multiple VM images.
The main advantage of ThinkAir is that it takes into account the energy consumption when making the offloading decisions, and supports on-demand resource allocation and parallelism to reduce execution delays . The model offloading decisions are based on the profilers, and it uses an energy model to estimate energy consumption. ThinkAir's energy model is inspired by PowerTutor  that accounts for all parameters of the supported profilers. Nevertheless, it does not require separate application servers for the distribution of the applications. Considering the shortcomings, ThinkAir does not support unmodified applications and requires programmer support for the demarcation of offloadable methods. Therefore, if any offloadable methods are left unmarked, then ThinkAir will not be able to offload those methods, which may affect the performance of the applications. Nevertheless, the profiling process of the model incurs an overhead on the smartphone because it consumes computation power, memory, and energy.
MAUI  is a system that enables fine-grained energy-aware offload of mobile code to the infrastructure. Previous approaches to these problems either relied heavily on programmer support to partition an application, or they were coarse-grained requiring full process (or full VM) migration. MAUI uses the benefits of a managed code environment to offer the best of both worlds: it supports fine-grained code offload to maximize energy savings with minimal burden on the programmer. MAUI decides at runtime which methods should be remotely executed, driven by an optimization engine that achieves the best energy savings possible under the mobile device's current connectivity constrains.
Considering the advantages, MAUI provides a programming environment where independent methods can be marked for remote execution . It uses dynamic partitioning of the applications to reduce burden on the programmers. Moreover, MAUI does not only focus on memory constrains of the smartphone but also considers the energy consumption involved in the offloading procedure. Furthermore, MAUI supports fine-grained method level offloading that can offload even single methods instead of offloading the whole software blocks. However, single method offloading is less beneficial compared to combined methods (multiple methods) offloading. Another weakness of MAUI is that if the programmer forgets to mark methods (for remote execution), MAUI will not be able to offload those methods. Also, MAUI saves information about the offloaded methods (for future decisions) and uses online profiling to create an energy consumption model. When new offloading requests are received, MAUI uses history data to predict the execution time of the task. However, the execution time of the task is input size dependent that is not considered by the MAUI. Therefore, the predictions of MAUI might be wrong, resulting in wrong offloading decisions. Nevertheless, the MAUI profilers consume processing power, memory and energy, which is an overhead on the smartphones.
The Cuckoo  framework simplifies the development of smartphone applications that benefit from computation offloading and provides a dynamic runtime system. Cuckoo can, at runtime, decide whether a part of an application will be executed locally or remotely.
The main advantage of Cuckoo is that it supports partial offloading of the applications to the cloud and uses well known tools for application development . Considering the shortcomings, Cuckoo does not support asynchronous callbacks and state transferring from remote resources. Moreover, no states are saved while transferring from local to remote execution or vice versa for which Representational State Transfer (REST)  may be required. Another shortcoming of Cuckoo is that it requires programmer support for the modification of applications. Furthermore, it lacks security features to restrict users from installing malfunctioned codes on the server and control illegal access to the resources. Nevertheless, the offloading decisions of Cuckoo are static and context unaware.
Zhang et al. proposed an elastic application model that enables seamless and transparent use of cloud resources to augment the capability of resource constrained mobile devices. The salient features of this model include the partition of a single application into multiple components called weblets , and a dynamic adaptation of weblet execution configuration. While a weblet can be platform independent (e.g., Java or .Net bytecode or Python script) or platform dependent (native code), its execution location is transparent-it can be run on a mobile device or migrated to the cloud, i.e., run on one or more nodes offered by an IaaS provider. Thus, an elastic application can augment the capabilities of a mobile device including computation power, storage, and network bandwidth, with the light of dynamic execution configuration according to device's status including CPU load, memory, battery level, network connection quality, and user preferences.
Among the advantages of Zhang et al.'s model is a wide range of elasticity patterns to optimize the execution of applications according to the users' desired objectives . Consequently, the offloading decisions of the weblets are based on a cost model that accounts for various parameters, such as energy consumption, application performance, and data privacy. Considering the pitfalls, the proposed prototype uses a simple weblet launch scheduling that does not truly reflect the effectiveness of the proposed cost model. The sharing of data and states between the weblets that execute on distributed locations are prone to security issues. Therefore, Zhang et al.  critically analyzed elastic applications for various security threats, such as authentication, trustworthiness (of the weblet containers), authorization, communication, and auditing. Nevertheless, the proposed model is also affected by data sharing delays (smartphone-weblet, weblet-weblet) for which data replication solutions may be required. However, the data replication may give rise to data synchronization and integrity issues.
In this architecture , a mobile user exploits VM technology to rapidly instantiate customized service software on a nearby cloudlet and then uses that service over a wireless LAN; the mobile device typically functions as a thin client with respect to the service. A cloudlet is a trusted, resource-rich computer or cluster of computers that's well-connected to the Internet and available for use by nearby mobile devices.
Rather than relying on a distant "cloud", we might be able to address a mobile device's resource poverty via a nearby resource-rich cloudlet. In this way, we could meet the need for real-time interactive response by low latency, one-hop, high-bandwidth wireless access to the cloudlet. The mobile device functions as a thin client, with all significant computation occurring in the nearby cloudlet. This cloudlet's physical proximity is essential: the end-toend response time of applications executing within it must be fast (a few milliseconds) and predictable. If no cloudlet is available nearby, the mobile device can gracefully degrade to a fallback mode that involves a distant cloud or, in the worst case, solely its own resources. Full functionality and performance can return later, when the device discovers a nearby cloudlet.
The main advantage of Satyanarayanan et al.'s model is that the VM based approach is less fragile compared to the process migration and software virtualization . This approach is also less restrictive in terms of language-based virtualization, where systems are bound to support specific programming languages. Consequently, if the cloudlet is a cluster, then VM parallelism can be achieved by using multiple cores. Among the pitfalls of the model is that the VM synthesis process requires 60 to 90 seconds, which makes the technique unsuitable for real-time tasks. Moreover, the overlay extraction and compression that are performed on the smartphone require computation and consume battery power. Furthermore, if the smartphone VM overlay is from an old version base VM, then the overlay may not find a compatible cloudlet. Therefore, update patches are required for the old operating systems to make the overlays compatible with all cloudlets. Although the patches may resolve the compatibility issue, the patches increase the size of the overlay. Alternatively, new replacement overlays may be required using update patches. The model also requires trust establishment schemes to keep the users secure from malicious VMs. Lastly, the cloudlets are not available everywhere, which makes the proposed model less scalable.
4 The makespan is the total length of the schedule, i.e., time for all the jobs to finish processing. In most practical settings, the problem is presented as an online problem (dynamic scheduling), in which the decision of scheduling a job can only be made online, when the job is presented to the algorithm of executions as in other applications.
Reprinted with permission from Elsevier/Morgan Kaufmann, Copyright © 2017.