PostgreSQL: マネージドサービス vs セルフホスト比較ガイド
概要
本ドキュメントでは、AWS RDS for PostgreSQLなどのマネージドサービスを利用する場合と、 EC2やオンプレミスでセルフホストする場合の設定・運用の違いを明確にします。
┌─────────────────────────────────────────────────────────────────┐
│ PostgreSQL 運用形態比較 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ セルフホスト │ │ マネージドサービス │ │
│ │ (EC2/オンプレミス) │ │ (RDS/Aurora) │ │
│ ├──────────────────────┤ ├──────────────────────┤ │
│ │ ✓ 完全な制御権 │ │ ✓ 運用負荷軽減 │ │
│ │ ✓ カスタマイズ自由 │ │ ✓ 自動バックアップ │ │
│ │ ✓ コスト最適化可能 │ │ ✓ 自動フェイルオーバ │ │
│ │ ✗ 運用負荷大 │ │ ✗ 制約あり │ │
│ │ ✗ 専門知識必要 │ │ ✗ コスト高め │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
└────────────────────────────────────────────────── ───────────────┘
1. 設定・運用タスク比較一覧
凡例
- ✅ 必要: ユーザーが設定・実施する必要あり
- 🔧 一部必要: 部分的に設定が必要
- ❌ 不要/不可: AWS側で管理、またはアクセス不可
- 📋 推奨: 必須ではないが設定を推奨
1.1 インストール・初期設定 (dba-01)
| タスク | セルフホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| OSインストール | ✅ | ❌ | ❌ | RDS: AWSが管理 |
| PostgreSQLインストール | ✅ | ❌ | ❌ | RDS: インスタンス作成時に自動 |
| initdb実行 | ✅ | ❌ | ❌ | RDS: 自動実行 |
| postgresql.conf設定 | ✅ | 🔧 | 🔧 | RDS: Parameter Groupで設定 |
| pg_hba.conf設定 | ✅ | ❌ | ❌ | RDS: Security Groupで制御 |
| データディレクトリ設計 | ✅ | ❌ | ❌ | RDS: EBSストレージ自動管理 |
| WALディレクトリ分離 | ✅ | ❌ | ❌ | RDS: 自動最適化 |
| サービス登録 | ✅ | ❌ | ❌ | RDS: 自動起動管理 |
1.2 バックアップ・リカバリ (dba-02)
| タスク | セルフホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| pg_dump実行 | ✅ | ✅ | ✅ | 論理バックアップは両方で利用可能 |
| pg_basebackup | ✅ | ❌ | ❌ | RDS: スナップショットを使用 |
| WALアーカイブ設定 | ✅ | ❌ | ❌ | RDS: 自動でS3にアーカイブ |
| 自動バックアップ設定 | ✅ | 🔧 | 🔧 | RDS: 保持期間のみ設定 |
| PITR設定 | ✅ | 🔧 | 🔧 | RDS: 有効化と保持期間のみ |
| リストア手順 | ✅ | 🔧 | 🔧 | RDS: コンソール/CLIで実行 |
| バックアップ検証 | ✅ | 📋 | 📋 | RDS: スナップショットから復元テスト推奨 |
1.3 レプリケーション・HA (dba-03)
| タスク | セルフホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| ストリーミングレプリケーション | ✅ | ❌ | ❌ | RDS: リードレプリカで代替 |
| レプリケーションスロット | ✅ | ❌ | ❌ | RDS: 自動管理 |
| 同期レプリケーション設定 | ✅ | ❌ | ❌ | Aurora: 自動同期 |
| リードレプリカ作成 | ✅ | 🔧 | 🔧 | RDS: コンソールから作成 |
| フェイルオーバー設定 | ✅ | ❌ | ❌ | RDS: Multi-AZで自動 |
| Patroni/Pacemaker | ✅ | ❌ | ❌ | RDS: 不要 |
| HAProxy/PgBouncer | ✅ | 🔧 | 🔧 | RDS: RDS Proxyを使用可能 |
| VIP管理 | ✅ | ❌ | ❌ | RDS: エンドポイントで自動切替 |
1.4 セキュリティ (dba-04)
| タスク | セルフホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| pg_hba.conf設定 | ✅ | ❌ | ❌ | RDS: Security Groupで制御 |
| SSL/TLS証明書設定 | ✅ | 🔧 | 🔧 | RDS: AWS提供証明書を使用 |
| ロール・権限設定 | ✅ | ✅ | ✅ | 両方で必要(masterユーザー経由) |
| Row Level Security | ✅ | ✅ | ✅ | 両方で設定可能 |
| pgAudit設定 | ✅ | 🔧 | 🔧 | RDS: Parameter Groupで有効化 |
| ファイアウォール設定 | ✅ | 🔧 | 🔧 | RDS: Security Group/NACL |
| 暗号化設定 | ✅ | 🔧 | 🔧 | RDS: KMSで暗号化(作成時のみ) |
| IAM認証 | ❌ | 🔧 | 🔧 | RDS固有機能 |
1.5 監視 (dba-05)
| タスク | セルフホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| pg_stat_*ビュー参照 | ✅ | ✅ | ✅ | 両方で利用可能 |
| pg_stat_statements設定 | ✅ | 🔧 | 🔧 | RDS: Parameter Groupで有効化 |
| Prometheus/Grafana構築 | ✅ | 📋 | 📋 | RDS: CloudWatchが標準 |
| CloudWatch連携 | ❌ | ✅ | ✅ | RDS: 自動でメトリクス送信 |
| Performance Insights | ❌ | 🔧 | 🔧 | RDS固有機能(有効化推奨) |
| Enhanced Monitoring | ❌ | 🔧 | 🔧 | RDS固有(OS メトリクス) |
| ログ設定 | ✅ | 🔧 | 🔧 | RDS: Parameter Groupで設定 |
| アラート設定 | ✅ | 🔧 | 🔧 | RDS: CloudWatch Alarms使用 |
1.6 メンテナンス (dba-06)
| タスク | セルフ ホスト | RDS | Aurora | 備考 |
|---|---|---|---|---|
| VACUUM実行 | ✅ | ✅ | ✅ | autovacuumは両方で動作 |
| VACUUM FULL | ✅ | ✅ | ✅ | 必要に応じて手動実行 |
| ANALYZE | ✅ | ✅ | ✅ | 両方で実行可能 |
| REINDEX | ✅ | ✅ | ✅ | 両方で実行可能 |
| autovacuum調整 | ✅ | 🔧 | 🔧 | RDS: Parameter Groupで設定 |
| pg_repack | ✅ | 🔧 | 🔧 | RDS: 拡張機能として利用可能 |
| PostgreSQLアップグレード | ✅ | 🔧 | 🔧 | RDS: マネージドアップグレード |
| OSパッチ適用 | ✅ | ❌ | ❌ | RDS: メンテナンスウィンドウで自動 |
| ストレージ拡張 | ✅ | 🔧 | ❌ | Aurora: 自動拡張 |