月20ドルのスタックで月商1万ドルの会社を複数運営する方法
(stevehanov.ca)- 単一のVPS、Go言語、SQLite、ローカルGPUを活用し、月20ドル以下のインフラ費用でMRR 1万ドル超のSaaS企業を複数運営するブートストラップ戦略
- AWSや複雑なクラウドオーケストレーションの代わりに、5〜10ドルのVPS 1台ですべてのサービスを運用し、インフラ管理ではなくリクエスト処理に集中
- バックエンド言語としてGoを選び、依存関係管理なしで単一バイナリにコンパイルしてサーバーへ配備する、極めてシンプルなデプロイプロセスを確立
- ローカルGPU(RTX 3090)でVLLMを実行し、AIバッチ処理コストをゼロにしつつ、ユーザー向け機能にのみOpenRouter経由でフロンティアモデルを利用
- ベンチャーキャピタルがなくてもコストをほぼゼロに保てば、事実上無限のランウェイを確保でき、プロダクト・マーケット・フィットを見つけるのに十分な時間を確保可能
リーンなサーバー運用戦略
- 2026年にWebアプリを立ち上げる一般的な方法は、AWSでEKSクラスター、RDSインスタンス、NAT Gatewayをプロビジョニングすることだが、この場合ユーザーが1人もいなくても月300ドル以上の支出が発生
- 代替として、LinodeまたはDigitalOceanで月5〜10ドルのVPSを借りて単一サーバーで運用
- 1GB RAMでも適切に使えば十分で、余裕が必要ならswapfileを使用
- サーバーが1台なら、ログの場所、クラッシュ原因、再起動方法を正確に把握可能
- AWSではなくVPSを選ぶ理由は、予測可能なコストとシンプルなアーキテクチャを維持できること
Go言語を選ぶ理由
- PythonやRubyは、インタープリタの起動やgunicornワーカー管理だけでRAMの半分を消費
- GoはWeb用途で圧倒的に優れた性能を提供し、厳格な型システムを備え、2026年時点でLLMが推論しやすい言語でもある
- Goの中核的な利点はデプロイプロセスの単純さであり、アプリケーション全体を単一の静的リンクバイナリにコンパイルし、ノートPCでビルドしてから
scpでサーバーへ転送して実行できる pip installによる依存関係地獄や仮想環境は不要で、肥大化したフレームワークなしでも本番レベルのWebサーバーを実装可能- 標準のGo標準ライブラリだけで、毎秒数万件のリクエストを処理できるサーバーを書ける
ローカルAI活用: バッチ処理コストのゼロ化
- 自宅にグラフィックカードがあるなら、無制限のAIクレジットをすでに持っているのと同じ
- eh-trade.caの構築時には、数千社の四半期報告書を分析する大規模な定性的株式リサーチが必要で、OpenAI APIを使えば数百ドルかかる可能性があった
- そこで代わりに、Facebook Marketplaceで900ドルで購入した**RTX 3090(24GB VRAM)**上でVLLMを動かし、AIプロバイダーに費用を払う必要をなくした
- ローカルAIのアップグレードパス:
- Ollamaから開始: 1行コマンド(
ollama run qwen3:32b)でセットアップでき、さまざまなモデルを即座に試せるため、プロンプト反復に最適 - VLLMで本番移行: Ollamaは同時リクエスト時にボトルネックになりがちだが、VLLMはPagedAttentionを使うことで飛躍的に高速。8〜16件の非同期リクエストを同時送信すると、GPUメモリ上でバッチ処理され、1件だけの処理時間とほぼ変わらない
- Transformer Lab: モデルの事前学習やファインチューニングが必要なとき、ローカルハードウェアで簡単に実行可能
- Ollamaから開始: 1行コマンド(
- これを管理するために自作したlaconic: 8Kコンテキストウィンドウに最適化されたエージェント研究ツールで、OSの仮想メモリマネージャのように会話の不要部分を「ページアウト」し、重要な事実だけをアクティブなLLMコンテキストに保持
- llmhub: すべてのLLMをprovider/endpoint/apikeyの組み合わせとして抽象化し、テキストと画像のI/Oをローカルでもクラウドでもシームレスに扱うツール
OpenRouter経由でのフロンティアモデル利用
- すべての処理をローカルで賄えるわけではなく、ユーザー向けの低遅延チャット対話にはClaude 3.5 SonnetやGPT-4oのような最先端の推論モデルが必要
- Anthropic、Google、OpenAIそれぞれの課金アカウント、APIキー、レート制限を管理する代わりに、OpenRouter1つに統合
- OpenAI互換の統合コードを1つ書くだけで、主要なフロンティアモデルすべてに即座にアクセス可能
- シームレスなフォールバックルーティングに対応: Anthropic APIに障害が起きても、自動的に同等のOpenAIモデルへ切り替わるため、ユーザーはエラー画面をまったく見ずに済み、複雑なリトライロジックも不要
GitHub Copilotを活用した費用対効果の高いAIコーディング
- 新しい高価なモデルが毎週登場する中、開発者はCursorのサブスクリプションやAnthropic APIキーに毎月数百ドルを支出
- 一方でClaude Opus 4.6を1日中使っても、月額コストはほぼ60ドルを超えない
- 秘訣はMicrosoftの価格モデル活用にあり、2023年にGitHub Copilotのサブスクリプションを購入して標準のVS Codeに接続
- Copilot最大のトリックは、Microsoftがトークン単位ではなくリクエスト単位で課金する点であり、「リクエスト」はチャットボックスに入力する1件の内容を指す。エージェントが30分かけてコードベース全体を分析し、数百のファイルを変更しても、費用は約0.04ドルにすぎない
- 最適な戦略は、厳格な成功基準を含む詳細なプロンプトを書き、「すべてのエラーが修正されるまで続行せよ」と指示して実行すること
SQLiteをあらゆるデータベースとして使う
- 新しいベンチャーを始めるときは、常にsqlite3をメインデータベースとして使用
- エンタープライズの観点では別プロセスのデータベースサーバーが必要だと考えがちだが、実際にはCインターフェースやメモリ経由で通信するローカルSQLiteファイルは、TCPネットワークホップを経るリモートPostgresサーバーより桁違いに高速
- 並行性の問題に関する誤解として、SQLiteはすべての書き込み時にデータベース全体をロックすると思われがちだが、**Write-Ahead Logging(WAL)**を有効にすれば解決する
PRAGMA journal_mode=WAL;とPRAGMA synchronous=NORMAL;を設定すると、読み取りと書き込みは互いをブロックしない- NVMeドライブ上の単一
.dbファイルで数千人の同時ユーザーを処理可能
- ユーザー認証を実装しやすくするため、自作ライブラリsmhanov/authを開発。利用中のデータベースと直接統合でき、登録、セッション、パスワードリセット、Google/Facebook/X/SAMLログインをサポート
結論: 複雑なインフラなしでスタートアップを構築する
- テック業界では、実際のビジネス構築には複雑なオーケストレーション、多額の月次AWS費用、数百万ドルのベンチャーキャピタルが必要だと主張されがちだが、実際はそうではない
- 単一VPS、静的コンパイルされたバイナリ、ローカルGPUハードウェアによるバッチAI処理、SQLiteの生の速さを組み合わせれば、月にコーヒー数杯分の価格でスケーラブルなスタートアップをブートストラップできる
- プロジェクトに無限のランウェイを与え、バーンレートを心配する代わりに、ユーザーの問題解決に集中する時間を確保できる
1件のコメント
Hacker Newsの意見
企業環境では 外部DBサーバー を使うべきだという認識が強いが、実際にはローカルのSQLiteファイルは、Cインターフェースやメモリ経由で通信する場合、リモートのPostgresよりはるかに速い
もちろんSQLiteは素晴らしいが、ローカルホストで Unix domain socket を使ってPostgresに接続すれば、ネットワークオーバーヘッドはほぼなくせる
SQLiteほど手軽に使えて、Postgresのすべての機能を活用でき、レポート実行や read replica の設定、HA構成もはるかに簡単になる
アプリと同じサーバーでPostgresを動かすのは、Kubernetesクラスターを立てるような過剰な備えとはまったく別次元の選択である
単一マシンで monolithic app を動かす場合、PostgresがSQLiteより提供する機能はそれほど多くない
SQLiteは Application functions でアプリ言語から直接拡張でき、Litestream のおかげでバックアップや複製もずっと改善される
ただしデフォルト設定はよくないので、読み取り/書き込み接続を分離し、アプリ側で write queue を直接管理する必要がある
SELECT 1クエリを実行すると、Postgresは2.77秒、SQLite(in-memory)は0.07秒で、大きな差が出る(ベンチマークリンク)リモートサーバーでも可能だっただろうが、はるかに複雑になっていたはずだ
その代わりDBをS3に置き、各インスタンスがコピーを受け取って並列処理した。SQLiteは、機能より 性能が必要な場合の実証済みの代替手段 である
多くの人は、最初から serverless, Kubernetes, multi-zone HA のような複雑な構成が必要だと信じている
「安いVPSでそのまま動かせばいい」と言うと、「スケーリングは?」「バックアップは?」「保守は?」といった反応が返ってくるが、実際には クラウドのマーケティング文句 を繰り返しているだけだ
こうした態度は、学習性無力感に近い
たとえば単純な入力フォームがいくつかあるだけのSPAに、Shadcn、Tailwind、React、Zod、Viteまで全部入れるようなものだ。保守負担が非常に大きい
こうした構成は「正解」ではあっても、状況に合った答え ではない
私はLinodeやDigitalOceanを使っていて、月5〜10ドルしか払っていない。1GB RAMで十分だ
複数のプロジェクトを1台の 専用サーバー にまとめれば、さらにコストを下げられる
たとえば Hetznerサーバーオークション で月40ユーロのものを使い、Proxmoxを載せて複数のVMを動かしている(Proxmoxリンク)
VMを15台作っても、1VMあたり2.66ユーロ程度なので 規模に対するコスト効率 が非常に高い
リファービッシュ機材ならバックアップは必須だが、どうせ必要な作業だ
HetznerやContabo、Scalewayのようなところは今でも安価な選択肢だ
SQLiteの WALモード が最大のコスト削減要因だと思う
PythonやNodeもGoと同じくらいうまく使える。Hetznerの4GB RAM、10TBネットワークのVPSが月5ドル程度だ
ただし専用サーバーを使うなら DBバックアップを頻繁に 行うべきで、セキュリティも自分で責任を持たなければならない
私はTerraformでSSHアクセスを自分のIPのみに制限し、Tailscale を設定してから公開SSHポートを閉じる形で構成している
私は Backblaze B2 を使っているが、Resticを使えば他のサービスにも簡単にバックアップできる
最近でもSSH試行のログが1時間で積み上がった。今ではパスワードログインは無効にし、Tailscale経由でしかアクセスしていない
インターネットに露出したサーバーは本当に危険だ
1GB RAM制限は不要だと思う。月20ドルあれば8GB RAMを得られ、キャッシュやDBに活用できる
15ドルの差は事業運営に大きな影響はない。5ドルVPSに合わせようとする考え方は ビジネス成長に役立たない
昔は128MBでもLAMPスタックを十分に動かせたし、今のWebサイトもそこまで複雑ではない
キャッシュなしでも1日1,700万リクエスト をさばけるのに、その前にインフラを4倍に増やすのは無駄だ
Macbook Neo 8GBモデルがその好例だ
WebSequenceDiagram は素晴らしい製品のように見える
しかし、技術実装より難しいのは 価値ある問題を見つけて、ユーザーに届けること だ。そこに本当の価値がある
私は2023年に GitHub Copilot を契約してVS Codeに接続し、それ以来ずっと使っている
Microsoftが リクエスト単位課金 をしている点が重要だ。1回のリクエストで数十分かけてコード全体を修正させても、約0.04ドルしかかからない
だから私は非常に具体的なプロンプトを書き、「すべてのエラーが解決するまで続けろ」と指示してからコーヒーを飲みに行く。Satya Nadellaが私の計算コストを補助 してくれているようなものだ
この記事で新しく学んだことはなかった。ほとんどが 基本的な助言 をAIが包み直したように感じた
タイトルだけ見て、アイデア発掘や成功するローンチ の話かと思っていた
念のため、私のように気になった人向けに言うと、MRR は “Monthly Recurring Revenue(月次経常収益)” を意味する
2か月しか運営していないのにARRを発表する人も見たことがある
クラウド中心の考え方は、多くの場合 複雑さとコストを不必要に増やす
中規模のVPSで十分なプロジェクトがほとんどだ
私たちの会社は60万ユーザーページを30ユーロのVPSで運用できていたのに、AWSへ移行して月800ユーロを払うようになった。得られたものは何もない
理由がないなら、何十年も問題なく動いてきたシンプルなサーバー方式を維持するのがよい
参考までに、StackOverflowも 強力なルートサーバー 数台で運用されていると聞いた