## 23. 判断の目安となる数値

確認：2026年9月

いずれも一般的な構成・適切なインデックス設計を前提にした**目安**であり、保証値ではない。境界付近では必ず負荷試験（k6）で確認する。

### 23-1. データベース

| 項目 | まず単体で足りる範囲（目安） | 次の手を打つきっかけ | 次の手 |
|---|---|---|---|
| PostgreSQL単体 | データ量が数百GB〜1TB程度、書き込みが秒間数千件程度まで | 読み取りのCPU使用率が継続して高い（70%超が続く） | リードレプリカ → キャッシュ → テーブル分割（パーティション） |
| コネクション数 | アプリのインスタンス数×プール数が数百程度まで | 接続数の上限に近づく、サーバーレスから接続する | RDS Proxy／PgBouncer |
| 日本語全文検索（pg_bigm） | 数百万件程度、応答が100ms前後に収まる範囲 | 表記揺れ吸収・ファセット・サジェストが必要、応答が遅くなる | Meilisearch |
| ベクトル検索（pgvector＋HNSW） | 数百万ベクトル程度 | 数千万件以上、または反復インデックススキャン（`hnsw.iterative_scan`）を使っても条件付き検索の応答が目標に届かない | Qdrant |
| Postgresベースのジョブキュー | Go（River）は秒間数千件、Rails（Solid Queue）・TypeScript（pg-boss）は秒間数百件程度 | 左の目安を超える、またはDB負荷の大半をキューが占める | SQS、Valkey（BullMQ／Sidekiq） |
| SQLite（単一サーバー） | 書き込みの同時実行が少なく、サーバー1台で足りる範囲 | 複数台構成にしたい、書き込み待ちが目立つ | PostgreSQL |

### 23-2. 実行環境

| 項目 | 目安 | 判断 |
|---|---|---|
| Lambda と 常駐コンテナ | リクエストが一日中途切れず続くなら、常駐コンテナの方が安くなりやすい | まばらなリクエスト・イベント処理はLambda、常時トラフィックはECS／Cloud Run |
| Lambdaの実行時間 | 1回あたり最大15分 | 超える可能性がある処理はECSタスクかStep Functionsで分割 |
| コールドスタート | TypeScript・Pythonは短め、Goは非常に短い、JVMは長い（SnapStartで緩和できる） | 起動時間が体感に効く同期APIでは、JVMのLambdaを避ける。手順1でKotlinが決まっている場合はSnapStartを検討する |
| PaaS（Vercel等）からの移行 | 月額費用が、自前コンテナ運用にかかる人件費を上回り始めたら | §24 の移行パスに従う |
| Kubernetes | 常時稼働するサービスが10前後以上あり、専任の運用担当がいる | それ未満ならECS／Cloud Run／Kamal |
| マルチリージョン | 目標復旧時間が分単位で、リージョン全体の障害を許容できない | それ以外はマルチAZで十分 |

### 23-3. 同時接続・レイテンシ

| 項目 | 目安 | 判断 |
|---|---|---|
| WebSocket同時接続（Node.js） | 1プロセスあたり数千〜1万程度 | 超えるならプロセスを増やしてPub/Subで連携、またはGo／Elixir |
| WebSocket同時接続（Go） | 1台あたり数万〜10万程度 | — |
| WebSocket同時接続（Elixir／Phoenix） | 1台あたり数十万以上 | プレゼンスや配信が中核ならElixir |
| p99レイテンシ 100ms程度 | どの言語でも達成できる | 言語選定の理由にならない。DBとキャッシュを見直す |
| p99レイテンシ 10ms未満が厳格に必要 | GCのある言語では上振れの管理が難しくなる | Rustを検討（§2-10） |

### 23-4. チーム・構成

| 項目 | 目安 | 判断 |
|---|---|---|
| 開発者1〜2人 | 言語を1つに絞る | フロントと同じTypeScript、またはRails単体 |
| 開発者10人以上 | モジュール構造を強制する仕組みが必要 | NestJS、Kotlin（Spring）、Goならパッケージ境界のルール化 |
| モノリスの分割 | チーム間でデプロイ待ちが常態化した、または特定機能だけ独立してスケールさせる必要が明確になった | それまではモノリスのまま、モジュール境界だけ明確にしておく |
| 言語を1つ追加する | 既定の言語では要件を満たせない、または明らかに大きな差がつく | §2-10 の混在ルールに従う |
