Summary: | While several proposals for the specification and implementation of various consistency models exist, little is known about what is the consistency currently offered by online services with millions of users. Such knowledge is important, not only because it allows for setting the right expectations and justifying the behavior observed by users, but also because it can be used for improving the process of developing applications that use APIs offered by such services and for creating tools that facilitate this process. To fill this gap, in the first part of this thesis, we present a measurement study of the consistency of the APIs exported by four widely used Internet services, the Facebook Feed, Facebook Groups, Blogger, and Google+. To conduct this study, our work develops a simple, yet generic methodology comprising a small number of tests, which probe these services from a user perspective, and try to uncover consistency anomalies, and reports on the analysis of the data obtained from running these tests for a period of several weeks. Our measurement study shows that some of these services do exhibit consistency anomalies, including some behaviors that may appear counter-intuitive for users, such as the lack of session guarantees for write monotonicity. The results show that developers have to deal with consistency anomalies, to provide consistency guarantees they need. To address the challenge of enforcing consistency guarantees on top of existing systems, in the second part of this thesis, we show that it is possible to deploy a middleware between the application and the service, which enables a fine-grained control over the session guarantees that comprise the consistency semantics provided by these APIs, without having to gain access to the implementation of the underlying services. Our solution intercepts all interactions of the client with the online service and uses four different algorithms to enforce each of the session guarantees and also their combination. We evaluated our middleware using the Facebook public API and the Redis data store, and our results show that we are able to provide fine-grained control of the consistency semantics, while incurring in a small local storage and modest latency overhead.
|