個人開発のインフラ選定は悩ましい。無料で始めたいが、スケールも考えたい。運用も楽したい。
半年間、3つの環境を並行運用してみた結果をまとめる。
比較対象
- Fly.io: コンテナベースのPaaS
- VPS: ConoHa、さくらVPSなど
- Cloudflare Workers: エッジコンピューティング
Fly.io
良い点
- 無料枠が実用的(256MB RAM × 3台)
- デプロイが楽(
fly deploy一発) - PostgreSQL、Redisもマネージド提供
課題
- 無料枠を超えると急に高くなる
- リージョン選択が限定的(東京はある)
- Dockerイメージのビルドが遅い時がある
# fly.toml
[http_service]
internal_port = 8080
force_https = true
auto_start_machines = true
auto_stop_machines = true # コスト削減に効く
VPS
良い点
- 月額固定で予算が読みやすい
- 何でもできる自由度
- 複数サービスを1台に同居可能
課題
- 運用は全部自分
- セキュリティパッチ、証明書更新、監視...
現実的な構成
# docker-compose.yml(Traefik + アプリ)
services:
traefik:
image: traefik:v3.0
command:
- "--providers.docker=true"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
ports:
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
app:
image: myapp:latest
labels:
- "traefik.http.routers.app.rule=Host(`app.example.com`)"
- "traefik.http.routers.app.tls.certresolver=letsencrypt"
Cloudflare Workers
良い点
- 無料枠が太い(10万リクエスト/日)
- コールドスタートがほぼない
- グローバルエッジで自動分散
課題
- 実行時間制限(CPU 10ms〜50ms)
- Node.js互換だが完全ではない
- D1(DB)はまだ発展途上
// Hono on Workers
import { Hono } from 'hono';
const app = new Hono();
app.get('/api/articles', async (c) => {
const db = c.env.DB;
const articles = await db.prepare('SELECT * FROM articles').all();
return c.json(articles);
});
export default app;
使い分けの結論
| ユースケース | 推奨 |
|---|---|
| 静的サイト + API少量 | Cloudflare Workers |
| 中規模Webアプリ | Fly.io |
| 複数サービス同居 | VPS |
| 機械学習推論 | VPS (GPU) or Modal |
おわり
「最適解」は要件次第。ただ、個人開発で最初に試すならFly.ioが無難。Cloudflare Workersは制約を理解してから。