# Availability and availability

DevFeed: [Availability and availability](<https://devfeed.tech/articles/availability-and-availability-12482.md>)

Original publisher: [Read original article](<http://brooker.co.za/blog/2018/02/25/availability-liveness.html>)

Author: Marc Brooker

Published: 2018-02-25T00:00:00Z

Content type: article

Language: en

Sources: [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog.md>), [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog-2.md>)

Topics: [Availability](<https://devfeed.tech/topics/availability.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [systems](<https://devfeed.tech/topics/systems.md>), [math](<https://devfeed.tech/topics/math.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [availability](<https://devfeed.tech/tags/availability.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [math](<https://devfeed.tech/tags/math.md>), [systems](<https://devfeed.tech/tags/systems.md>), [writing](<https://devfeed.tech/tags/writing.md>)

## AI overview

This article examines the difference between Availability in the CAP theorem and the operational meaning of availability used by distributed-systems practitioners. It connects formal reasoning with engineering concerns and discusses graceful degradation through partial or stale responses using the Harvest and Yield concept.

## Source excerpt

Availability and availability Translating math into engineering. It's well known that the term Availability in the CAP theorem (as formally defined by Gilbert and Lynch) means something different from the term availability that's commonly used by the designers, builders and operators of distributed systems. Gilbert and Lynch define availability for the CAP theorem as: every request received by a non-failing node in the system must result in a response. That's cool, and useful for the mathematical analysis that's needed to prove the CAP theorem. Most builders and users of distributed systems, on the other hand, define availability as the percentage of requests that their clients see as successful, or something close to that. The terms, like 'clients' and 'successful' and 'see', are pretty fuzzy. Not much good for analysis, but more useful for capturing what people care about. This isn't a new observation. You can find a whole lot of writing about it online. Some of that writing is pretty great. What I don't see addressed as often is how to translate one into the other, using the CAP (or PACELC or whatever) reasoning about Availability to help us think about availability. In reality, are Available systems more available than Consistent systems? This post isn't a complete answer to that question, but does include some of the things worth thinking about in that space. Harvest and Yield Before I dive into this topic, it's worth talking about Harvest and Yield, from a paper by Fox and Brewer. The paper itself has some flaws (as I've blogged about before), but the underlying concept is very useful. The core is about graceful degradation, and how it's useful for systems to return partial or stale answers when they aren't able to answer authoritatively. The paper makes its case well, but whether its conclusions are practically useful depend on what promises you make to your clients. If the direct clients of your service are people, then you're likely to be able to get away w