← レッスンに戻る
第9章 · ベストプラクティス

本番運用とオブザーバビリティ

Production Ops · 約 10 分

重要キーワード

English日本語説明
Observability 可観測性 Logs / Metrics / Traces で内部状態を把握
SLO サービスレベル目標 可用性・レイテンシ等の目標値
Canary Deploy カナリア展開 新版を一部トラフィックに段階的に展開
Failover フェイルオーバー 障害時に代替経路に切替えて継続

本番運用

Observability の 3 軸

SLO 例

Failover

def safe_answer(prompt: str) -> str:
    try:
        return ask_sonnet(prompt)
    except Exception:
        try:
            return ask_haiku(prompt)
        except Exception:
            return "ただいま混雑しています。しばらくお待ちください。"

Canary Deploy

新プロンプト/新モデルは 5% トラフィックのみ に流して安全確認。 A/B 比較ができる仕組みも望ましい。

Cost Guardrails

ユーザーへの透明性

Trace の例

OpenTelemetry や Langfuse・Helicone を使うと、エンドツーエンドのトレースが可視化できます。

Request 12ab
├─ retrieve_context (8ms)  [chunks=5]
├─ messages.create [stream] (3.2s)
│   ├─ tool_use: search_db (220ms)
│   └─ tool_use: notify_slack (180ms)
└─ post_process (15ms)

Monitoring 仕組み

項目
ダッシュボード Grafana / Datadog
トレース OTel + Langfuse
アラート Slack / PagerDuty
ログ集約 Loki / Splunk

Incident response

試す

監視設計を Claude に。

▶ 監視設計依頼
B2C のチャットボット (月 100 万リクエスト) に必須の Observability 項目を 10 個リストアップしてください。各項目に「メトリクス名 / 取得方法 / 望ましい SLO 値の目安」を表で。

演習問題

演習 1: シンプルなコストガードレール

1 ユーザーあたりの 1 日のトークン上限を超えたら 429 を返す Flask middleware を書いてください。

  • ユーザー識別はリクエストヘッダ X-User-Id
  • 上限: 100K input / 50K output トークン / 24h
  • ストレージは sqlite or Redis (どちらでも)
  • 上限超過時は 429 + 残量情報を返す
スタータープロンプト:
Flask 用のレートリミット middleware を書いてください:
1. リクエストヘッダ X-User-Id でユーザー識別
2. SQLite に user_id, date, input_used, output_used を保存
3. /chat 呼び出し前に当日の累積を確認、上限超過なら 429 + JSON {limit, used, reset_at}
4. 応答後に usage を加算
完全コードを示してください。
ヒントを見る

実運用なら Redis + Lua スクリプトで atomic 更新が望ましいですが、SQLite + transaction でも十分実用できます。

理解度チェック

  1. Observability の典型的な 3 軸は?
    1. Logs, Metrics, Traces
    2. CPU, GPU, Disk
    3. Frontend, Backend, DB
    4. Slack, Teams, Email
  2. Canary Deploy の目的は?
    1. 新規変更を一部トラフィックで検証
    2. 鳥を放つ
    3. 全員に即時公開
    4. コードをロールバック
  3. API 障害時のフォールバック例として有効なのは?
    1. 下位モデルに切替
    2. クライアントを再起動
    3. Anthropic を非難する
    4. アカウント削除
  4. コストガードレールでないのは?
    1. ユーザー単位のクォータ
    2. 予算到達時のアラート
    3. リクエスト数を倍々に増やす
    4. max_tokens の上限固定
解答と解説を見る
  1. A — Logs / Metrics / Traces が 3 大要素です。
  2. A — 段階的展開で問題を早期に検知します。
  3. A — ダウングレードや静的応答などへ落とすのが現実的です。
  4. C — リクエストを増やすのは逆方向です。制約を入れる方向が正解。