ストーリー
SRE(Site Reliability Engineering)とは
SREはGoogleが提唱した運用のアプローチで、ソフトウェアエンジニアリングの手法を使って信頼性の課題を解決します。
従来の運用:
開発チーム: 「新機能をリリースしたい」(変化を求める)
運用チーム: 「安定性を維持したい」(変化を避ける)
→ 対立関係
SRE:
SREチーム: 「エラーバジェット内で変化と安定のバランスを取る」
→ エンジニアリングで解決
SREの主要原則
1. エラーバジェット
// エラーバジェット: SLOで許容されるエラーの量
interface ErrorBudget {
slo: number; // 99.9%
budgetPercent: number; // 0.1%
monthlyBudgetMinutes: number; // 約43分
// バジェットの使い方
usage: {
newFeatureRelease: '30%'; // 新機能リリースのリスク
infraChanges: '20%'; // インフラ変更のリスク
plannedMaintenance: '10%'; // 計画メンテナンス
reserve: '40%'; // 予期しない障害への備え
};
}
// エラーバジェットが残っている場合
// → 新機能のリリースを積極的に進められる
// エラーバジェットを使い切った場合
// → 新機能リリースを凍結し、信頼性の改善に注力
| エラーバジェット残量 | アクション |
|---|---|
| 50%以上 | 通常どおりリリースを推進 |
| 25-50% | リスクの高いリリースは延期を検討 |
| 10-25% | 新機能リリースを制限、信頼性改善を優先 |
| 10%未満 | リリース凍結、信頼性改善に全力 |
2. Toilの削減
Toil(トイル)とは、手作業で反復的、自動化可能、戦術的で長期的な価値がない作業のことです。
// Toilの例
interface ToilExamples {
manual: {
description: '手動でのデプロイ作業';
frequency: '毎週';
timePerOccurrence: '30分';
solution: 'CI/CDパイプラインの自動化';
};
repetitive: {
description: '障害発生時の手動スケールアウト';
frequency: '月2-3回';
timePerOccurrence: '15分';
solution: 'オートスケーリングの設定';
};
automatable: {
description: 'SSL証明書の手動更新';
frequency: '3ヶ月ごと';
timePerOccurrence: '1時間';
solution: 'cert-managerによる自動更新';
};
}
// SREの目標: Toilを作業時間の50%以下に抑える
// 残りの50%をエンジニアリング(自動化、改善)に使う
3. 段階的なリリース
// カナリアリリースとSLO監視の組み合わせ
interface ProgressiveRollout {
stages: {
stage: string;
trafficPercent: number;
duration: string;
rollbackCondition: string;
}[];
}
const rolloutPlan: ProgressiveRollout = {
stages: [
{ stage: 'Canary', trafficPercent: 1, duration: '15分', rollbackCondition: 'エラー率 > 1%' },
{ stage: 'Early', trafficPercent: 10, duration: '30分', rollbackCondition: 'エラー率 > 0.5%' },
{ stage: 'Mid', trafficPercent: 50, duration: '1時間', rollbackCondition: 'P99レイテンシ > 2s' },
{ stage: 'Full', trafficPercent: 100, duration: '-', rollbackCondition: 'SLO違反' },
],
};
4. 自動化の原則
レベル1: 手動(ドキュメントに手順がある)
レベル2: 半自動(スクリプトがあるが手動で実行)
レベル3: 自動(条件を満たすと自動実行、結果を人が確認)
レベル4: 自律(自動実行 + 自動判断 + 自動復旧)
SREの組織パターン
| パターン | 説明 | 適したケース |
|---|---|---|
| 専任SREチーム | 独立したSREチームが横断的に対応 | 大規模組織 |
| 組み込みSRE | 各開発チームにSREメンバーを配置 | 中規模組織 |
| You Build It, You Run It | 開発チーム自身が運用を担当 | 小規模、DevOps文化 |
まとめ
| ポイント | 内容 |
|---|---|
| SREとは | ソフトウェアエンジニアリングで運用課題を解決するアプローチ |
| エラーバジェット | SLOで許容されるエラー量、リリース判断の基準 |
| Toil削減 | 手作業を50%以下に抑え、自動化に投資 |
| 段階的リリース | カナリア → 段階的拡大 + SLO監視 |
チェックリスト
- SREの定義と従来の運用との違いを説明できる
- エラーバジェットの考え方とリリース判断への活用を理解した
- Toilの定義と削減方法を把握した
- 段階的リリースの設計ができる
次のステップへ
次は「障害対応とインシデント管理」を学びます。障害が発生した際の体系的な対応プロセスを見ていきましょう。
推定読了時間: 30分