CAP定理の「A」はインフラの「可用性」と全くの別物である

分散システムのCAP定理を学習していた時、「可用性」という言葉の意味が混乱しました。調べてみたら、インフラの「可用性」とCAP定理の「可用性」は同じ単語なのに全く違う概念でした。

Toshiki Matsukuma | 2026-02-27 | 5分

分散システムのCAP定理について学習していた時、「可用性(Availability)」という言葉で混乱しました。ACIDとCAPの「整合性」に続いて、今度は「可用性」です。

私はインフラの話に触れる機会が多かったので、「可用性」と聞くと「サーバーを二重化して、片方が落ちても動くようにする」という意味だと思い込んでいました。でも、CAP定理の文脈では「ネットワーク分断時に、エラーを返すか古いデータを返すか」という全く違う意味で使われていました。

同じ「可用性(Availability)」という言葉なのに、全く別の概念を指していたことに気付きました。

気付いたこと

CAP定理を学習していて、「あれ、可用性って2つの意味があるんじゃないか?」と気付きました。調べてみたら、やっぱり違いました。

インフラの可用性(私が最初に考えていた方)

これは「サーバーが物理的に動いているか」という話でした。

例えば:

User → LB → Server A (稼働中)
Server B (停止中) ← ここが落ちても、Aで処理できる

ユーザーから見て「接続できない」「タイムアウトになる」という状態を防ぐのが目的。物理的な冗長構成の話です。

CAPの可用性(CAP定理で言われている方)

これは「ネットワーク分断時にどう振る舞うか」という話でした。

例えば:

User → Server A (稼働中)
Server B (稼働中) ← どちらも動いているが、A-B間の通信が切れた

サーバーは両方とも動いています。ユーザーからは両方に接続できます。でも、サーバー同士の通信が切れている。

この状態で:

  • 一貫性を優先する: エラーを返す(「今はデータの整合性が保証できないので処理を拒否します」)
  • 可用性を優先する: 古いデータでもレスポンスを返す(「多少古いかもしれませんが、とりあえず返します」)

CAPの可用性って、この選択の話でした。

重要な違い

一番の気づきは、この2つでした:

比較軸インフラの可用性CAPの可用性
前提なし(物理的な生存の確立)インフラは動いている前提
「なし」の状態タイムアウト、接続不能エラー応答(500番台)

CAPの可用性は「インフラは動いている」前提という点が、一番の発見でした。両方とも「可用性」という言葉を使うのに、前提条件が全く違います。

まとめ

CAP定理を学習していた時、「可用性」という言葉の意味で混乱しました。調べてみたら、インフラの可用性とCAPの可用性は同じ単語なのに全く別のレイヤーの問題でした。

特に、CAPの可用性は「インフラは動いている」前提で、可用性がない時の挙動も違います(タイムアウト vs 500番台エラー)。この2つの違いを意識すると、分散システムの学習がスムーズになります。

関連記事