第9章 スケーラビリティと高可用性
SUZUKI Masashi / masasuzu / へなちょこえんじにあ
用語
- パフォーマンス
- アプリケーションが特定の目標に達成する能力
- キャパシティ
- アプリケーションが処理できる総負荷
- スケーラビリティ
アプリケーションがサーバの増設に基づいて大きくなるときに
パフォーマンスを維持する能力
パフォーマンスを低下させず必要に応じてキャパシティを追加できる能力
- 可用性
- アプリケーションがリクエストに応答できる時間の割合
- フォルトトレランス
- アプリケーションとシステム全体が障碍に的確に対処する能力
ダウンしても可能な限り多くの機能を提供できること
SNSにおける一般的なメトリクス
- データ量
- 日記とかコメントのような消せないデータが溜まっていく
- ユーザ数
- ユーザの関係数は( n * (n-1) ) / 2 が上限
- ユーザアクティビティ
- 関連するデータセットのサイズ
MySQLのスケーリング
- 垂直スケーリング (スケールアップ)
- 水平スケーリング (スケールアウト)
- スケールバック
スケーラビリティの計画
スケーリング前の時間稼ぎ
- パフォーマンスの最適化
- 高性能なハードウェアの購入
スケールアップ
- 資金の問題
- MySQLサーバ自体が多コア、多プロセスをうまく扱うことができない
- スケールアップはお勧めしない
スケールアウト
- レプリケーションを通じた複数のサーバへのデータ分散
- パーティショニングによるワークロードの分散
- おすすめの構成はマスターマスター構成のマスタースレーブ構成
機能分割
データシャーディング