見出し画像

[書評] 分散システム 第2版 -1/15-

分散システム

技術書籍 未来へつなぐデジタルシリーズ31 分散システム 第2版 を紹介します。本書は分散システムの概要から、分散システムを支える技術要素や用語の解説までを幅広く丁寧に解説した技術教科書です。この書評では、私が重要だと感じた箇所を引用し、私自身が解釈・咀嚼した内容を交えながら全15回に分けて紹介していきます。


第Ⅰ章|分散システムの概要

1.1 分散システムの定義

分散システムは、その利用者に対して単一で首尾一貫したシステムとして見える独立したコンピュータの集合である。

分散システム 第2版 |P.2

上記が、分散システムの定義を端的に表現しています。詳しく紐解いていきます。

図1-1-1 分散システム

利用者に対して単一で首尾一貫したシステムとして見えるイメージを図1-1-1に図示しました。分散システムでは、スマートフォンを含む全ての独立したコンピュータの集合が、利用者から見てひとつのサービスシステムに見えています。

図1-1-2 独立したコンピュータの集合

独立したコンピュータの集合の説明のため、図1-1-2で「独立した部品」と「独立していない部品」の比較をしました。独立していない部品は、組み合わさることで役に立ちますが、それ単体では役に立たないという特徴があります。一方で、独立した部品はそれ単体でも役に立つという特徴があります。図1-1-1のそれぞれのノード(独立したコンピュータ)は、それ単体でも役に立つので独立した部品です。独立した部品は転用や再利用がしやすいという特徴もあります。 

図1-1-3 分散の対義語

図1-1-3に示す通り、分散処理システムと対になる概念として集中システム(集中処理システム)があります。

図1-1-4 集中と分散の比較

分散処理システムと集中処理システムの比較を図1-1-4に記載しました。〇×評価は比較の見やすさを重視して、やや誇張して表現しています。分散システムは利用者の増加などに伴う規模の縮小や拡大がし易い特徴があります。この規模の変化に対応できる特性をスケーラビリティ(Scalability)と呼びます。分散システムはその特性上、自身のシステム周辺以外の全体を把握できないため、システム全体の最適化が難しいという特徴があります。

尚、本書に記載はありませんが、「分散(distributed)」に似た概念として「非中央集権(decentralized)」があります。前者はシステム構造という観点での分散を指し、後者は権限・権力の観点での分散を指すことが多い様です。本書(分散システム)の原典である「DISTRIBUTED SYSTEMS」では下記のように記述されていています。

A decentralized system is a networked computer system in which processes and resources are necessarily spread across multiple computers.
A distributed system is a networked computer system in which processes and resources are sufficiently spread across multiple computers.

DISTRIBUTED SYSTEMS 4TH EDITION|P.4 


1.2 分散処理と並列処理

「分散処理」と「並列処理」は似ているように見えますが、全く異なる概念です(同一のものでも、排他的なものでもない)。「並列処理」と対になる用語は「逐次処理」なので、この二つの比較を図1-2-1に図示しました。
複数の処理を時間的に複数人数で同時並行で処理することを「並列処理」、複数の処理を時間的に一人で順番に処理することを「逐次処理」と呼びます。人間の能力が均一であれば「並列処理」の方が、複数の仕事を短時間で終えることができます。

図1-2-1 並列処理と逐次処理

次に、マイケル J. フリンによって提案された、並列処理の分類方を転載します。

図1-2-2 マイケル J. フリンの分類(出典: Wikipedia)

Instruction poolは、命令(コマンド)セットの集合です。Data poolは、命令対象のデータの集合です。図1-2-2は、これらがPU(Processing Unit:処理単位)に引き渡されて処理するパターンを図示しています。図1-2-3でそれぞれの特徴を説明します。MIMDは分散システムで広く利用される平行処理になります。

図1-2-3 フリンの分類の特徴

最後に、「並列性(Parallelism)」と「並行性(Concurrency)」の違いです。英単語のConcurrencyは同時実行性という意味もあります。本書では下記のように説明されています。

並列性は、同時に処理を行っているという処理系としてのシステムやコンピュータのもつ能力や特徴を表しているのに対して、並行性は、同時に行ってもよい部分が存在するというジョブや処理間の関係を表している。

分散システム 第2版 |P.10

前述したMIMDやSIMDのように複数のデータに対して同時に命令が実行できる並列処理が出現したことから、プログラムの処理時間を短縮する並行プログラム言語が出てきました。並行プログラミング言語では時間的に同時に実行できる部分を明示的に記述できるという特徴があります。


1.3 分散システムの目的

集中システムに対して分散システムを構築する主な目的として、3つの特性が記述されています。それぞれの特性の説明を図1-3-1に記載しました。

図1-3-1 分散システムの目的

次に、それぞれの特性に対する分散処理システムと集中処理システムの比較を図1-3-2に記載しました。〇×評価は比較の見やすさを重視して、やや誇張して表現しています。図1-1-4とも連動していることが判ります。

図1-3-2 集中システムと分散システム

これらの3つの特性においては、集中システムよりも分散システムが優れています。局所性が高いと、セキュリティリスクや情報保護を行う目的を達成しやすくなります。

1-4 分散透過性

分散システムが、分散システムであることを利用者に気づかれないという特徴を透過性(Transparency)または透明性と呼びます。1-1で前述した「利用者に対して単一で首尾一貫したシステムとして見える」という性質と読み替えられます。透過性の種類は以下の7点に分類されます。
リソースは資源のことで、大まかに言うとデータやサービスのことです。具体例を挙げるとWebページもリソースです。

図1-4-1 分散透過性 ①

アクセス透過性の例は、スマートフォンでアプリが通信するプロトコルをユーザが意識しないことなどが挙げられます。位置、移動、再配置の透過性の例は、Webサイトが物理的にどこにあるのか気付かないこと、またWebサイトの物理的なアクセス先が変わっても気付かないことなどが挙げられます。

図1-4-2 分散透過性 ②

複製透過性は、Webブラウジングのキャッシュ(一時的にページを利用者の近くに保存すること)などが挙げられます。並行透過性や障害透過性は、サービスシステム全般で既にどこでも実現されており、この仕組みを利用者が知ることは殆どありません。

1-5 開放性

本項の最初にプロトコルの説明があるので、図1-5-1にまとめました。

図1-5-1 プロトコルの規定

次に、プロトコルの2つの種類とその特徴を図1-5-2にまとめました。言うまでもなく、開放性(Openness)を持つのはオープンプロトコルになります。

図1-5-2 プロトコルの種類と特徴

オープンプロトコルは新規事業者の参入が容易で、製造企業間の競争を促し、製品の低価格化をもたらします。分散システムは独立したコンピュータの集合体(1-1項参照)であるため、分散システムを構成する機器はオープンプロトコルに従うことが推奨されます。

1-6 分散システムの制約

米国のサン・マイクロシステムズのPeter Deutsch、James Goslingらが提唱した分散コンピューティングの落とし穴8つを紹介していますので、図1-6-1でまとめました。

図1-6-1 分散システムの落とし穴

6番以外は、全てネットワークに関するものであることが見て取れます。ネットワークはしばしば使えなくなる(切れる)ものであること、無線通信やベストエフォート型の通信経路では不安定であることを前提に分散システムを設計する必要があることが判ります。5番はネットワークトポロジーを指しており、物理的な接続構成やデータの流れる経路等は動的に変化することを考慮するように注意喚起しています。


ー この書評は、次回(2/15)に続きます ー

この記事が気に入ったらサポートをしてみませんか?