Byung-Gon Chun, Carlo Curino, Russell Sears, Alexander Shraer, Samuel Madden, Raghu Ramakrishnan
Mobile application development is challenging for several reasons: intermittent and limited network connectivity, tight power constraints, server-side scalability concerns, and a number of fault-tolerance issues. Developers handcraft complex solutions that include client-side caching, conflict resolution, disconnection tolerance, and backend database sharding. To simplify mobile app development, we present Mobius, a system that addresses the messaging and data management challenges of mobile application development. Mobius introduces MUD (Messaging Unified with Data). MUD presents the programming abstraction of a logical table of data that spans devices and clouds. Applications using Mobius can asynchronously read from/write to MUD tables, and also receive notifications when tables change via continuous queries on the tables. The system combines dynamic client-side caching (with intelligent policies chosen on the server-side, based on usage patterns across multiple applications), notification services, flexible query processing, and a scalable and highly available cloud storage system. We present an initial prototype to demonstrate the feasibility of our design. Even in our initial prototype, remote read and write latency overhead is less than 52% when compared to a hand-tuned solution. Our dynamic caching reduces the number of messages by a factor of 4 to 8.5 when compared to fixed strategies, thus reducing latency, bandwidth, power, and server load costs, while also reducing data staleness.
Public Review uploaded by DougTerry:
This public review of “Mobius: Unified Messaging and Data Serving for Mobile Apps” was prepared by Doug Terry.
The phrase “unified message and data serving” used in the title refers to the fact that Mobius allows mobile applications to communicate not through sending and receiving explicit messages but rather through reading and writing shared data. Data is moved between devices and the cloud via replication and caching. In this sense, Mobius follows a long line of mobile storage systems like Coda, Ficus, and Bayou.
The program committee was excited about this paper because it documents the authors’ attempt to build an infrastructure for emerging mobile applications at Yahoo!. It uses the popular PNUTS system for backend cloud storage and builds upon the experiences gathered from this system. The techniques used in Mobius, taken individually, are not particularly novel or exciting. But, the choices of what features to include provide insights into the needs of modern mobile applications.
One interesting aspect of the Mobius design is the use of write predicates for routing data to interested readers. As the authors point out, write predicates provide symmetry between reads and writes in that both operations involve matching queries to data. The paper includes a few examples of how write predicates could be useful, but the full power remains to be explored. Unresolved practical issues include knowing what reader-specific data to include, authenticating such data, and protecting its privacy.
Another nice feature is server-directed caching. In particular, machine learning techniques running on servers in the cloud decide what data should be proactively cached on what devices. A large class of caching policies can be supported. Potentially, servers, through observing the usage patterns of all clients and by exploiting relaxed consistency, can optimize data movements across clients and even across different applications. Achieving this potential is an interesting area for future work.
The MUD programming abstraction ultimately will be judged by its value to application developers. While Mobius was designed to support mobile applications at Yahoo!, it has not yet received much use. And recent events at Yahoo! place its future in doubt. Nevertheless, this paper captures the design of a mobile computing infrastructure that may inspire other system designers.
We thank Doug Terry and the program committee for their valuable feedback and for sharing our excitement about Mobius. The system was designed to address common requirements and challenges stemming from Yahoo!'s many emerging mobile applications, as well as those faced by many app developers outside Yahoo!.
Mobius offers a unique solution that addresses issues such as distributed data management, disconnected operations, caching and prefetching, continuous queries, notifications, and more. The main idea and the motivation for this work is to provide a flexible common layer that may be utilized by many mobile apps, which manages these issues in a transparent manner. Such middleware allows app developers to focus on their app, relieving them from the need to address these complex issues.
Mobius has several interesting and novel features, such as unifying the interface of data serving and messaging, the idea of writer predicates, and using cloud-directed caching/prefetching policies derived by mining access and context patterns of all users of the app, for the benefit of each individual user. We do not view our work as final but as an important step charting out interesting future cloud-based mobile system research directions.
We are currently working on tech-transfer and fleshing out a product version of the system that leverages HTML5/native hybrid approaches and Yahoo! infrastructure. In the future, we hope to report the lessons learned from this effort.