Traffine I/O

日本語

2023-06-01

AlloyDB

AlloyDBとは

AlloyDBは、Google Cloudが提供するPostgreSQLに対応した完全マネージドサービスです。その優れたパフォーマンス、可用性、スケーラビリティにより、ルイジサービスのCloud SQLを凌ぐ存在です。

独自のストレージメカニズムを備えたAlloyDBは、標準のPostgreSQLよりも大幅な速度向上を実現しています。トランザクション処理は通常の4倍以上高速化され、分析処理は最大100倍の速さに達することができます。

優れたパフォーマンスに加えて、AlloyDBは操作の容易さでも優れています。バックアップ、パッチ適用、ストレージの拡張など、多くの操作タスクが自動化されています。AlloyDBはまた、99.99%の高可用性SLAを保証しています。

AlloyDBは2022年5月11日にプレビュー版がリリースされ、2022年12月13日に一般提供が開始されました。その導入と後続の開発により、AlloyDBはエンタープライズシステムの厳格な非機能要件を満たすことができるデータベースとして位置づけられました。

PostgreSQLとの互換性

AlloyDBは、PostgreSQLと100%の互換性を誇っています。この高い互換性により、すでにPostgreSQLに精通している開発者は、同じデータベース接続(例:psqlコマンドライン)や他のPostgreSQLクライアントを利用することができます。

AlloyDBでは、通常はpostgresql.confで設定されるパラメータをデータベースフラグとして管理します。これらはWebコンソールまたはgcloudコマンドを通じて管理することができます。

価格設定

AlloyDBは使用量に応じた課金モデルを採用しており、実際に使用したリソースに対してのみ料金が発生します。価格は以下の要素に基づいて決定されます。

  • 割り当てられたCPU/メモリ
  • 使用されるストレージ(バックアップを含む)
  • ネットワーキング(他のリージョンへの出力のみ)

AlloyDBは「プライマリインスタンス」と「読み取りプールノード」で構成されており、それぞれの仕様(CPU/メモリ)を指定することができます。請求はインスタンスの存在時間に基づいて行われ、時間ごとに料金が発生します。

ストレージはデータベースの必要に応じて自動的に割り当てられ、必要に応じてスケーリングされます。使用したデータサイズに対してのみ料金が発生します。このストレージの自動スケーリングにより、必要なものだけを支払うことができ、コスト効率が向上し、手動でのサイズ変更の必要性がありません。

https://cloud.google.com/alloydb/pricing

アーキテクチャ

AlloyDBは以下のアーキテクチャで構成されています。

AlloyDB architecture
AlloyDB overview

クラスタ

AlloyDB for PostgreSQLにおける基本的な管理単位はクラスタです。

プライマリインスタンス

各クラスタにはプライマリインスタンスがあります。高可用性のセットアップでは、プライマリインスタンスにはフェールオーバー用のレプリカ(スタンバイインスタンス)が維持されます。クライアントは読み書きアクセスをこのプライマリインスタンスに直接指示し、単一のIPアドレスが割り当てられます。このIPアドレスはフェールオーバー時でも一定であり、設定変更なしに一定のダウンタイム後にアプリケーションが再接続できるようになります。

テスト目的のために手動フェールオーバーオプションも利用できます。

読み取りプールインスタンス

読み取りプールインスタンスは、単一のノードではなく、読み取り専用アクセスを提供するノードグループです。各読み取りプールインスタンスには読み取り操作用のIPアドレスが割り当てられ、このIPアドレスへのアクセスは読み取りプールインスタンス内のいずれかのノードに割り当てられます。ノードの数を増減することで、読み取りワークロードをバランスさせることができます。

プライマリインスタンスは必須ですが、読み取りプールインスタンスの作成は任意です。作成することでコストは増えますが、特に分析目的などでの読み取りワークロードの分散が可能となります。

ネットワーキング

AlloyDBクラスタは、ユーザー管理のVPC内ではなく、Google Cloud管理のVPC内で作成されます。これは重要な機能であり、Private Service Accessと呼ばれるメカニズムによって実現されています。クラスタが配置されるGoogle Cloudによって管理されるネットワークは、Service Producer Networkと呼ばれ、Cloud SQLやCloud Memorystoreと共有されるシステムです。

Service Producer NetworkとユーザーのVPCはVPCピアリングを介して接続されます。

