第9章 スケーラビリティと高可用性

SUZUKI Masashi / masasuzu / へなちょこえんじにあ

用語

パフォーマンス
アプリケーションが特定の目標に達成する能力
キャパシティ
アプリケーションが処理できる総負荷
スケーラビリティ

アプリケーションがサーバの増設に基づいて大きくなるときに パフォーマンスを維持する能力

パフォーマンスを低下させず必要に応じてキャパシティを追加できる能力

可用性
アプリケーションがリクエストに応答できる時間の割合
フォルトトレランス
アプリケーションとシステム全体が障碍に的確に対処する能力 ダウンしても可能な限り多くの機能を提供できること

SNSにおける一般的なメトリクス

  • データ量
    • 日記とかコメントのような消せないデータが溜まっていく
  • ユーザ数
    • ユーザの関係数は( n * (n-1) ) / 2 が上限
  • ユーザアクティビティ
  • 関連するデータセットのサイズ

MySQLのスケーリング

  • 垂直スケーリング (スケールアップ)
  • 水平スケーリング (スケールアウト)
  • スケールバック
    • 必要ないデータをパージ or アーカイブすること

スケーラビリティの計画

スケーリング前の時間稼ぎ

  • パフォーマンスの最適化
  • 高性能なハードウェアの購入

スケールアップ

  • 資金の問題
  • MySQLサーバ自体が多コア、多プロセスをうまく扱うことができない
  • スケールアップはお勧めしない

スケールアウト

  • レプリケーションを通じた複数のサーバへのデータ分散
    • 読み取りをスレーブに分散
  • パーティショニングによるワークロードの分散
  • おすすめの構成はマスターマスター構成のマスタースレーブ構成

機能分割

データシャーディング