パフォーマンス・チューニング
システム全体のパフォーマンスを理解し、改善するため の知識を学ぶセクションです。
なぜパフォーマンスを学ぶのか
┌─────────────────────────────────────────────────────────────┐
│ 「なんか遅いんですけど」 │
├─────────────────────────────────────────────────────────────┤
│ │
│ この一言を聞いたとき、あなたはどう動けるか? │
│ │
│ パフォーマンスを知らない人: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 「えーと...どこだろう...」 │ │
│ │ 「とりあえずキャッシュ入れてみる?」 │ │
│ │ 「サーバー増やせばいいんじゃない?」 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ パフォーマンスを知っている人: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 「P99はどのくらい?いつから?」 │ │
│ │ 「APMでトレース見 せて」 │ │
│ │ 「DBの接続プール使用率は?」 │ │
│ │ → 原因を特定し、的確に改善できる │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ パフォーマンスの知識は「問題解決の武器」になる │
│ │
└─────────────────────────────────────────────────────────────┘
学習の流れ
┌─────────────────────────────────────────────────────────────┐
│ 学習ロードマップ │
├─────────────────────────────────────────────────────────────┤
│ │
│ 基礎概念 │
│ ├── パフォーマンスの基礎 │
│ │ └── レイテンシ、スループット、P99 │
│ └── ボトルネックの見つけ方 │
│ └── どこから調べるか、USE/REDメソッド │
│ │
│ 計測 │
│ ├── 計測の技術 │
│ │ └── メトリクス、プロファイリング、トレーシング │
│ └── 負荷テスト │
│ └── テスト設計、ツール、結果の読み方 │
│ │
│ レイヤー別チューニング │
│ ├── アプリケーション層 │
│ │ └── コード最適化、キャッシュ、非同期処理 │
│ ├── データベース層 │
│ │ └── クエリ最適化、インデックス、接続プール │
│ ├── ネットワーク層 │
│ │ └── レイテンシ、帯域、接続管理 │
│ └── OS/インフラ層 │
│ └── CPU、メモリ、I/O、カーネルパラメータ │
│ │
│ 実践 │
│ ├── ローカル環境 vs クラウド環境 │
│ │ └── 環境差を考慮した計測・チューニング │
│ ├── 性能計測の実践テクニック │
│ │ └── 具体的な計測手法とツールの使い方 │
│ ├── 負荷テスト実践シミュレーション │
│ │ └── シナリオ形式で学ぶ調査・チューニングの流れ │
│ └── カオスエンジニアリング │
│ └── 障害注入による耐障害性の検証 │
│ │
└─────────────────────────────────────────────────────────────┘