TL;DR

ネットワークでつながった別々のコンピュータに置かれたコンポーネントが、互いにメッセージをやり取りして動作を調整するシステム。

なぜ必要か

Wikipedia では、SOA に基づくシステム、マイクロサービス、大規模多人数同時参加型オンラインゲーム、P2P のアプリケーションなどを分散システムの例に挙げている。

仕組み

Wikipedia によると、分散システムには 3 つの大きな課題がある。コンポーネントが並行に動くこと、全体で共有する時計がないこと、コンポーネントが独立に故障することである。

入門 OpenTelemetry の第 1 章によると、分散システムはリソースとトランザクションからなり、オブザーバビリティとは分散システムを観測することである。

注意点

TLA+ を使うと、並行システムや分散システムの時間による変化を記述し、競合状態やデッドロックなどの設計の誤りを、設計の段階で見つけられる。

関連

出典