Appearance
ルール候補バックログ 構想
ルールカタログに掲載している 61 ルールに加えて、Ncost が対応を検討しているコスト改善対象の全量リストです。カタログが「実装を計画しているもの」を載せるのに対し、このページは選別前の候補まで含めて公開します — どれから対応してほしいかの要望は、公開窓口の準備ができ次第受け付けます(プレビュー参加者には個別の連絡先をご案内しています)。
ここから選別された候補は、ルールカタログの行と判定規範準拠の詳細ページへ昇格します。掲載済みの 61 ルールにはすでに詳細ページがあり、下の表からリンクしています。
凡例
検出データ — 各候補の検出に必要な読み取り権限。CLI の初回スキャンは読み取り専用のインベントリ取得だけで動き、足りない権限は locked として表示します(勝手に推測しません):
| 記号 | 意味 |
|---|---|
| INV | インベントリ・設定の一覧取得のみ → 初回スキャンで検出できる |
| MON | 利用メトリクスの読み取りが必要 → 権限が付くまで locked |
| LOG | ジョブ履歴・アクセス統計・監査ログ系の読み取りが必要 → 同上 |
| BIL | 請求データ(Billing Export / Cost Explorer / Cost Management)の接続が必要 |
| CODE | 手元のリポジトリ(コード・IaC・Dockerfile 等)のスキャンが必要 — クラウド権限は不要。コードが渡る範囲はあなたが普段の AI ツールに既に許可している範囲のままで、Ncost に送られることはありません |
分類 — ルールカタログと同じ zombie / sizing / rate / hygiene。加えてこのバックログでは暫定分類「配置」(リソースの配置・経路の見直しで転送コストを下げる候補)を使います。コード自体の改善・分割で実測を下げる候補は暫定カテゴリ「refactor」(専用の節)、実行形態・サービス・プロバイダをまたぐ移行の候補は暫定カテゴリ「migrate」(専用の節)にまとめています。いずれも選別時に正式な分類へ整理します。
状態 — 「掲載済」はカタログ 61 ルールに含まれるもの(リンク先が詳細ページ)。「候補」は未選別です。
GCP(94 件)
| ID | 領域 | 候補 | 分類 | データ | 状態 |
|---|---|---|---|---|---|
| G1 | GCE | インスタンス zombie(長期停止 or 低利用) | zombie | INV+MON | 掲載済 |
| G2 | GCE | インスタンス sizing | sizing | MON | 掲載済 |
| G3 | GCE | スリープ候補(停止 + IP 予約) | hygiene | MON | 掲載済 |
| G4 | GCE | MIG sizing | sizing | MON | 掲載済 |
| G5 | GCE | 旧世代 machine type | rate | INV | 掲載済 |
| G6 | GCE | 未アタッチ Persistent Disk | zombie | INV | 掲載済 |
| G7 | GCE | 停止 VM に残ったディスク | zombie | INV | 掲載済 |
| G8 | GCE | idle ディスク | zombie | MON | 掲載済 |
| G9 | GCE | 未割当静的外部 IP | zombie | INV | 掲載済 |
| G10 | GCE | 古いスナップショット | zombie | INV | 掲載済 |
| G11 | GCE | 未参照カスタムイメージ | zombie | INV | 掲載済 |
| G12 | GCE | 未使用の予約 | zombie | INV | 掲載済 |
| G13 | GCE | CUD カバレッジ不足(安定稼働なのにオンデマンド) | rate | BIL | 候補 |
| G14 | GCE | CUD 未使用・失効間近のコミットメント | rate | INV+BIL | 候補 |
| G15 | GCE | Spot/Preemptible 化候補(バッチ・ステートレス) | rate | MON | 候補 |
| G16 | GCE | dev/test の夜間・週末停止候補(稼働パターン) | rate | MON | 候補 |
| G17 | GCE | pd-ssd → pd-balanced / Hyperdisk 移行 | rate | INV | 候補 |
| G18 | GCE | ディスク容量 oversized(使用率低) | sizing | MON | 候補 |
| G19 | GCE | Hyperdisk プロビジョン IOPS/スループット過大 | sizing | MON | 候補 |
| G20 | GCE | マシンイメージ stale | zombie | INV | 候補 |
| G21 | GCE | GPU アタッチ済みで未使用 | zombie | MON | 候補 |
| G22 | GCE | TPU idle | zombie | MON | 候補 |
| G23 | GCE | Sole-tenant node 低占有 | sizing | INV+MON | 候補 |
| G24 | GKE | クラスタ idle | zombie | MON | 掲載済 |
| G25 | GKE | nodepool sizing | sizing | MON | 掲載済 |
| G26 | GKE | workload rightsizing(requests vs 実測) | sizing | MON | 候補 |
| G27 | GKE | 未使用 nodepool(Pod 配置ゼロのままノード維持) | zombie | INV+MON | 候補 |
| G28 | Cloud SQL | idle(接続 0 → 停止提案) | zombie | MON | 掲載済 |
| G29 | Cloud SQL | sizing | sizing | MON | 掲載済 |
| G30 | Cloud SQL | 手動バックアップ stale | zombie | INV | 掲載済 |
| G31 | Cloud SQL | リードレプリカ idle | zombie | MON | 候補 |
| G32 | Cloud SQL | ストレージ過大(auto-grow 後の空き) | sizing | MON | 候補 |
| G33 | Cloud SQL | Enterprise Plus → Enterprise 降格候補 | rate | INV | 候補 |
| G34 | AlloyDB | idle クラスタ | zombie | MON | 候補 |
| G35 | LB | 空バックエンド LB | zombie | INV | 掲載済 |
| G36 | NCC | spoke inactive | hygiene | INV | 掲載済 |
| G37 | Interconnect | VLAN attachment 未使用 | zombie | INV | 掲載済 |
| G38 | DNS | 空マネージドゾーン | zombie | INV | 掲載済 |
| G39 | NW | Cloud NAT idle | zombie | MON | 候補 |
| G40 | NW | Cloud VPN トンネル idle / DOWN のまま課金 | zombie | INV+MON | 候補 |
| G41 | NW | Serverless VPC Access コネクタ idle(常時課金) | zombie | INV+MON | 候補 |
| G42 | NW | Private Service Connect エンドポイント未使用 | zombie | INV+MON | 候補 |
| G43 | NW | Premium → Standard ネットワークティア | rate | INV+BIL | 候補 |
| G44 | NW | リージョン間・ゾーン間トラフィック過多(配置の見直し) | 配置 | BIL | 候補 |
| G45 | NW | 高 egress オリジンへの Cloud CDN 未適用 | 配置 | BIL | 候補 |
| G46 | NW | Cloud Armor ポリシー未アタッチ | zombie | INV | 候補 |
| G47 | Cloud Run | CPU 常時割当 → リクエストベース | rate | MON | 掲載済 |
| G48 | Cloud Run | min-instances 常駐の idle | zombie | INV+MON | 候補 |
| G49 | Cloud Run | メモリ / CPU 割当過大 | sizing | MON | 候補 |
| G50 | Functions | min-instances 常駐で呼び出し 0 | zombie | MON | 掲載済 |
| G51 | App Engine | 旧バージョン常駐 | zombie | INV | 掲載済 |
| G52 | BigQuery | 未更新テーブル | zombie | INV | 掲載済 |
| G53 | BigQuery | on-demand ⇔ Editions のミスマッチ | rate | LOG | 候補 |
| G54 | BigQuery | 物理 vs 論理ストレージ課金の選択ミス | rate | LOG | 候補 |
| G55 | BigQuery | パーティション / クラスタ未設定 × 大スキャン | hygiene | LOG | 候補 |
| G56 | BigQuery | スロット予約 / BI Engine idle | zombie | INV+MON | 候補 |
| G57 | Dataproc | クラスタ idle | zombie | MON | 掲載済 |
| G58 | Dataproc | autoscaling 未設定 | hygiene | INV | 候補 |
| G59 | Dataflow | batch 7 日超 RUNNING | zombie | INV | 掲載済 |
| G60 | Data Fusion | stale インスタンス | zombie | INV+LOG | 掲載済 |
| G61 | Composer | 環境 idle(常時稼働の環境課金) | zombie | INV+MON | 候補 |
| G62 | Datastream | idle ストリーム | zombie | INV+MON | 候補 |
| G63 | Memorystore | Redis idle(接続 0) | zombie | MON | 掲載済 |
| G64 | Memorystore | oversized(メモリ利用率低) | sizing | MON | 候補 |
| G65 | Spanner | idle | zombie | MON | 掲載済 |
| G66 | Spanner | oversized(ノード数) | sizing | MON | 掲載済 |
| G67 | Bigtable | idle | zombie | MON | 掲載済 |
| G68 | Filestore | idle / 過大容量 | zombie | MON | 候補 |
| G69 | Firestore | TTL 未設定(古いドキュメントの蓄積) | hygiene | INV | 候補 |
| G70 | Vertex AI | endpoint idle / モデル未デプロイ | zombie | INV+MON | 掲載済 |
| G71 | Vertex AI | Workbench notebook idle | zombie | MON | 掲載済 |
| G72 | Pub/Sub | subscription idle + 未 ack 滞留 | zombie | MON | 掲載済 |
| G73 | Pub/Sub | topic / subscription の ack 済みメッセージ保持過剰 | rate | INV | 候補 |
| G74 | Pub/Sub | snapshot stale | zombie | INV | 候補 |
| G75 | GCS | lifecycle 未設定 | hygiene | INV | 掲載済 |
| G76 | GCS | soft delete 保持過剰 | rate | INV+MON | 掲載済 |
| G77 | GCS | ストレージクラス最適化(→ Nearline / Coldline / Archive) | rate | INV+LOG | 候補 |
| G78 | GCS | Autoclass 未設定 | hygiene | INV | 候補 |
| G79 | GCS | 未完了マルチパートアップロードの残骸 | zombie | INV | 候補 |
| G80 | GCS | 非現行バージョン蓄積(versioning) | zombie | INV | 候補 |
| G81 | GCS | dual-region / turbo replication 過剰冗長 | rate | INV | 候補 |
| G82 | Artifact Registry | 放置リポジトリ | zombie | INV | 掲載済 |
| G83 | Artifact Registry | cleanup policy 未設定 | hygiene | INV | 掲載済 |
| G84 | Artifact Registry | 未参照リポジトリで脆弱性自動スキャン有効 | hygiene | INV | 候補 |
| G85 | Logging | ログバケット保持超過 | hygiene | INV | 掲載済 |
| G86 | Logging | 取り込み過多(除外フィルタ・sampling 提案) | hygiene | MON | 掲載済 |
| G87 | Logging | 重複シンク / 高コスト宛先シンク | hygiene | INV | 候補 |
| G88 | Monitoring | カスタム指標過多 | hygiene | MON+BIL | 候補 |
| G89 | KMS | 旧鍵バージョン stale(disable 提案) | zombie | INV | 掲載済 |
| G90 | Secret Manager | 旧シークレットバージョン蓄積(バージョン単位課金) | zombie | INV | 候補 |
| G91 | Certificate Manager | 未使用証明書 | zombie | INV | 候補 |
| G92 | Apigee | 環境 idle(高額な常駐課金) | zombie | INV+MON | 候補 |
| G93 | Cloud Build | private worker pool idle | zombie | INV+MON | 候補 |
| G94 | プロジェクト | 放置プロジェクト(プロジェクト単位 idle) | zombie | INV+BIL | 候補 |
AWS(76 件)
| ID | 領域 | 候補 | 分類 | データ | 状態 |
|---|---|---|---|---|---|
| A1 | EC2 | idle / 長期停止 | zombie | INV+MON | 掲載済 |
| A2 | EC2 | 旧世代(t2 / m4 / c4 / r4 → 後継) | rate | INV | 掲載済 |
| A3 | EC2 | 非 Graviton(x86 → arm64 の fact 提示) | rate | INV | 掲載済 |
| A4 | EC2 | sizing(p99 実測 → 縮小) | sizing | MON | 候補 |
| A5 | EC2 | dev/test の夜間・週末停止候補 | rate | MON | 候補 |
| A6 | EC2 | Savings Plans / RI カバレッジ不足 | rate | BIL | 候補 |
| A7 | EC2 | RI / SP 未使用・失効間近 | rate | BIL | 候補 |
| A8 | EC2 | Spot 化候補(ステートレス) | rate | MON | 候補 |
| A9 | EC2 | Capacity Reservation 未使用 | zombie | INV | 候補 |
| A10 | EC2 | Dedicated Host 低占有 | sizing | INV | 候補 |
| A11 | EC2 | stale AMI + 付随スナップショット | zombie | INV | 候補 |
| A12 | NW | 孤児 ENI | zombie | INV | 候補 |
| A13 | EBS | 未アタッチ(available) | zombie | INV | 掲載済 |
| A14 | EBS | 停止インスタンス付き | zombie | INV | 掲載済 |
| A15 | EBS | idle(ops ≈ 0) | zombie | MON | 掲載済 |
| A16 | EBS | gp2 → gp3 | rate | INV | 掲載済 |
| A17 | EBS | スナップショット孤児 | zombie | INV | 掲載済 |
| A18 | EBS | io1 / io2 プロビジョン IOPS 過大 | sizing | MON | 候補 |
| A19 | EIP | 未割当 Elastic IP | zombie | INV | 掲載済 |
| A20 | NAT GW | idle / ルート参照なし | zombie | INV+MON | 掲載済 |
| A21 | NAT GW | S3 / ECR 向けトラフィック(Gateway Endpoint 未設定) | hygiene | BIL/LOG | 候補 |
| A22 | ELB | Classic ELB 空 | zombie | INV | 掲載済 |
| A23 | ELB | ALB / NLB 空ターゲット | zombie | INV | 掲載済 |
| A24 | ELB | 低 LCU の idle ALB / NLB | zombie | MON | 候補 |
| A25 | RDS | idle(接続 0 → 停止・上限額明示) | zombie | MON | 掲載済 |
| A26 | RDS | sizing(過大) | sizing | MON | 候補 |
| A27 | RDS | 旧世代インスタンス | rate | INV | 候補 |
| A28 | RDS | ストレージ gp2 → gp3 | rate | INV | 候補 |
| A29 | RDS | プロビジョン IOPS 過大 | sizing | MON | 候補 |
| A30 | RDS | dev/test の Multi-AZ | rate | INV | 候補 |
| A31 | RDS | 手動スナップショット stale / 保持過剰 | zombie | INV | 候補 |
| A32 | Aurora | idle クラスタ / Serverless v2 化候補 | 複合 | MON | 候補 |
| A33 | DynamoDB | provisioned ⇔ on-demand ミスマッチ | rate | MON | 候補 |
| A34 | DynamoDB | 未使用 GSI | zombie | MON | 候補 |
| A35 | DynamoDB | stale テーブル | zombie | INV+MON | 候補 |
| A36 | DynamoDB | DAX idle | zombie | MON | 候補 |
| A37 | ElastiCache | idle / oversized / 旧ノードタイプ | 複合 | MON | 候補 |
| A38 | Redshift | idle / 一時停止候補 | zombie | MON | 候補 |
| A39 | OpenSearch | idle / oversized / UltraWarm 未活用 | 複合 | MON | 候補 |
| A40 | EMR | idle クラスタ | zombie | MON | 候補 |
| A41 | Kinesis | provisioned シャード idle | zombie | MON | 候補 |
| A42 | Athena | パーティション未設定 × スキャン過多 | hygiene | LOG | 候補 |
| A43 | Glue | dev endpoint 放置 / クローラ過多 | zombie | INV | 候補 |
| A44 | Lambda | メモリ割当過大 | sizing | LOG | 候補 |
| A45 | Lambda | Provisioned Concurrency idle | zombie | MON | 候補 |
| A46 | Lambda | x86 → Graviton(arm64) | rate | INV | 候補 |
| A47 | EKS | 未使用クラスタ(コントロールプレーン課金) | zombie | INV+MON | 候補 |
| A48 | EKS | workload rightsizing | sizing | MON | 候補 |
| A49 | ECS / Fargate | タスク sizing(CPU / メモリ) | sizing | MON | 候補 |
| A50 | ECR | 放置リポジトリ | zombie | INV+LOG | 掲載済 |
| A51 | ECR | lifecycle 未設定 | hygiene | INV | 掲載済 |
| A52 | S3 | lifecycle 未設定 | hygiene | INV | 候補 |
| A53 | S3 | 未完了マルチパートアップロードの残骸 | zombie | INV | 候補 |
| A54 | S3 | 非現行バージョン蓄積 | zombie | INV | 候補 |
| A55 | S3 | ストレージクラス / Intelligent-Tiering 未適用 | rate | INV+LOG | 候補 |
| A56 | S3 | 空・放置バケット | zombie | INV | 候補 |
| A57 | EFS | IA / Archive lifecycle 未設定 | hygiene | INV | 候補 |
| A58 | EFS | プロビジョンスループット過大 | sizing | MON | 候補 |
| A59 | FSx | idle / 過大 | 複合 | MON | 候補 |
| A60 | Backup | 保持過剰・孤児リカバリポイント | hygiene | INV | 候補 |
| A61 | CloudWatch | Logs 保持無期限 / 空ロググループ | hygiene | INV | 候補 |
| A62 | CloudWatch | カスタムメトリクス・ダッシュボード・アラーム過多 | hygiene | INV+BIL | 候補 |
| A63 | CloudTrail | 重複トレイル(2 本目から課金) | hygiene | INV | 候補 |
| A64 | Config | ルール・レコーダ過多 | hygiene | INV+BIL | 候補 |
| A65 | Secrets Manager | stale シークレット | zombie | INV+LOG | 候補 |
| A66 | KMS | カスタマー管理キー未使用 | zombie | INV+LOG | 候補 |
| A67 | ACM | Private CA idle(高額固定費) | zombie | INV | 候補 |
| A68 | Route 53 | 空ホストゾーン / 未使用ヘルスチェック | zombie | INV | 候補 |
| A69 | CloudFront | 未使用ディストリビューション | zombie | MON | 候補 |
| A70 | VPC | Interface Endpoint 未使用(時間課金) | zombie | INV+MON | 候補 |
| A71 | TGW | Transit Gateway アタッチメント未使用 | zombie | MON | 候補 |
| A72 | VPN | Site-to-Site VPN idle | zombie | MON | 候補 |
| A73 | Direct Connect | 未使用 VIF / 低利用回線 | zombie | INV+MON | 候補 |
| A74 | SageMaker | notebook / endpoint idle | zombie | MON | 候補 |
| A75 | MQ / MSK | idle ブローカ・クラスタ | zombie | MON | 候補 |
| A76 | その他 | WorkSpaces 未使用 / Beanstalk stale 環境 / Lightsail 放置 | zombie | INV+LOG | 候補 |
Azure(37 件)
| ID | 領域 | 候補 | 分類 | データ | 状態 |
|---|---|---|---|---|---|
| Z1 | VM | 長期 stopped / deallocated | zombie | INV | 掲載済 |
| Z2 | VM | sizing(p99 実測) | sizing | MON | 候補 |
| Z3 | VM | 旧シリーズ / 世代移行 | rate | INV | 候補 |
| Z4 | VM | B シリーズ / Spot 化候補 | rate | MON | 候補 |
| Z5 | VM | Azure Hybrid Benefit 未適用(Windows / SQL) | rate | INV | 候補 |
| Z6 | VM | Reservation / Savings Plan カバレッジ不足・未使用予約 | rate | BIL | 候補 |
| Z7 | VM | dev/test 夜間停止 + Dev/Test 料金プラン未適用 | rate | MON/INV | 候補 |
| Z8 | Disk | 未アタッチ Managed Disk | zombie | INV | 掲載済 |
| Z9 | Disk | 古いスナップショット | zombie | INV | 掲載済 |
| Z10 | Disk | Premium → Standard SSD 移行 | rate | INV+MON | 候補 |
| Z11 | Disk | 容量・SKU 過大(プロビジョン IOPS) | sizing | MON | 候補 |
| Z12 | IP | 未割当 Public IP(Standard SKU) | zombie | INV | 掲載済 |
| Z13 | App Service | 空の App Service Plan(アプリ 0) | zombie | INV | 候補 |
| Z14 | App Service | Plan oversized / 旧 tier | 複合 | MON | 候補 |
| Z15 | Functions | Premium plan idle | zombie | MON | 候補 |
| Z16 | AKS | idle クラスタ / nodepool sizing | 複合 | MON | 候補 |
| Z17 | SQL Database | idle | zombie | MON | 候補 |
| Z18 | SQL Database | DTU / vCore 過大 | sizing | MON | 候補 |
| Z19 | SQL Database | elastic pool 化 / serverless 化候補 | rate | MON | 候補 |
| Z20 | Synapse | SQL pool 稼働しっぱなし(pause 未設定) | zombie | INV+MON | 候補 |
| Z21 | Cosmos DB | プロビジョン RU 過大 / autoscale 未設定 | sizing | MON | 候補 |
| Z22 | Redis | idle / oversized | 複合 | MON | 候補 |
| Z23 | Storage | lifecycle 未設定 | hygiene | INV | 候補 |
| Z24 | Storage | hot → cool / archive ティア最適化 | rate | INV+LOG | 候補 |
| Z25 | Storage | GRS / RA-GRS 過剰冗長 | rate | INV | 候補 |
| Z26 | App Gateway | 空バックエンド / idle | zombie | INV+MON | 候補 |
| Z27 | LB | Standard LB 未使用 | zombie | INV | 候補 |
| Z28 | VPN Gateway | idle(時間課金) | zombie | MON | 候補 |
| Z29 | ExpressRoute | 未使用回線 / 低利用 | zombie | INV+MON | 候補 |
| Z30 | Firewall | Azure Firewall idle(高額な常駐課金) | zombie | MON | 候補 |
| Z31 | Bastion | idle | zombie | LOG | 候補 |
| Z32 | NAT Gateway | idle | zombie | MON | 候補 |
| Z33 | Log Analytics | 保持過剰 / 取り込み過多 / commitment tier 未適用 | 複合 | INV+MON | 候補 |
| Z34 | App Insights | サンプリング未設定 | hygiene | INV | 候補 |
| Z35 | Recovery Services | stale バックアップ / vault の GRS 冗長 | hygiene | INV | 候補 |
| Z36 | Databricks | クラスタ auto-terminate 未設定 | hygiene | INV | 候補 |
| Z37 | HSM | Managed / Dedicated HSM idle(高額固定費) | zombie | INV | 候補 |
クラウド横断(5 件)
| ID | 候補 | 分類 | データ | 状態 |
|---|---|---|---|---|
| X1 | 未タグ / 未ラベルリソース(コストの帰属先が分からず削減判断が止まる) | hygiene | INV | 候補 |
| X2 | 予算・アラート未設定のプロジェクト / アカウント | hygiene | INV | 候補 |
| X3 | サンドボックス・検証環境の放置(プロジェクト / アカウント丸ごと) | zombie | INV+BIL | 候補 |
| X4 | 非本番環境のスケジュール停止ポリシー不在 | rate | INV+MON | 候補 |
| X5 | Kubernetes ワークロード rightsizing(GKE / EKS / AKS 共通) | sizing | MON | 候補 |
コード改善・分割の候補 — 暫定カテゴリ「refactor」(9 件)
設定変更(sizing / rate)では削れない無駄を、コード自体の改善・サービスの分割・処理の切り出しで削る候補群です。多くは他のルールの「解錠装置」として働きます — 割当が実測に張り付いていて sizing が縮小を提案できないとき、実測そのものを下げて sizing を発火可能にします(改善 → 縮小 → 請求で検証、という連鎖)。
検出は観測可能な症状(割当と実測の張り付き・負荷の二極化・空実行率など)だけを決定的なルールで扱います。原因の特定やコード文脈の確認が必要な場合は、finding と evidence を公開 APIから取得し、利用者側の道具で調べられます。削減額はコード変更の前には確定しないため約束せず、改善後の請求比較(Verify)で結果を確認します。
| ID | パターン | 検出する症状(観測する fact) | データ |
|---|---|---|---|
| R1 | 一部の重い処理が全体の割当を引き上げている → サービス分割(重い経路だけ別サービス / ジョブへ) | エンドポイント・処理別のレイテンシとリソース使用の二極化 | MON + CODE |
| R2 | メモリフットプリント削減(ファイル / レスポンスの全件メモリ読み → ストリーミング処理) | コード上の全読みパターン + 割当と実測の張り付き | CODE + MON |
| R3 | 重い低頻度処理の非同期切り出し(リクエスト経路 → ジョブ / キュー) | 低頻度・長時間のリクエストがレイテンシ上限とインスタンス保持を支配 | MON + CODE |
| R4 | 静的アセット配信のコンピュートからの切り出し(→ ストレージ / CDN。MS7 / MS11 のコード側検出) | 静的コンテンツをアプリケーションが配信している | CODE + MON |
| R5 | 依存・ベースイメージの削減で起動を速くし、min-instances 常駐を不要化(G48 / G50 の解錠) | イメージサイズ・起動時間と min-instances 設定の組合せ | CODE + MON |
| R6 | キャッシュ導入で下流(DB・外部 API)呼び出しを削減し、DB の sizing を解錠 | 同一クエリ・同一呼び出しの高頻度反復 | MON + CODE |
| R7 | 定期ポーリングのイベント駆動化 | 実行回数のうち「何もしなかった実行」の比率 | LOG + CODE |
| R8 | debug ログ・過剰テレメトリのコード起点削減(G86 の解錠) | リソース別のログ取り込み量 × コード上の出力箇所 | MON + CODE |
| R9 | 非効率クエリ(N+1 等)の改善で DB インスタンスの sizing を解錠(G29 / A26 と連鎖) | 少数のクエリ群が DB の CPU を支配 | LOG + CODE |
移行系の候補 — 暫定カテゴリ「migrate」(17 件)
使い方はそのままに、実行形態・サービス・プロバイダを変えることで料金モデルの不一致を解消する候補群です。既存 4 分類に収まらないため、暫定カテゴリ「migrate」としてまとめています(実行形態を変えず、コード側の改善で削る候補は上の refactor を参照)。移行は摩擦の低い順に 3 段あります:
| 段 | 内容 | 例 |
|---|---|---|
| 課金モード変更 | 同一サービス内の課金方式の切替 | G47(Cloud Run 常時割当 → リクエストベース)、A33(DynamoDB provisioned ⇔ on-demand)など — rate 分類として上の表に掲載済み |
| サービス間移行(MS) | 同じクラウド内で実行形態を変える | GCE → Cloud Run、EC2 → Lambda |
| クラウド間移行(M) | プロバイダをまたぐ | S3 → 互換オブジェクトストレージ |
下の段ほど削減の余地が大きい一方、移行の作業も大きくなります。サービス間移行は同一アカウント・同一請求内で完結するため、新しいプロバイダとの契約や認証の再設計が不要で、効果検証(Verify)も同じ請求書のサービス別内訳の比較で成立します(データの移動が必要かどうかは候補ごとに異なるため、各候補の互換性チェックリストに含めます)。
サービス間移行(同一クラウド内)
| ID | 移行ペア | 効く条件(観測する fact) | データ |
|---|---|---|---|
| MS1 | GCE VM → Cloud Run | HTTP リクエスト駆動・稼働率が低い・ステートレス(ローカルディスクへの永続化なし)・コンテナ化可能 | MON + CODE |
| MS2 | GCE の cron 用 VM → Cloud Run jobs + Scheduler | VM の稼働が定期ジョブの実行時だけ(稼働パターンが周期的) | MON |
| MS3 | GKE Standard → Autopilot | ノード利用率が低く、Pod 単位課金の方が安くなる形 | MON |
| MS4 | GKE → Cloud Run | サービス数が少なく、クラスタ常設費 + ノードのアイドルがリクエスト課金を上回る | INV + MON |
| MS5 | App Engine Flex → Cloud Run | 常駐課金とゼロスケールのミスマッチ | INV + MON |
| MS6 | EC2 → Lambda / Fargate | イベント駆動・短時間処理・稼働率が低い | MON + CODE |
| MS7 | EC2 上の静的サイト → S3 + CloudFront | 配信内容が静的 | CODE + MON |
| MS8 | EKS(小規模)→ ECS / Fargate | コントロールプレーン費 + ノード管理が規模に見合わない | INV + MON |
| MS9 | Redshift(低頻度)→ Athena + S3 | クエリ頻度が低く、常設クラスタが遊んでいる | MON/LOG |
| MS10 | Azure VM → App Service / Container Apps / Functions | MS1 / MS6 の Azure 版 | MON + CODE |
| MS11 | Azure VM 上の静的サイト → Static Web Apps | MS7 の Azure 版 | CODE |
| MS12 | Synapse 専用 SQL pool(低頻度)→ serverless SQL | Z20(pause 未設定)の一段先 — 形態自体を変える | MON |
クラウド間移行
| ID | 移行ペア | 効く条件(観測する fact) | データ |
|---|---|---|---|
| M1 | S3 / GCS → S3 互換オブジェクトストレージ(egress 無償系) | egress 費用がストレージ費用に対して高比率 + コードの API 利用が互換範囲内 | BIL + CODE |
| M2 | Cloud Run / Lambda → エッジ実行環境(CPU 時間課金系) | リクエスト駆動・I/O 待ち中心(壁時計課金と CPU 時間課金の差が効く形)+ 実行環境固有 API 非依存 | MON + CODE |
| M3 | CloudFront / Cloud CDN → 低単価 CDN | 配信 egress が支出の支配項 | BIL |
| M4 | 常時稼働 VM → 低単価 IaaS・専用サーバ | 利用率が高く安定(縮小では削れない)+ マネージド機能非依存 | MON + INV |
| M5 | マネージド Redis → 従量課金型の互換サービス | 接続・スループットが小さいのにインスタンス課金 | MON |
なお、同一クラウド内のネットワーク経路・配置の見直し(転送課金への偏りの解消)は、migrate ではなく既存の候補 G44 / A21(分類: 配置 / hygiene)が対象です。
migrate 候補の提案原則
- 移行の可否を断定しません。実測した利用パターンと、コードスキャンによる互換性チェックリスト(互換範囲外の API 呼び出し箇所数など、変更が必要な箇所の実数)を提示し、判断は読者(または手元の AI)が行います
- 所要日数は提示しません — 実測していない時間を約束しないためです。規模は変更が必要な箇所の実数で示します
- 概算額は移行元・移行先の静的価格表 × 実測利用量によるチルダ付き概算で、確定は移行後の請求比較(Verify)で行います
- 請求は下がるが運用の手間が増える方向(マネージドサービス → 自前運用)は提案しません。運用の人的コストは Ncost に観測できず、観測できないコストを増やす提案は Verified Result の誠実さと両立しないためです
- 特定ベンダーへの誘導を目的にしません。移行ペアは料金モデルの条件で選定し、判定条件はこのカタログで公開します(提案の中立性に関する約束は料金を参照)
このバックログの読み方
- INV だけで検出できる候補は、CLI の初回スキャンの守備範囲です。ストレージの lifecycle 未設定・バージョン蓄積、stale なシークレットや鍵、空の常駐リソースなど、権限追加なしで見つかる無駄はまだ多く残っています
- 常駐型の候補(Composer・Apigee・Azure Firewall・Synapse pool・Private CA など)は 1 件あたりの単価が大きい一方、該当する環境は限られます
- rate 系の本命(CUD / RI / Savings Plans のカバレッジ、Azure Hybrid Benefit)は請求データの接続が前提です。初回スキャンでは扱わず、請求データ接続後の対象になります
- migrate 系の多く(データ列に CODE を含む候補)は、手元のコードが判定材料になります。実行形態を変える移行の互換性はリポジトリを読まないと確かめられないものが多く、コードを預からない外部診断では出しにくい候補です。公開 API から finding と evidence を取得し、利用者側のコード検索や AI で確認する構想です(CODE の無い候補は稼働・請求データだけで検出できます)
計 238 件(GCP 94 / AWS 76 / Azure 37 / 横断 5 / refactor 9 / migrate 17)。うち 61 件がルールカタログに掲載済みです。すべての候補は採用時に判定規範(候補を捏造しない・時間ゲート・持続証明・Safety Tier)への適合を必須とし、適合できない候補は本数を増やすためには採用しません。