TL;DR
ネットワークでつながった別々のコンピュータに置かれたコンポーネントが、互いにメッセージをやり取りして動作を調整するシステム。
なぜ必要か
Wikipedia では、SOA に基づくシステム、マイクロサービス、大規模多人数同時参加型オンラインゲーム、P2P のアプリケーションなどを分散システムの例に挙げている。
仕組み
Wikipedia によると、分散システムには 3 つの大きな課題がある。コンポーネントが並行に動くこと、全体で共有する時計がないこと、コンポーネントが独立に故障することである。
入門 OpenTelemetry の第 1 章によると、分散システムはリソースとトランザクションからなり、オブザーバビリティとは分散システムを観測することである。
注意点
TLA+ を使うと、並行システムや分散システムの時間による変化を記述し、競合状態やデッドロックなどの設計の誤りを、設計の段階で見つけられる。