Harvest, Yield, and Scalable Tolerant Systems
📜 Abstract
The cost of reconciling consistency and state management with high availability is highly magnified by the unprecedented scale and robustness requirements of today’s Internet applications. We propose two strategies for improving overall availability using simple mechanisms that scale over large applications whose output behavior tolerates graceful degradation. We characterize this degradation in terms of harvest and yield, and map it directly onto engineering mechanisms that enhance availability by improving fault isolation, and in some cases also simplify programming. By collecting examples of related techniques in the literature and illustrating the surprising range of applications that can benefit from these approaches, we hope to motivate a broader research program in this area.
✨ Summary
The paper examines how large-scale Internet services can remain useful during partial failures by relaxing the requirement that every successful response be complete. It distinguishes yield, the probability that a request completes, from harvest, the fraction of the relevant data included in a response. This vocabulary makes it possible to describe continuous degradation rather than treating behavior as simply available or unavailable.
The authors present two strategies. First, systems can trade harvest for yield: for example, a search service can return partial results when some nodes fail, using randomized data placement and selective replication to control the practical effect of missing data. Similar tradeoffs apply to transformation proxies, bandwidth-limited responses, approximate aggregation, and certain localized updates. Second, applications can be decomposed into subsystems with different consistency and persistence requirements. Nonessential subsystems can fail independently while the overall service continues with reduced functionality. The paper further advocates orthogonal mechanisms—such as timeouts, retries, sandboxing, and soft-state recovery—that provide scalability, fault isolation, and availability without being tightly coupled to application logic.
The paper frames these techniques as a practical weakening of the traditional consistency–availability–partition-resilience tradeoff and proposes a “Weak CAP Principle”: stronger guarantees in two dimensions generally require weaker guarantees in the third. Its research agenda calls for formal models and programming abstractions for applications that tolerate graceful degradation.
Subsequent work explicitly reused the paper’s terminology and design perspective. Research on adaptive consistency and replicated services cited harvest and yield as a basis for reasoning about the tradeoff between consistency, availability, and latency, while extending it with quantitative consistency controls and adaptation mechanisms. (assured-cloud-computing.illinois.edu) Later systems research also used harvest and yield to describe graceful service degradation under overload or infrastructure failures, including adaptive overload control and geographically distributed services that continue operating with reduced result quality. (usenix.org) The concepts also appear in distributed-storage teaching and Apache Cassandra architecture material, indicating continued use as explanatory vocabulary, although the sources located here do not establish that the paper directly determined a specific production-system design. (subscription.packtpub.com)