ハイパフォーマンス・低運用コストのAlloyDBへ移行する
Ubie株式会社 / teru01
メンバー / SRE
利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
Database, AlloyDB Studio, Query Insights | 51名〜100名 | 2023年1月 | B to B B to C |
利用機能 | Database, AlloyDB Studio, Query Insights |
---|---|
ツールの利用規模 | 51名〜100名 |
ツールの利用開始時期 | 2023年1月 |
事業形態 | B to B B to C |
アーキテクチャ
アーキテクチャの意図・工夫
Ubieでは、以下の観点から各種クラウドリソースを特定の役割を持った複数の領域に分割して管理しています。
- ヘルスケア領域における法令やガイドラインへの準拠コストの低減
- セキュリティ・プライバシーリスクの低減
- 可用性の向上、インシデント時の影響範囲の縮小
各領域はセグメントと呼ばれ、toC向けサービス用、toB向けサービス用、共通で使われるもの...など複数のものがあります。セグメント単位でGoogle CloudプロジェクトやGKEクラスタが分離されており、データベースも同様です。GKEからデータベースへの通信は同じセグメントに閉じて行われるため、将来的なVPC Service Controlsの導入が検討されています。
クライアントからはPSC(Private Service Connect)を使いプライベートにAlloyDBインスタンスに接続します。インスタンス単位でエンドポイントが分離するため、ピアリングベースのPSA(Private services access)よりセキュアな接続が可能になっています。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
Ubieでは長らくCloudSQLをデータベース基盤として利用してきましたが、事業の成長とともにいくつかの構造的な課題が顕在化していました。最も大きなものがインフラストラクチャの制約です。CloudSQLはコンピュートリソースとストレージが結合した構造を持っており、これが様々な運用上の制約を生み出していました。具体的には
- メンテナンス時のダウンタイム
インスタンスサイズの変更やPostgreSQLのバージョンアップグレード時に数分間のダウンタイムが発生していました。これにより、サービスを利用する医療機関への事前通達と深夜メンテナンスの調整が必要となり、運用チームの大きな負担となっていました。
- バックアップ管理の柔軟性不足
インスタンスとバックアップが密結合しており、インスタンスを削除するとそのバックアップも同時に削除されてしまうため、データ保持とインスタンス管理の柔軟性が制限されていました。
どのような状態を目指していたか
高可用性と運用効率の向上
- アップグレードやリソース変更時にサービス停止を必要としない、または最小限に抑えられるデータベース基盤
- 深夜メンテナンスの計画や実施といった運用チームの負担を減らし、より価値の高い業務に集中できる環境
将来の成長に対応できる拡張性
- 事業成長に伴うデータ量やトランザクション増加に対応できる高いパフォーマンス
- 新技術の活用: 生成AIとの統合機能など、新機能をシームレスに取り入れられる柔軟な基盤
比較検討したサービス
- CloudSQL
- Cloud Spanner
比較した軸
- 既存のコードを変更する必要がない
- 運用負荷が低い
- 将来的にサービスに対する投資が続き、発展していく可能性が高い
選定理由
- アップグレードやインスタンスサイズ変更時、DBへの接続は瞬断で済む(near-zero downtime upgrade)。そのためリトライを工夫することで夜間メンテナンスを計画する必要がなくなる
- CloudSQLと比較して優れたパフォーマンスと拡張性を持つ
- Geminiを活用したAI機能の将来的な活用が期待できる
- PostgreSQLとの高い互換性があり、移行が容易
導入の成果
改善したかった課題はどれくらい解決されたか
AlloyDBのnear-zero downtimeアップグレード機能により、PostgreSQLのバージョンアップなどに伴う深夜メンテナンスの必要性がほぼ解消され、ユーザーへの影響を最小限に抑えながらそのような更新作業を自動で実施できるようになりました。
またデータのバックアップもクラスタとは独立して残すことができるため、シャットダウンも安心して行えるようになりました。
どのような成果が得られたか
上述した運用負荷の軽減に加えて
- AlloyDBの優れたパフォーマンス特性を活かし、CPUコア数を減らせたサービスがあった
- Geminiと統合されたAlloyDB Studioの利用により、QA環境での検証作業が効率化された
- IAM based AlloyDBユーザを利用することで、パスワードレスなDB運用が可能になった
導入時の苦労・悩み
PSC(Private Service Connect)の設定の複雑さ
- AlloyDBインスタンスごとに4つのTerraformリソース(IPアドレス、転送ルール、DNS zone、DNS record)が必要
- リードレプリカを追加するたびにこれらのリソースが必要となり、コードが肥大化
- PSCの設定が複雑で難しく、Terraformモジュールで隠蔽する工夫が必要だった
IAM basedユーザー管理の導入障壁
- IAM basedユーザーの概念がやや複雑で、PostgreSQLの従来のユーザー管理に慣れた開発者には理解しづらい
- 開発者が簡単に利用できるよう、Terraformモジュールで権限設定を抽象化するなどの工夫が必要だった
以上の課題は「最初から理想的な状態で運用しようとした」ことによる苦労です。単にPostgreSQLから移行するだけなら必ずしも必要ない工夫ですが、長期的な運用を見据えた投資として取り組みました。
導入に向けた社内への説明
上長・チームへの説明
社内ではマイクロサービスのマルチクラスタ化やワークフローシステムの移行といった、DB以外のリソースも含めたインフラの全面的な刷新プロジェクトが進行していました。その計画ではGoogle Cloudプロジェクト構成の変更に伴い、いずれにせよDBを新しく作り直す必要があったため、この機会に単なる「移し替え」ではなく、より運用負荷の軽減につながる良い技術選択をすべきと提案しました。
活用方法
Ubieで運用しているほぼ全てのサービスのRDBとして使われています。
よく使う機能
RDBとしての機能に加えて以下のツールやサービスを利用しています
AlloyDB Studio: Google Cloudコンソールからデータベースへクエリしたり、結果を確認したりできるサービスです。本番環境以外の全てのDBで利用できるようになっており、開発者やQAエンジニアは手軽にデータを確認できます。以前は踏み台サーバを使ってDBに接続していましたが、AlloyDB Studioのおかげでほぼ必要なくなりました。
Query Insights: クエリパフォーマンスのモニタリングに利用しており、特に時間のかかるクエリを調査、分析するのに役立っています。Active Query Insightsを有効にすれば、長時間実行されてスタックしてるクエリをコンソールから停止させることもできます。
ツールの良い点
- アップグレードやインスタンスサイズ変更時のダウンタイムが最小限(near-zero downtime)
- CloudSQLと比較して優れたパフォーマンスと拡張性を持つ
- コンピュートリソースとストレージが分離されたアーキテクチャにより柔軟なスケーリングが可能
- Geminiを活用したAI機能の将来的な活用が期待できる
- PostgreSQLとの高い互換性があり、移行が容易
- IAMベースのユーザー管理が可能で、パスワード管理の手間から解放される
- AlloyDB Studioによる開発者体験の向上
ツールの課題点
- PSCの設定が複雑(PSAも使えるので必須ではない)
- IAM-based AlloyDBユーザーが使えないケースがある(2025年3月時点でAlloyDB Studio、BigQueryのfederated queryなど)
- IAMベースユーザーの概念がやや複雑で、開発者への説明や抽象化が必要
ツールを検討されている方へ
低い運用負荷を維持しつつも、高いパフォーマンスを必要とするようなサービスにフィットします。 Google CloudでPostgreSQLを使いたい時は候補の1つになるでしょう。
一方で多少のダウンタイムが許容されたり、コストが優先される環境だとやや高く感じられるかもしれません。
なお最近はCloudSQLにもAlloyDBにしか存在しなかった機能が追加されてきましたが、それらの機能を有効にした場合のコストと、AlloyDBを使った場合のコストはよく比較検討する必要があります。機能の組み合わせによってはCloudSQLの方が高くなります。
今後の展望
- 全ユースケースでIAM basedユーザが利用できるようになる
- アップグレード時のダウンタイムがより短くなる
- Geminiとの統合がさらに進む
といった機能改善がなされると期待しています。
Ubie株式会社 / teru01
メンバー / SRE
Ubie株式会社 / teru01
メンバー / SRE
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法