参考文献: Pythonではじめるソフトウェアアーキテクチャ
スケーラビリティ = 計算リソースの追加によりソフトウェアシステムが拡張される程度
システム拡張
- 垂直スケール (スケールアップ): 計算ノード内でリソース(CPUやRAM)を追加,リソースを有効活用
- 水平スケール (スケールアウト): 計算ノード(負荷分散させたサーバクラスタ)を新しく追加
並行性
- マルチスレッディング: 並列タスクを複数スレッドで実行
- 全スレッドは同一プロセス内で実行される
- マルチプロセッシング: 複数のプロセスでプログラムを実行
- マルチスレッディングよりオーバヘッドを伴う
- 非同期処理: タスクに実行順序に優先度を付けず非同期に実行
- 単一スレッド上で実行
並行性と並列性
- 並行性: 複数のタスクを全く同じ時間に実行する必要はない
- 並列性: 複数のタスクを同時に実行