Vercel Hobbyの関数ストレージが100%になった話|main直pushの本番デプロイ履歴とRetention設定

Build Notes / 制作・サイト

#Vercel · #Hobby · #デプロイ · #star-moti · #Build Notes · #ブログ運用 · #インフラ

公開
更新

Vercel Hobbyの関数ストレージが100%になった話|main直pushの本番デプロイ履歴とRetention設定

star-moti の改修ログは サイト改修ハブ にまとめています。今回はインフラ側の小トラブルメモです。

Vercelから、無料チーム(Hobby)の 関数ストレージ無料枠(10GB)が100% になった、という通知が来ました。「サイトが成長しています!」みたいな明るい文面だけど、中身は ストレージ満杯アラート。放置すると、新規デプロイが止まったり失敗したりすることがあります。

Vercelから届いた通知メール。関数ストレージ無料枠10GBが100%になった旨と、Proへのアップグレード案内(チーム名はぼかし)

結論から言うと、だいたい main にずっと直接 push し続けて、Production デプロイの履歴が積み上がった のが本体、という理解です。


1. 何が起きたのか?

  • 対象: このサイトを載せている 無料チーム(Hobby)
  • 通知: 関数ストレージ の無料枠 10GB が 100%
  • 候補アクション: Proへアップグレード/利用の最適化・プロジェクト削除など

まず Pro 課金に飛びつく前に、履歴の掃除と保持期間の見直し で足りるか見ました。

Vercel側では、デプロイの出力や関数バンドルの保持がストレージに効きます。Deployment Storage と Functions Storage は別メーターですが、どちらも「残っているデプロイの数 × 1本あたりの大きさ」で積み上がりやすい、という感覚です。


2. なぜ Preview削除だけでは足りないのか?

最初は「Previewを消そう」と思いました。Deployments一覧を見ると、しかし 全部 Production に見える。

理由は2つあります。

  1. フィルタで Environment Production が付いていると、Productionしか出ない
    × で外すと Preview があれば見える。
  2. star-moti は main 直push運用
    記事を出すたびに本番デプロイが作られる。PRプレビューをほとんど使っていないので、履歴の大半が Production。

つまり、「Previewを消す」手順自体は正しいけど、このサイトのストレージ圧迫の主因は 古い本番デプロイの山 の可能性が高い、という話でした。

main に永遠に(というか頻繁に)push し続けた結果、というのはだいたいその理解で合っています(^^;


3. 対処の方針

やり方向き
古い Production を手で Delete今すぐ枠を空けたいとき。いまの本番(一番上)は消さない
Deployment Retention Policy を短くする今後の自動掃除。数が多いときの本命
使ってないプロジェクト削除チームに別プロジェクトがあるとき
Pro課金掃除してもすぐ再逼迫するときの検討

手削除は、公式だとだいたい「一覧 → デプロイを開く → ⋯ → Delete」で 1個ずつ になりがち。ブログ運用で履歴が大量なら、Retentionの方が楽です。


4. Retentionの設定場所(ここ)

設定は Settings を開いて、左メニューの Build and Deployment を選べば そこにあります。ページ内の Deployment Retention Policy が該当ブロックです。

導線のイメージ:

プロジェクト Overview の Production Deployment 右上「⋯」メニュー。赤い矢印で Settings を示している

手順:

  1. 対象プロジェクトを開く
  2. Settings を開く(Overview の ⋯ メニューからも可)
  3. 左メニューで Build and Deployment を選ぶ
  4. Deployment Retention Policy までスクロールして、保持期間を短くして Save

※ 似た名前の Deployment Protection(アクセス制限)とは別物です。引っかかりやすいので注意。

Build and Deployment 画面。赤い矢印で左メニューの Build and Deployment と、Deployment Retention Policy(1 week / 2 weeks)を示している

今回入れた値

項目設定
Canceled Deployments1 week
Errored Deployments1 week
Pre-Production Deployments1 week
Production Deployments2 weeks

ロールバック用に本番履歴を少し残しつつ、ストレージは抑える、というバランスです。


5. 最新の本番は消えない?

いま本番に紐づいている最新デプロイは残る 想定です。

Retentionは「古い履歴を期限後に消す」仕組みで、動いている本番を落とすためのものではありません。Hobbyだと直近の本番 Ready が数個は例外で残る、といった説明もあります。

消えたあともすぐ全部消えるわけではなく、裏側のジョブで順に処理されることがあります。Usageの数値反映も遅れることがあるので、「保存した瞬間に0%」にはならない、くらいの心づもりでOKです。


6. いま時点のまとめ

  1. Hobbyの関数ストレージ100%通知は、課金より先に デプロイ履歴の圧迫 を疑う
  2. main直push運用だと、履歴の大半が Production。Preview掃除だけでは足りないことがある
  3. 手削除は「今の本番以外の古いProduction」
  4. 本命は Settings → Build and Deployment(その中の Retention)
  5. 最新本番は残る。あとは期限超えから順に減っていく想定

同じように「記事を出すたびに main へ push」している個人サイト勢の、備忘録になればうれしいです(^^)