クロスリージョンレプリケーション

AlloyDBはオプションのクロスリージョンレプリケーションをサポートしています。この機能を有効にすると、プライマリクラスタとは異なるリージョンにセカンダリクラスタが作成され、データが非同期でレプリケーションされます。

セカンダリクラスタは読み取り専用ですが、手動でプライマリに昇格することも可能です。この機能により、災害回復のソリューションを提供するだけでなく、読み取り遅延を軽減するために、読み取り専用のセカンダリクラスタをユーザーやアプリケーションに近い場所に配置することができます。

https://cloud.google.com/alloydb/docs/cross-region-replication/about-cross-region-replication

スケーラビリティ

プライマリインスタンスは読み書き操作を担当する単一のインスタンスです。プライマリインスタンスでは水平スケーリングはできませんが、仕様の変更を通じた垂直スケーリングは可能です。一方、読み取りプールインスタンスは読み取り専用のノードのクラスタです。これらのインスタンスでは、ノード数を増減させることで水平スケーリングやスペックのアップグレードによる垂直スケーリングが柔軟に行えます。

https://cloud.google.com/alloydb/docs/instance-read-pool-scale

バックアップ

バックアップはどのデータベース管理システムにおいても重要な要素ですが、Google CloudのAlloyDBでは、Continuous(連続)、On-Demand、Automated(自動)の3つのバックアップタイプが提供されています。バックアッププロセスはストレージレイヤーで完了するため、パフォーマンスに影響を与えません。

https://cloud.google.com/alloydb/docs/backup/overview

Continuousバックアップ

AlloyDBでは、Continuousバックアップがデフォルトで有効になっています。これにより、ポイントインタイムリカバリが可能となり、データの管理とデータ損失の軽減に重要な役割を果たします。

On-Demandバックアップ

On-Demandバックアップは手動で実行されるバックアップです。Google Cloudコンソールまたはgcloudコマンドを使用してバックアップを開始することができます。このバックアップタイプは、バックアップの実行タイミングと頻度を柔軟に制御することができます。

Automatedバックアップ

自動バックアップは予定されたスケジュールに基づいて実行され、デフォルトで有効になっています。手動の介入を必要とせず、ヒューマンエラーの可能性を低減する利点があります。デフォルトでは、これらのバックアップは14日間保持されます。

AlloyDBへの接続

クライアントソフトウェアを介した接続

AlloyDB for PostgreSQLへの接続は、psqlコマンドなどの一般的なPostgreSQLクライアントソフトウェアを介して行うことができます。

https://cloud.google.com/alloydb/docs/connect-psql

プライマリおよび読み取りプールインスタンスへの接続

クライアント側からは、プライマリインスタンスまたは読み取りプールインスタンスが提供するプライベートIPアドレスに接続します。

https://cloud.google.com/alloydb/docs/connection-overview#networking

AlloyDBでの認証と認可

AlloyDBクラスタが新しく作成された場合、postgresユーザーを介してログインすることが可能です。ログインパスワードはクラスタ作成時に定義されます。

https://cloud.google.com/alloydb/docs/database-users/about

AlloyDB Auth proxy

AlloyDB Auth proxyは、AlloyDBを使用するアプリケーションのクライアント側にローカルにインストールされるプロキシソフトウェアです。AlloyDB Auth proxyを使用することで、AlloyDBはIAM権限を使用して認証と認可を行うことができます。また、アプリケーションからデータベースへの通信はTLSで暗号化されます。

Google Cloud環境(Cloud Runなど)でアプリケーションが動作している場合、インスタンスに関連付けられたサービスアカウント(roles/alloydb.clientロール)の権限を使用してデータベースにログインすることが可能です。

https://cloud.google.com/alloydb/docs/auth-proxy/overview

参考

https://cloud.google.com/alloydb/pricing
https://cloud.google.com/alloydb/docs/overview
https://cloud.google.com/alloydb/docs/cross-region-replication/about-cross-region-replication
https://cloud.google.com/alloydb/docs/instance-read-pool-scale
https://cloud.google.com/alloydb/docs/backup/overview
https://cloud.google.com/alloydb/docs/connect-psql
https://cloud.google.com/alloydb/docs/database-users/about
https://cloud.google.com/alloydb/docs/auth-proxy/overview
https://blog.g-gen.co.jp/entry/alloydb-for-postgresql-explained

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!