
2025/12/21 0:43
自前でPostgreSQLを運用してみてください。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
この記事では、適切に調整されたセルフホスト型PostgreSQLデプロイメントが速度・安定性・コスト面でAWS RDSと同等またはそれを上回ることができると主張しています。2年間の手動移行はわずか約30分の障害時間に抑えられ、実際の作業は4時間程度+チームが慣れるまで数週間でした。継続的な保守はほぼ不要で、週に≈10分、月に30分、四半期ごとにオプションで2時間程度です。
同等のRDSインスタンス(db.r6g.xlarge 1か月あたり$328)を、32コア・256 GB RAM の専用サーバーで置き換えることができ、月額費用はほぼ同じになります。RDSはChef/Puppet/Ansible、EBSスナップショット、PgBouncer、CloudWatch など便利なツールを提供しますが、基盤となるPostgreSQLエンジン自体には変化がないため、慎重にチューニングすればパフォーマンスはマッチまたは上回ることが可能です。
主なチューニングポイントは以下の通りです:
≈ RAM の25%shared_buffers
≈ RAM の75%effective_cache_size- 保守的な
、十分に大きいwork_memmaintenance_work_mem - PgBouncer を用いた接続プール(
、ログを有効化)max_connections=200 - NVMe SSD 設定:
を低く設定(1.1 代わりに 4.0)、random_page_cost
を維持、seq_page_cost=1.0
を高める(約200)effective_io_concurrency - WAL 設定:
、wal_level=replica
、max_wal_size=2 GB
、min_wal_size=1 GBcheckpoint_completion_target=0.9
運用タスクには、週次のバックアップ検証、スロークエリレビュー、ディスク空き容量監視;月次で更新・ローテーション・キャパシティ計画;四半期ごとの最適化と災害復旧テストが含まれます。
2017年のUS‑East‑1障害はRDSも失敗する可能性を示し、メンテナンスウィンドウを完全にコントロールできる価値を強調しています。ほとんどのチームにはセルフホスティングが推奨されますが、例外として非常に小規模なスタートアップ(高速APIセットアップ)、専門的DBエンジニアを持つ大企業、またはBAA/コンプライアンス証明が必要な規制ワークロードがあります。
この記事ではハイブリッドの未来を予測しています。価値を追加できる箇所でマネージドサービスを利用し、コアPostgreSQLワークロードは専用ハードウェア上で実行することでコスト削減・チューニング制御向上・プロバイダー障害のリスク低減を図ります。
本文
自分でデータベースをホスティングすると、恐ろしいイメージが付きやすいですが、実際には意外にシンプルに運用できることが多いです。
「危険だ」と言われるストーリー
-
自前のデータベースはリスクが高い
クラウドプロバイダーと同等の信頼性をどう確保するか? -
専任のデータベースエンジニアが必要
自分で採用したり、外部に委託したりする手間がある。
これらはマーケティングによって大げさに語られがちですが、実際にはほとんどのクラウドホストもオープンソースのPostgreSQLをわずかに改変したバージョンを使っています。
本当に重要なのは
- パフォーマンスはクエリ次第 – 悪く書かれたクエリがどんな環境でも性能を落とします。
- 抽象化は診断情報を隠すこともある – 直接制御できることでベンチマークや微調整が可能になります。
私はサードパーティのサービスでデータ破損を経験した回数も自前で運用した場合と同等でした。ところが、自分でPostgreSQLを2年間稼働させた結果は:
- マニュアル移行時に30分以内で完了
- コスト低く高速・安定した運用
- 夜間の安心感
歴史的背景
| 時代 | 典型的な構成 | クラウドへのシフト |
|---|---|---|
| 1980年代〜2000年代初頭 | アプリケーションサーバーと同一マシン上のオンプレミスDB | なし – ローカル通信が高速だったため |
| 2009年 | Amazon RDS が登場:バックアップ、パッチ適用、HA、モニタリングを価格帯で提供 | 初めてのマネージドサービス |
| ~2015年 | クラウド採用加速;インフラは「重い作業」と見なされるように | マネージドサービスが標準化 |
| 2025年 | RDS の価格上昇(例: ≈ $328/月) | 自前ホスティングのコスト効果が高まる |
クラウドプロバイダーが実際に走らせているもの
AWS RDS などは基本的に:
- 標準PostgreSQL + AWS の監視フック
- EBS スナップショットでのカスタムバックアップ
- Chef/Puppet/Ansible 等による設定管理
- ロードバランサー & PgBouncer による接続プール
- CloudWatch 連携
- 自動フェイルオーバースクリプト
エンジン自体は変更されていません。価値は運用ツールにあります。
移行経験
RDS から DigitalOcean の専用ドロップレット(16 vCPU / 32 GB RAM / 400 GB ディスク)へ移行したケース:
- ダンプ&リストア – 性能は同等、時にはチューニングパラメータで向上
- 初期作業 – 約4時間の手動作業 + 習得に数週間
- 運用サイクル(デプロイごと)
| 頻度 | タスク | 時間 |
|---|---|---|
| 週1回 | バックアップ検証、スロークエリレビュー、ディスク容量トレンド | 10分 |
| 月1回 | セキュリティ更新、バックアップローテーション、キャパシティプランニング | 30分 |
| 四半期(任意) | ダッシュボード更新、設定最適化、DRテスト | 2時間 |
主な違いは「インシデント対応を自前で行う」点です。クラウド障害は依然として発生しますが、その解決策はあなたの手にあります。
自前ホスティングが適さないケース
- 初心者 – Postgres をリモート API として扱い、プロトタイピングを迅速化。
- 大規模企業 – 専任 DB エンジニアとクラウドのスケールメリットを活かすほうが効率的な場合もある。
- 規制対象ワークロード(PCI-DSS、HIPAA 等) – 署名済み BAA やコンプライアンス証明を必要とするマネージドプラットフォームが必須。
主なチューニングパラメータ
| パラメータ | 推奨設定 | 理由 |
|---|---|---|
| RAM の 25% | クエリキャッシュの核 |
| RAM の 75% | OS キャッシュをプランナーに知らせる |
| または約32MB | 操作ごとのメモリ |
| 1–2GB | Vacuum・インデックス操作用 |
接続管理
max_connections = 200 shared_preload_libraries = 'pg_stat_statements' log_connections = on log_disconnections = on
PgBouncer 等のプールャーを使い、接続ごとのオーバーヘッドを削減。
NVMe ストレージチューニング
random_page_cost = 1.1 seq_page_cost = 1.0 effective_io_concurrency = 200
NVMe SSD のランダム・シーケンシャル読み込みがほぼ等価であることを反映し、プランナーの判断を改善。
WAL 設定
wal_level = replica max_wal_size = 2GB min_wal_size = 1GB checkpoint_completion_target = 0.9
耐久性と I/O パフォーマンスのバランスを取る。
結論
自前ホスティングは万能解ではありませんが、マネージドサービスへの偏りは過剰です。適切な範囲で自前運用を行えば、同等の信頼性を低コストかつ高い制御力で実現できます。
実践的次のステップ:
RDS で月額 $200 を超えているなら、Hetzner や OVH のような安価プロバイダーでテストサーバーを立ち上げ、非重要データベースを移行してみてください。将来のインフラはハイブリッドが主流になるでしょう:本当に価値を付けるマネージドサービスのみ利用し、コスト削減と信頼性確保に自前ホスティングを活用する―これが最適な戦略です。