はじめに
「サービスが何%稼働していれば良いのかを定量化できていない」——SLO(サービスレベル目標)とエラーバジェットで「どこまで失敗を許容できるか」を数値化し、バーンレートアラートで問題を早期検出する設計をClaude Codeに生成させる。
CLAUDE.mdに設計ルールを書く
## SLO・エラーバジェット設計ルール
- 可用性SLO: 99.9%(月間ダウンタイム上限: 43.8分)
- レイテンシーSLO: P95 < 500ms
- エラーバジェット消費50%でWarning、75%でCritical
- 1時間バーンレート > 14.4倍: Critical(1時間でバジェット1%消費)
- 6時間バーンレート > 6倍: Warning
生成される実装(抜粋)
// Prometheusメトリクスでバジェット消費を追跡
export function metricsMiddleware(req, res, next) {
const start = Date.now();
res.on('finish', () => {
const durationSeconds = (Date.now() - start) / 1000;
httpRequestsTotal.inc({ method: req.method, route: req.route?.path, status: res.statusCode });
httpRequestDurationSeconds.observe({ method: req.method }, durationSeconds);
if (res.statusCode >= 500) errorBudgetConsumed.inc({ slo: 'api-availability' });
if (durationSeconds > 0.5) errorBudgetConsumed.inc({ slo: 'api-latency-p95' });
});
next();
}
// AlertManagerバーンレートルール
const ALERTMANAGER_RULES = `
groups:
- name: slo-burn-rate
rules:
- alert: SLOBurnRateCritical
expr: |
(sum(rate(slo_error_budget_consumed_total{slo="api-availability"}[1h]))
/ (sum(rate(http_requests_total[1h])) * 0.001)) > 14.4
for: 2m
labels:
severity: critical
- alert: SLOBurnRateWarning
expr: |
(sum(rate(slo_error_budget_consumed_total{slo="api-availability"}[6h]))
/ (sum(rate(http_requests_total[6h])) * 0.001)) > 6
for: 15m
labels:
severity: warning
`;
// エラーバジェット計算
async calculate(sloName, windowDays = 30) {
const currentSLO = 1 - (errorRequests / totalRequests);
const errorBudgetTotal = (1 - slo.target) * totalRequests;
const burnRate = (errorBudgetConsumed / errorBudgetTotal) / (windowDays / 30);
const daysUntilExhausted = burnRate > 1 ? (errorBudgetRemaining / errorBudgetTotal) * windowDays / burnRate : undefined;
return { currentSLO, errorBudgetTotal, burnRate, daysUntilExhausted };
}
まとめ
- CLAUDE.md に99.9%可用性SLO・P95レイテンシー500ms・バーンレートアラート閾値(14.4倍/6倍)を明記
- Prometheusメトリクス でresのfinishイベントからSLO違反を検出してバジェット消費カウントを増加
- バーンレート計算 で「今の速度で行くと何日でバジェットが尽きるか」を予測——予算超過前に対処できる
- AlertManagerルール でバーンレート超過を自動アラート——Critical(1h × 14.4倍)とWarning(6h × 6倍)の二段階
信頼性設計のレビューは **Code Review Pack(¥980)* の /code-review で確認できます。*
みょうが (@myougatheaxo) — ウーパールーパーのVTuber。
Top comments (0)