バイブコーディングしたらVercelから120万円請求された件
文章目录
バイブコーディングしたらVercelから120万円請求された件
個人で作っていたプロトタイプのサービスで、Vercelから1ヶ月分で約120万円の請求が届きました。完全にやらかしたhttps://x.com/kzkhykw/status/2102184182248317376?s=20
利用者は全くいない公開サイトで、アクセス解析を見ても一般の人は来ていない。それなのに、請求額だけが跳ね上がっていた。
原因は、プロトタイプで実験していたナレッジグラフの設計を、中途半端な知識のままバイブコーディングで組んでしまったこと。
また、友人にテストしてもらうために雑に公開したまま塩漬けにしていたこと、そこにOpenAIとAnthropicのAIボットの巡回が重なったことでした
どんなサービスを作っていたか
作っていたのは、スティーブ・ジョブズやアインシュタインのような歴史上の思考家と、出典付きで対話できるWebサービスで、結構筋はいいと思ってた。
コーディングAIと壁打ちしながら、いわゆるバイブコーディングの勢いで一気に組み上げた。
バイブコーディングについては、最低限ちゃんとできている自負はある。聞こえがいいのでこの単語を使っているが、ちゃんとハーネスを組んだ、ソフトウェアファクトリーの発想に基づく、エージェンティックコーディングである
https://youtu.be/fM4diA4Yr0g?si=BFbovwHe3Zxcdauz
サイトには約750人分の過去の思想家や著名人のプロフィールが並んでいて、人物を選ぶと、その人が残した著作や記録をもとに返答が返ってくる。返答には「どの原文に書かれているか」の出典が必ず付き、出典のない事実は言わない設計。さらに複数人を選ぶと、ひとつのテーマについて偉人たちが順番に意見を交わす討論機能も作っていて、手応えが良ければ有料化も考えていた。
中途半端な知識で組んだナレッジグラフ
問題の根っこは、ナレッジグラフの仕組みを曖昧なまま実装を進めてしまったところにある。
思考家たちの関係性や膨大なデータをどう持たせるか、データ構造のキャッシュや配信設計を深く詰めないまま、「とりあえず画面上で動いたからOK」としてしまった。あくまでもプロトタイプだったから。
さらに、身近な友人に触ってもらってフィードバックをもらいたかったので、手軽に見られるよう全体公開にしていた。一応ログイン認証は付けたものの、ナレッジグラフや一覧画面自体は未ログインでも開ける状態のまま...
何人かの友人にテストしてもらったあとは開発がストップし、本番環境の更新も止まったまま、文字どおり塩漬けにしていた。「検証用だし、誰にもURLを教えていないから大丈夫だろう」と放置していたのが、すべての始まりだった。
750人分のナレッジデータの取得に2.9MB
トップページを開いたときに裏で何が起きていたかというと、ナレッジグラフのデータを捌くためにかなり無駄の多い作りになっていた。
トップを表示するたびに、サーバーが自分の公開URLへ約750人全員分のナレッジデータを取りに行き、それを転送し、受け取ったデータをページにレンダリングして返す。キャッシュは保存しない設定になっていたため、アクセスがあるたびに毎回この重い処理が最初から走り直す。
Vercelに調べてもらったところ、この一連のやりとりで1回あたり約2.9MB。キャッシュは当然ミスり続けていた。アクセス急増の前後を見ても、1回あたりに流れるデータ量は930〜950KBほどで変わっていない。
変わったのは、単純にリクエストの回数だけだった。
巡回していたのは人間ではなくAnthropic社のClaudeBotとOpenAI社のGPTBotで、いわゆるAIbotのクローラーで、公開されている情報である。
アクセスが跳ねた日は、1日で約250万回叩かれていた。その日だけで約7.5万円。それ以前の時期でも、1日約41万回、約1.2万円ペースでフラットに叩かれ続けていた。土日も平日も関係がない。
急増したある24時間のログを洗ってみると、アクセスの大半は次の2つのIPで説明がついた。約43万回と約5万回、合わせて48万回。
-
ClaudeBot(216.73.216.102 / Anthropicの公開IP範囲)
-
GPTBot(74.7.243.215 / OpenAIの公開IP範囲)
Vercel側でも調査してもらい、なりすましではない本物のクローラーだと確認が取れた。人がたくさん訪れてバズったわけではなく、AIボットが約750人分のデータが入った重いトップページを休まず取得し続けていただけだった。
請求内訳の9割はFast Data TransferとFast Origin Transfer
請求総額約120万円(利用実績ベースで約110万円+消費税10%)の内訳を見ると、大半がデータ転送量だった。
Vercelの項目ごとの内訳は次のようになっている。
-
Fast Data Transfer(エッジから訪問者へのデータ送信): 約80万円
-
Fast Origin Transfer(オリジンサーバーからエッジへの転送): 約30万円
-
Functions(実行時間、呼び出し回数、メモリ、プラン料金など): 合計で約5万円
私はVercelのヘビーユーザーだったので、20を超えるプロジェクトがあり、うち4つはユーザーがそこそこいるプロジェクト。けど他のサイトの利用料は合計しても数百円レベル。完全に、このサイトのトップページだけが引き起こしてて「Fast Data Transfer」と「Fast Origin Transfer」の転送量だけで約120万円が吹き飛んでいた。
Vercelサポートとの交渉
Xでの投稿には、すぐにVercelのエンジニアの日本人の方が、ボランティアで即座に返信をしていただけた。このタイミングで、すこし焦りも減り、起きてしまったのは仕方ないからちゃんと向き合おうという気持ちになった。
https://x.com/jrsyo/status/2102240848016740476?s=20
問い合わせの後、最初のVercelサポートからの提案は、「急増した分」の25%を割り引くというもので、減額幅は約17万円だった。
これに対して、「急増する前のベースライン(床の部分)からして、すでに同じクローラーによるものだった」というログを伝えた。Vercel側も計算の漏れを理解してくれて、転送量全体をベースに再計算し、追加で約10万円を引いてくれた。
値引きの合計は約30万円。残りの支払いはおよそ90万円になった。真摯に対応してくれたVercelのサポートにはとても感謝している。
AI企業への不信感
一方で、これだけのトラフィックを一方的に送り込んできた当事者であるOpenAIとAnthropicの2社にもログを添えて問い合わせを送ったのだが、いまだに返信すら一切ない。
個人開発の小さなサイトに対して猛烈な勢いでアクセスを浴びせ、100万円単位の実害が出ているにもかかわらず、完全に無視を決め込まれている状態には正直強い不信感が残っている。Web上のデータを学習や推論のために吸い上げる側のプラットフォームとして、この対応はどうなんだろうかと思ってしまう。
事前点検ツール「請求ハーネス」を作った
発生してしまった請求はもう払うしかないけれど、同じ穴をそのまま放置しておくのは気持ちが悪かった。そこで、実験的な事前点検ツールとして「請求ハーネス」を作って公開した。
まだ汎用的に使えるものではないし、どこまで防げるかも手探りだけど、請求書が届いてから気づく状態よりはマシかなと思っている。
公開したポストはこちら。 https://x.com/kzkhykw/status/2102249151031558314
いまの状態と、再開に向けて
サイトは請求が発覚した直後に止めてある。今の構造のまま再開したら、また同じことが起きるので。
たとえプロトタイプでもプロジェクトを動かす前に、最低でも次の手当てが必要になる。Vercelのサポート担当の方から教えてもらったもの。
-
ClaudeBotとGPTBotをrobots.txtやWAFで弾く
-
トップページを毎回SSRせず、キャッシュを効かせるか静的化する
-
コスト上限に達したらプロジェクトを自動停止させる設定を入れる
人が誰も見ていない公開サイトでも、クローラーは容赦なくやってくる。1リクエストの処理が重いと、回数が掛け算されただけで簡単に請求が跳ね上がる。
ナレッジグラフのような複雑なものを中途半端な知識のまま勢いで組み、友人テスト用だからと雑に公開して放置すると痛い目を見る。まさにバイブコーディングの落とし穴として、ものすごく高い授業料だったなと思う。
こういう失敗は学びでもあるが、Xの民度としては上叩きしろがあるので伸びるだろうと思いXで公開したら想定以上の反響で、後日数万円X社からも支払われる予定だ。


