今年１年、alloyDBに魅せられた話

# 今年１年、alloyDBに魅せられた話

これは、[PostgreSQL Advent Calendar 2022](https://qiita.com/advent-calendar/2022/postgresql)の16日目の記事です。

# 今年はGoogle Cloud AlloyDBが一番興味深く、ちょこっとだけ触ってみたのでまとめてみました
## はじめに
[2022/05/12 Google Cloud Blog](https://cloud.google.com/blog/ja/products/databases/introducing-alloydb-for-postgresql) に衝撃的な記事が掲載されました
Google I/O での発表でした
> 今は日本語訳もありますね

　社内のSlackチャネルでも色々盛り上がってるしPreviewで無料ということもあり、触ってみようと決意したのでした
　Blogは英語でしたので、DeepLで翻訳しつつ読んでいたのですが何が特徴なのかがよくわかりませんでした

　[2022/12/15](https://cloud.google.com/blog/ja/products/databases/announcing-the-general-availability-of-alloydb-for-postgresql/)に、GAリリースとなったようです

## AlloyDBの特徴（Blogより）
- PostgreSQLとの完全な互換性により、ワークロードに柔軟性と真のポータビリティを提供
- 優れたパフォーマンス、トランザクション ワークロードでは標準のPostgreSQL の 4 倍高速
- 高速のリアルタイム分析情報、標準の PostgreSQL に比べて最大 100 倍高速な分析クエリ
- 高価なライセンスも不透明な I/O 料金も発生しない、透明で予測可能な料金設定
- 機械学習対応の自動パイロット システムによる簡素化された管理

> ゴールデンウィーク前だったら、触って見る時間も確保しやすかったのに
> AI/MLをどんな感じで使ってるんだろ？

## [2022/05/31 第33回 PostgreSQLアンカンファレンス@オンライン](https://pgunconf.connpass.com/event/243796/)
　さっそく alloyDB を触ってみたということで登壇がありました
　先を越された感（ていうか、その方の熱量（ポスグレ愛）の違いで当たり前ですが）があり、私が行う検証作業も尻を叩かれまくった感じでした
　発表後２週間で、要点を得た検証結果の発表はすごいな～と感銘しました

　そして、次回のPostgreSQLアンカンファレンス@オンラインで発表することを決意したのでした

## [2022/07/29 第34回 PostgreSQLアンカンファレンス@オンライン](https://pgunconf.connpass.com/event/249968/)で登壇しました
### 検証内容
> 大したことはやってないです
- 環境構築までの手順や気になるところ
- クラスター構成の実態
- 一般的なPostgreSQLとの違い
- 無料枠とは言いながらの料金感覚
- 運用面（取り回し）

### AlloyDBって
- クラスター構成が基本形でリードレプリカが作れます
- 分散ストレージシステムを使うことで、WAL出力の高速化
- PostgreSQL v14 完全互換

### 環境構築（deploy）してみた
　読み取りプールありの高可用性 を選択しdeployしました
　コンソール上で、基本設定やクラスタ構成やネットワーク設定をポチポチ
　必要であれば、DBパラメータ（Google cloud の表記だとDBフラグ）も設定できます
　プライマリインスタンス１つと、読み取りプール４つを指定して、クラスタを作成

　クラスタ作成完了まで、<B>１５分程度</B> かかりました
> クラウドの環境構築にしては、体感長めです
> ５台のインスタンスを起動していると思えば、そんなもんかも

### 接続検証
#### psql接続
　GCE(Compute Engine)を１台立ち上げて、psqlをインストールして接続しました
　　```psql -h [IPaddress] -U postgres```
　普通に繋がりました（当たり前ですが）

#### pgAdmin4
　psqlのSQL結果でもよかったのですが、pgAdmin4を使ったほうがビジュアル的にわかりやすいかな？と`pgAdmin4`で接続してみました
　psql用にGCEを立てたので、サーバモードのpgAdmin4をインストールして接続しました
　IAPやSQL-Proxyを真面目に立ち上げればよかったのですが、GCE に外部IP付け、http,https の通信許可しpgAdmin4を起動することにしました
> インターネット上にむき出しになるのであまりよろしくないです
作業が終わる都度、インスタンスを停止してました

　pgAdmin4でAlloyDBに接続するのは特別な操作は不要で、一般的なPostgreSQLへ接続する手順で、さくっと接続できました
#### AlloyDB の固有情報
　`g_alloydb` というテーブルが作成されていました管理情報などを登録しているのだろうと推測します
　それ以外は、initDBしたときに作成されるテーブルなどでした

#### レプリケーションモードの確認
　```SELECT * FROM pg_stat_replication```
　SQLを実行すると、普通に、結果を返しました

レプリケーションモードを確認するのに必要なパラメータの抜粋です
|DB パラメータ|値|
|---|---|
|max_wal_senders| 50|
|wal_level| replica|
|max_logical_replication_workers| 4|
|synchronous_standby_names|(設定無し)| 

　設定から確認すると`非同期型のストリーミングレプリケーション`であることがわかりました
> 非同期型なのか？は自身が無かったです
アンカンファレンスでは、問いで発表すると、どなたかがお答えいただける安心感があります

#### そして利用料(2022/06/09 - 2022/07/10)
　検証後にAlloyDBのインスタンスは起動状態で放置しました
|SKU|Cost|
|---|--:|
|AlloyDB Cluster Database Storage in Iowa AlloyDB| ¥1|
|AlloyDB Instance RAM Usage in Iowa| ¥214,528|
|AlloyDB Instance vCPU Cores in Iowa| ¥158,214|

　検証目的で個人で払える金額では無いですね～～～（法人でも無理ゲー）
> GCEを５インスタンスほど１ヶ月間立ち上げっぱなしと考えればそこまで高額では無い気もします

#### ここまでのまとめ
- 普通のpostgreSQL
- Read Onlyだが、Horizontal scaling が、1click で実現できる【🐇🐇🐇🐇】
    -  ⇒ Read Replica を手作業で作成すると結構手間がかかる
- Primay は、CloudSQLと同様に、Large Machine が必要そう
- Managed Service ではあるが、運用保守は手がかかりそう（環境構築は簡単）
    - ⇒ 自動でプールは増えないみたい
- ACIDが必須なら、インフラエンジニア不要でクラスター環境を利用できそう
- バックエンド処理で、GET は Read-Replicaへ、PUT/POST/DELETE は Primary へアクセスすれば、超高速になれる？
- GCE / CloudSQL / pg-k8s で運用開始して（DB移行は発生するが）alloyDBへ移行するpathは、簡単に作れそう
- データ移行にbasebackup は使えなさそう

## ほぼ同じ内容で [2022/08/20 GCPUG Hiroshima ~夏の陣~](https://gcpug-hiroshima.connpass.com/event/255699/)でLT登壇しました

### そして気づいたこと
　LTとはいえ、発表前に復習しておこうと、クラウド管理画面を開くと月額利用予定額が**３万円以上**と表示されていました！
　いつの間に、GAになったの？（内々には2022/H2以降って聞いてたのに！？）とびっくり・ドキドキしながら確認を進めました

　何かやらかしたのか？と確認しましたが、DBパラメータなどは触っておらず、ネットワーク設定がもにょもにょだからハックされたか？と思いログを確認しましたが、アクセスは無かったので、一安心しました
　InfoメッセージでWALの同期メッセージと、レプリカのkeepalive に関するメッセージが怒涛のごとく出ていました
　2022/08/03 以降から SKU`Log Volume`に １日あたり50GByte以上のログ書き込みが発生していました
> ログストレージの課金は比較的安価ですが、忘れがちですね
利用する上でこんなにログ課金されるのはちょっと考えものだな？と思いました

　GCPUG Hiroshima に Googleの方にも登壇いただいたので、LTの最後で `使用料はログの部分も考慮が必要ですよね？` と問いかけておきました

　取り急ぎ、ログの保存期間を５日間に変更しておきました

### 追って沙汰がありました :scream:
　Google Cloud から `AlloyDBの課金はGoogleが想定しているものではないとのこと` と連絡がありました

　弊社はGoogle Cloud に対してワケアリではありますが、GCPUGのオーガナイザーなのが強いのかわかりませんが、こちらから問い合わせしていないのに、Google Cloud側から連絡があったのは衝撃でした

　事実関係の確認meetが開催されることになり、操作ログなどを事前に提出しました
　レプリケーション状態を確認するために色々触っていたので、何かやらかしたのか？とドキドキしてmeet参加しました
　Google Cloud からの回答は、`ログ出力量が増えたのは、alloyDBの不具合によるもの` でした

　半泣き状態:sob:でしたが安心しました

　折角の機会と言う事で、個人的な意見にはなりましたが、AlloyDBに対する期待などをお話させていただきました

## [2022/11/11 PostgreSQL Conference Japan 2022](https://www.postgresql.jp/jpug-pgcon2022)
 プラチナスポンサーが Google Cloud という事で、AlloyDBのお話が聞けるかも？と参加しました
### 基調講演 Evolving PostgreSQL for the cloud

　PostgreSQLに対するGoogle Cloudの考え方がメインのお話でした
　やはり Hot なので AlloyDBに関する発表が一番時間を取られていました

　分散ストレージの利用に関する発表で、検証したときに理解できなかったことが、理解できるか？と思いましたが、やはりよくわかんなかったです
> あまりにも説明が専門的すぎて、随時通訳の方も通訳しきれない部分があったみたいでした

　PostgreSQLの互換性について、バージョンアップには追従していく方針であるとの説明がありました
　開発当初はv13だったが、Previewリリースにはv14へアップデートを行ったとのことでした
　最新リリースから半年は遅れず追従したいと言われていたと思います

　先日の事実関係確認のmeetにいらしてた方をお見かけしたのでお声がけしたところ、発表者にご紹介いただけました
　AlloyDBのProduct Managerとお話できる折角の機会だったのに、英語出来ない問題（舞い上がって日本語もおぼつかない状況）で悔しい思いをしました

# 最後に

AlloyDBは、PostgreSQL完全互換のマネージメントサービスとして、Enterprise領域でも十分利用できるものと思います<BR>
　従来であれば、クラスター環境を作るには高度な技術者が必要でした
　また、運用するにも高度な技術者を保持し続ける必要がありました
　環境構築する技術はサービスへ置き換えられて行きますが、運用中に何が起きているのか？を理解するには、やはり知識と経験が必要と考えます

:::note warn
　AlloyDBは投稿日時点で、無料お試しは終わっているみたいです
:::

# 個人的な所感
　今年１年もPostgreSQLやAlloyDBを通じて色んな人との繋がりが増えました
　技術者としては、新しい技術やサービスに、そろそろ追いつけなくなってきていると感じています
　AlloyDB発表以降、各社が検証結果やサービス内容の記事を発表されていました
　推しの天使さまにはかないませんでしたが、いち早く情報を発表できたことを今年の成果として自負したいと思います

そして、[こちら](https://github.com/dongchany/alloydb)のリポジトリは、Google Cloud の AlloyDBなのでしょうか？