アーキテクチャ
architecture

[読書メモ]Pattern-Oriented Software Architecture(下準備) - 分散システムとは?

(What)分散システムとは?

ネットワークに繋がれた複数のコンピュータを使って、プログラムを同時並行的に実行するシステムのこと。

(Why)なぜ分散システムを使うのか?

以下三つの観点がある

  1. Scalability
    • より多くのPCリソースを使うことで、計算処理をより早く終わらせるため。
  2. Resilience
    • 処理を担当できるPCが複数台あることで、その中のどれかがクラッシュなどで処理不能になった場合でも、処理自体は完遂可能にするため。
  3. Location
    • ネットワーク通信は時間がかかる(特に日本とブラジルのように物理的にも距離が遠いとなおさら)が、物理的にユーザとサーバを近づけることでネットワーク通信の速度を短縮するため。

特徴(分散システムをうまく動作させるために)

  • 個々のプログラムを疎結合にする必要がある。
    個々のプログラムはAPI経由で連携を取り合い、それぞれの実装については知っていてはならない。

  • データを重複して持っている必要がある。
    それぞれのプログラムが同じデータを参照すると、分散させている効力が発揮できない?
    だが、重複してデータを持つことは潜在的なバグの温床になるので、難しいところ。

参考

http://container-solutions.com/what-is-a-distributed-system/
https://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0