Granianが『Python本番サーバー』の常識を変える
GranianはRust基盤で書かれた高速Python WSGI/ASGI/RSGIサーバーで、Gunicorn・Uvicorn等の従来サーバーに対し2〜10倍のスループット改善を実現します。FastAPI・Django・Flask等の主要フレームワーク互換で、既存アプリのgunicornをgranianに置き換えるだけで導入可能。Rustのhyper・tokio基盤による低レイテンシ・低リソースが特徴です。2024〜2025年に1.0安定版リリース・本番採用例が急増しています。
採用すべき5つのシグナル
- Gunicornのワーカープロセス管理に詰まっている
- UvicornのASGIサーバーで性能不足
- 同時接続数・リクエスト/秒のスケールが必要
- メモリ・CPU使用量を削減したい
- FastAPI・Djangoの本番運用負荷を下げたい
Gunicorn/Uvicorn/Granian比較
Gunicorn: WSGI標準・実績豊富・成熟。シンプル。
Uvicorn: ASGI標準・FastAPI公式推奨・Python実装。
Granian: Rust基盤・WSGI+ASGI+RSGI・最速。新しい。
Hypercorn: ASGI/HTTP2/WebSocket強い。Python実装。
使い分け: 安定実績はGunicorn・最高性能はGranian。
Granianの主要機能
- マルチプロトコル: WSGI・ASGI・RSGI(独自プロトコル)対応
- HTTP/1.1・HTTP/2・WebSocket: 全標準サポート
- マルチプロセス・マルチスレッド: GIL回避の高並列実行
- Worker Restart: クラッシュ自動復旧
- Health Check: 組み込みヘルスエンドポイント
- Graceful Shutdown: 接続中リクエスト完了後の終了
実装の基本パターン
(1) インストール: pip install granian
(2) 起動: granian --interface asgi myapp:app
(3) ワーカー数: --workers 4
(4) ポート・ホスト: --port 8000 --host 0.0.0.0
(5) 本番設定: granian.tomlで設定管理
パフォーマンスベンチマーク
- Gunicornの2〜10倍のスループット(ワークロード次第)
- レイテンシ: 50〜80%削減
- メモリ: 30〜50%削減
- CPU: 20〜40%削減
- 実測: シンプルなJSON APIで100,000 req/sec超
本番採用の判断基準
(1) 性能ボトルネック: Pythonアプリの性能が頭打ちならば移行価値
(2) 安定性: 1.0以降本番運用例増加・致命的バグなし
(3) 設定の互換性: Gunicornからの移行は数行の設定変更
(4) 監視ツール統合: Datadog/Sentry等の標準SDKがそのまま動く
(5) 実装言語: Rustなのでビルドエラー時はPythonエンジニアでは対応困難
実装で詰まる3つの落とし穴
- WebSocket設定: ASGI WebSocketは追加設定必要
- 静的ファイル配信: Granianは動的処理特化・静的はNginx・S3・CloudFront経由
- ログフォーマット: Gunicornと異なるログ形式・パーサ調整
30日プラン
- 1週目: ローカル環境にGranianインストール・既存FastAPIアプリで試運転
- 2週目: 本番設定・ワーカー数チューニング・ベンチマーク
- 3週目: 本番投入・Gunicornとの並行運用
- 4週目: 完全移行・モニタリング設定
関連リンク
Pythonは Python async実践、FastAPIは FastAPI実践、Djangoは Django実践 を参照してください。Bunとの比較は Bun深掘り もどうぞ。