Description:Cloud computing is a fast growing computational model where companies and individuals are able to outsource part of their computational or IT needs to a cloud provider, and access the data or results of their computations as services over the Internet. To support these cloud services, cloud providers are now deploying and managing an infrastructure formed by several data centers spread across the globe, each comprising tens or even hundreds of thousands of machines. This project tackles two important problems that arise from the distinctive characteristics of the infrastructure that supports cloud services. The first is the tension between consistency and performance in geo-replicated systems, where the need to provide fast responses to the users of cloud services is at odds with providing strong consistency guarantees that ensure intuitive semantics and enforce important application invariants. The second is to find principled ways to address non-crash but non-malicious faults, which, while uncommon in conventional standalone or distributed systems, surface inevitably at the scale of a data center.