個人開発のSaaSサブスク棚卸し:年12万円を削った乗り換え先5選
結論
個人開発で「とりあえず契約した」有料SaaSを棚卸しした結果、月1万円・年間12万円を削減できた。鍵は「使用率が低いマネージドサービスを、無料枠の広い競合かセルフホストへ移すこと」。以下の5本が削減額の大半を占めた。
| 旧サービス | 旧月額 | 乗り換え先 | 新月額 | 月削減 |
|---|---|---|---|---|
| Heroku Eco + DB | $12 | Fly.io / Railway 無料枠 | $0 | 約¥1,800 |
| Vercel Pro | $20 | Cloudflare Pages | $0 | 約¥3,000 |
| Auth0 | $0→従量 | Supabase Auth | $0 | 約¥2,000 |
| Datadog | $15 | Grafana Cloud Free | $0 | 約¥2,200 |
| Mailgun Foundation | $35 | Resend Free(3,000通/月) | $0 | 約¥1,000 |
根拠:個人開発の負荷では「Pro」はオーバースペック
個人開発のトラフィックは月数千〜数万PVが大半で、有料プランの上限に到達しない。にもかかわらずPro契約するのは「将来の不安」と「解約の面倒さ」が理由。実際の使用量をまず計測すべきだ。
# Vercelの帯域使用量を確認(無料枠100GB/月に対し実測を見る)
vercel inspect --usage
# Herokuのdyno稼働時間を確認
heroku ps -a your-app
筆者の場合、Vercel Proの帯域使用は月8GB(無料枠の8%)、Datadogもホスト1台のメトリクスしか送っておらず、Grafana Cloud Freeの10,000シリーズ枠で十分だった。
手順:ダウンタイムを出さずに移す
1. Heroku → Fly.io
flyctl launchがProcfileを自動検出する。Postgresも無料枠(共有1GB)で建つ。
flyctl launch --copy-config --name your-app
flyctl postgres create --name your-db --vm-size shared-cpu-1x
flyctl postgres attach your-db # DATABASE_URLを自動注入
flyctl deploy
DBはHeroku側からダンプして流し込む。
heroku pg:backups:capture -a old-app
heroku pg:backups:download -a old-app # latest.dump
pg_restore --no-owner --dataonly -d "$(fly ssh console -C 'echo $DATABASE_URL')" latest.dump
2. Vercel → Cloudflare Pages
ビルド設定をほぼそのまま移植できる。Next.jsなら@cloudflare/next-on-pagesを使う。
npm i -D @cloudflare/next-on-pages
npx @cloudflare/next-on-pages # .vercel/output/static を生成
npx wrangler pages deploy .vercel/output/static
DNSはCloudflareに移管済みなら切替が一瞬。旧Vercelは1週間並走させ、確認後に削除する。
3. Auth0 → Supabase Auth
JWTベースなので、フロントの検証ロジックは発行元を差し替えるだけ。
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(URL, ANON_KEY)
// メール+パスワード/OAuthが標準装備、MAU 50,000まで無料
await supabase.auth.signInWithOAuth({ provider: 'github' })
既存ユーザーはAuth0のExport APIでエクスポートし、supabase.auth.admin.createUser()で流す(パスワードハッシュ移行はbcryptならそのまま投入可)。
4. Datadog → Grafana Cloud
OpenTelemetry Collectorのexporter先を変えるだけで済む。
# otel-collector.yaml
exporters:
otlphttp:
endpoint: https://otlp-gateway-prod.grafana.net/otlp
headers:
authorization: "Basic ${GRAFANA_CLOUD_TOKEN}"
5. Mailgun → Resend
curl -X POST https://api.resend.com/emails \
-H "Authorization: Bearer $RESEND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"you@yourdomain.dev","to":"user@example.com","subject":"Hi","html":"<p>移行完了</p>"}'
まとめ
ポイントは3つ。(1) 解約前に実使用量を計測して過剰プランを特定する、(2) JWT・OTLP・SMTPなど標準プロトコルに乗っているサービスは差し替えコストが低い、(3) 旧サービスを1〜2週間並走させて安全に切る。年12万円は個人開発者にとってサーバー数年分。まずvercel inspect --usageから始めてほしい。
関連リンク
※自社商品(プロモーションを含みます)。
Top comments (0)