本記事の目的
- 導入検討における調査作業備忘のため
- GCPでPostgreSQLを使おうと考えている方、特にGoogle Cloud SQL for PostgreSQLの導入を検討している方への知識の横展開のため
Google Cloud SQL for PostgreSQLとは
- Google Cloud SQL for PostgreSQL(以下、Cloud SQLと表記)は、Google Cloud Platform(GCP)の提供するフルマネージドのPostgreSQLサービス
- 公式サイト
- フルマネージドのサービスとは
- Cloudサービスにおいて、Cloudベンダーによってサービスより下層のシステムレイヤーが保守・運用されるサービス、ということ。本サービスの場合は、PostgreSQLのSWレイヤー以下(OS、Hypervisor、HW、NW、DCなど)がGoogleによって管理される
- DC配置(AZ配置)や、OS設定などの下層レイヤーの管理可否はCloudベンダーのSLAに委ねられるが、大抵、ベンダーが用意する管理用のGUIによってある程度の管理ができるようになっている。本サービスでもGCPコンソールにて管理用のGUIが用意されている
一般的なマネージドRDBサービスのメリットとデメリット
- メリット
- インスタンスの構築〜DBMSの導入までの作業が不要
- 保守・運用がGUI経由で行えるため簡素化される
- Cloudベンダーの定めるベストプラクティスのDB設定が適用される
- デメリット
- VMインスタンスをオーダーしPostgreSQLを手動で導入&保守運用する場合に比べるとコストはかかる(ただし手動での導入&保守運用にかかる人件費などの費用は考慮していないのでそこがポイントとなる)
- データサイズが大きくなるとコストメリットが得づらくなる
- データサイズ、およびコストを試算する
- (参考)コスト試算のためのツール:Google Cloud Platform Pricing Calculator
- NoSQLやBigQueryなども選択肢に入れ、本当にRDBが必要か検討する
- データサイズ、およびコストを試算する
- チューニング項目が限られているため、パフォーマンスチューニングなどの対応範囲が限られる
Google Cloud SQL for PostgreSQLの利用イメージ
- サービスのオーダーはGCPコンソールから行う。(要GCPアカウント)
- GCPアカウント取得手順、GCPコンソールログイン手順は割愛
- オーダー時には、使用するリソースタイプ(インスタンスタイプ、ストレージサイズなど)やネットワーク設定、セキュリティ設定などを指定する
- 設定によって、パブリックIPかプライベートIP、またはその両方がアタッチされる
- DBの定期バックアップ、リードレプリカ(ReadAccessの負荷分散用)の利用可否設定もできる
- 通信データや、保管データの暗号化実施有無も設定可能
- SSLは独自サーバー証明書が利用可能
- オーダーすると、ミドルウェアの導入された状態のVMインスタンスがデプロイされ、インターフェース情報(IPアドレス、ポート、DB、DBユーザー、PWなど)がGUI上から閲覧可能となる。
- オーダー後は、GCPの提供するGUIから保守・運用する
Google Cloud SQL for PostgreSQLの技術制約
- ネットワーク設定制約
- プライベートIPはBeta版であり、今後仕様変更の可能性があるため注意が必要
- パブリックIPを利用する場合は、以下のような方法でセキュリティを担保する必要がある
- 接続元IPレンジを指定した接続許可
- IAM認証と連携したユーザー制限
- Cloud SQL Proxy Clientを活用した利用制限
- Cloud SQL Proxy Clientを利用する場合はコンポーネントが増えるので注意
- パブリックIPを利用する場合は、以下のような方法でセキュリティを担保する必要がある
- プライベートIPはBeta版であり、今後仕様変更の可能性があるため注意が必要
- PostgreSQLバージョン制約
- デプロイ時にはPostgreSQLのメジャーバージョンを指定するが、選択肢が限られる
- 2018/11/3時点での最新は9.6、それ以降(10.xなど)は利用不可
- 構築時にはマイナーバージョンの指定は不可
- 構築後のマイナーバージョンアップデートは適用タイミングを制御可能(自動アップデートも可)
- メジャーバージョンのアップグレードは手作業によるデータエクスポート、インポートが必要
- チューニング項目の制約
- チューニングに関係する設定項目は限られる
- マシンタイプ(vCPU、メモリ)はオーダー後に変更可能
- ディスクタイプ(SSD、Magneticなど)はオーダー後の変更不可
- DBMS CLI(psqlコマンド)の範囲での設定変更は可能
- インデックスを貼るなど
- パーティショニングはバージョン制約により利用できない
- インデックスを貼るなど
-
postgresql.conf
の設定内容は変更できない
- チューニングに関係する設定項目は限られる