コンテンツに移動
データベース

AlloyDB for PostgreSQL の仕組み: ビジネスの継続性

2023年6月29日
https://storage.googleapis.com/gweb-cloudblog-publish/images/alloydb_hero_Nwng1AQ.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 6 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウドでデータベースを運用する際の大きなメリットは、ビジネスの継続性を確保できることです。継続性は、データベースの観点では、データベースの可用性とデータの耐久性の組み合わせとして定義することが一般的です。

AlloyDB は、要求の厳しいトランザクション ワークロード向けの、PostgreSQL 対応のフルマネージド データベースです。AlloyDB は、厳格なビジネス継続性とデータ レジリエンスの手法をデフォルトで採用しています。つまり、複雑で時間のかかる構成と管理について心配することなく、自動フェイルオーバー、ポイントインタイム リカバリ、データ レプリケーションなどの機能を活用できます。

Google Cloud は、ビジネスの継続性は重要であるとの認識に基づき、セルフマネージド デプロイで最も懸念される多くの障害状態に対処できるようにインフラストラクチャとマネージド サービスを設計しています。Google のアーキテクチャとインフラストラクチャは、データ損失や利用不能の事象に対する堅牢な保護をデフォルトで提供します。つまり、データは常に安全かつアクセス可能であることがわかっているので、安心して利用できます。同時に、可用性のニーズはアプリケーションごとに異なるため、お客様が独自のサービスレベル目標を達成できるよう、柔軟性と制御性を持たせることに努めています。

特に、AlloyDB は Google Cloud の高可用性かつ信頼性に優れたインフラストラクチャの上に構築されているため、可用性と耐久性に優れたデータベースを実現できます。AlloyDB を使用すると、データの可用性が確保され、中断した状態から迅速かつ効率的に復元できます。

利用不能の事象とデータ損失の事象

ミッション クリティカルなエンタープライズ アプリケーションでは、常に利用可能で復元力の高いデータベースと、耐久性のあるデータが必要です。こうした用語について深く掘り下げ、どのような利用不能事象およびデータ損失の事象に関連するのかを確認しましょう。

可用性とは、エンドユーザーやアプリケーションがデータベースにアクセスし、データ マネジメント オペレーションを行うことができる、ということです。通常、アプリケーションの可用性はデータベースの可用性に依存します。データベースがダウンすると、ユーザーはログインできなくなります。商品カタログを見ることも、注文することもできず、関連する特典を受け取ることもできません。

顕著な利用不能事象として、インフラストラクチャの障害が挙げられます。1 つのハードウェア コンポーネントの故障のように小さなものもあれば、全般的な事象(データセンター全体または地域のデータセンター群をダウンさせるほどの停電や災害など)もあります。アプリケーション エラーによってデータベース システムが利用不能になることもあります。たとえば、クエリの書き方が適切でないためにテーブル全体が長時間ロックされたり、構成ミスによりデータベース サーバーが利用不能になったりすることがあります。

耐久性とは、データを取得するまで破損させずに保持できる、ということで、あらゆるデータベースに不可欠な要素です。利用不能事象と同様に、ディスク障害のような特定のインフラストラクチャの障害もデータ損失事象につながるおそれがあります。ただし、最も懸念されるデータ損失事象は、ユーザーの誤操作やアプリケーション エラーによるものです(ユーザーがテーブルを誤って削除した、データベースで永続化する前にアプリケーションでレコードが破損したなど)。

レジリエンスとは、システムで発生した障害から復旧でき、通常の動作を復元できる、ということです。可用性や耐久性と密接に関係しています。可用性と耐久性の高いシステムは冗長性とフォールト トレラントを取り入れて構築されているため、障害事象からユーザーを保護できます。

それでは、Google のテクノロジーと AlloyDB のアーキテクチャによって、レベルの高い可用性と耐久性がどのように実現されているのかについて説明します。

耐障害性を重視した設計

AlloyDB のアーキテクチャは、Google の基礎的なストレージ システムである Colossus を利用しています。Colossus は、Google 検索や Gmail といった世界規模のミッション クリティカル サービスの重要な構成要素で、無制限にスケーラブルで高度にフォールト トレラントとなるように設計された分散ファイル システムです。フォールト トレラントは、冗長性と消失訂正符号という 2 つの技術によって支えられています。

Colossus では、データを小さなチャンクに分割し、独立した障害発生ドメインにある複数のサーバーにコピーするという冗長性技術が使用されています。このアプローチにより、ネットワーク パーティションなどの利用不能事象やディスク障害などのデータ損失事象の影響を受けたコピーは、残りのコピーから再構築できます。消失訂正符号はチャンク内にデータの冗長性を追加する技術であり、同じチャンク内の既知のブロックから消失または破損したデータを再生成できます。

AlloyDB のインテリジェント ストレージ サービスでは、Colossus が利用されるだけでなく、フォールト トレラントが強化されています。データは、ゾーンの障害に耐えるために複数のゾーンで冗長的に保存されます。また、ストレージはゾーンのコピーのサービス停止をモニタリングし、高可用性を維持するために再構築できるようにします。つまり、壊滅的な障害が発生しても、データは安全であり、常に利用可能であると確信できます。

AlloyDB は Google の仮想マシン(VM)の設計も使用しています。AlloyDB クラスタのデータベース インスタンスを含め、基となる VM のいずれにおいてもライブ マイグレーションがサポートされます。ライブ マイグレーションを行うと、Google Cloud でワークロードの中断、VM の再起動、VM のプロパティ(IP アドレス、メタデータ、ブロック ストレージ データ、アプリケーションのステータス、ネットワーク設定など)の変更を行わずにメンテナンスを実施できます。これにより AlloyDB は、インフラストラクチャのメンテナンス時やセキュリティと構成のパッチ適用時、さらにはハードウェア障害が発生しているときでも、可用性を維持できます。

可用性と耐久性を高めるアドオン機能

前述の AlloyDB の構成要素により、すでにレベルの高いレジリエンスが実現していますが、ミッション クリティカルなアプリケーションでは、可用性と耐久性を強化する追加の AlloyDB 機能を活用できます。

高可用性インスタンス

AlloyDB は、メンテナンス込みで、業界をリードする 99.99% の可用性 SLA による高可用性インスタンスを提供します。プライマリ インスタンスはデフォルトで可用性が高く、ノードが 2 つ以上の読み取りプールも同様です。

AlloyDB の高可用性インスタンスの主な機能は、自動フェイルオーバーです。AlloyDB は健全でない PostgreSQL インスタンスを自動的に検出し、データベースのサイズや負荷にかかわらず、60 秒以内に異なるゾーンのスタンバイ マシンにフェイルオーバーします。これにより、利用不能事象でのアプリケーションの中断を最小限に抑えられます。

AlloyDB の高可用性インスタンスは、中断を伴わないメンテナンス オペレーションもサポートしています。インスタンスのサイズ変更などのユーザー主導のメンテナンス オペレーション、再起動を必要とする再構成や、PostgreSQL のマイナー バージョン アップグレードのようなサービス主導のメンテナンス オペレーションに対応できます。このようなメンテナンス イベントに備えて新しいインスタンスを用意し、そのキャッシュをウォームアップしてから、現在のインスタンスを新しいインスタンスに置き換えます。メンテナンス イベントはプライマリ インスタンスで 10 秒未満の中断で完了し、読み取りプールはメンテナンス中も完全に稼働しています。

AlloyDB の高可用性インスタンスには、高可用性アプリケーションを構築するためにお客様に提供されているものと同じ、実績のある Google Cloud サービスが採用されています。リージョン内部ロードバランサがマシン間の接続をシームレスにルーティングし、アプリケーションが常に正常なインスタンスに接続されるようにします。マネージド インスタンス グループが代替マシンを迅速にインスタンス化し、Spanner がインスタンス構成を永続化するため、メンテナンスとスケールアウトのオペレーションが迅速かつ信頼性の高いものになります。

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

同じクラウド リージョンにある複数のデータセンターで同時に障害が発生することは極めてまれですが(火災や地震などの災害でもなければ通常は起こりません)、AlloyDB は、まれな大規模事象であっても、考えられるあらゆる障害シナリオの計画をするという原則を守ります。

クロスリージョン レプリケーションを使用すると、プライマリ クラスタから別のクラウド リージョンにあるセカンダリ クラスタに、非同期でデータを複製できます。プライマリ クラスタで障害または停止が発生した場合、セカンダリ クラスタを新しいプライマリ クラスタに迅速に昇格させることができるため、アプリケーションの中断を最小限に抑えて動作を継続できます。

クロスリージョン レプリケーション機能は非同期で動作します。つまり、プライマリ クラスタの書き込みパフォーマンスに影響を与えません。セカンダリ クラスタが準リアルタイムでアップデートを受け取り、ラグはモニタリングできます。

バックアップとポイントインタイム リカバリ

データの損失はビジネスの大きな妨げになる可能性あるため、AlloyDB は堅牢なバックアップポイントインタイム リカバリの機能によって貴重なデータを保護します。AlloyDB クラスタのバックアップを手動、自動、または継続的に取得し、データ損失事象からデータを保護できます。

バックアップは前述した AlloyDB のインテリジェント ストレージ サービスにオフロードされるため、クラスタに接続されたインスタンスの読み書きのパフォーマンスに影響を与えることなく、バックアップ オペレーションを進めることができます。ストレージ システムは普段からシャーディングされており、バックアップの取得と復元を並列処理でき、バックアップとリカバリにかかる時間が大幅に短縮されます。

バックアップは、そのクラスタ ストレージとは別の Cloud Storage に保存されます。年間の耐久性は 99.999999999%(イレブンナイン)と、エンタープライズ ストレージ システムの中でもトップクラスの耐久性を誇ります。つまり、バックアップを毎日行う一般的なデータベースは、破損することなく数十万年も稼働し続けることになります(1 万年でバックアップの問題が発生し始めたらご連絡ください!)。また、バックアップはクラスタのライフサイクルから独立しているため、クラスタが誤って削除された場合でも保護されます。

AlloyDB には、バックアップのスケジューリングと保持に役立つ自動バックアップ機能があります。カスタマイズ パラメータが豊富なため、バックアップを 1 時間に 1 回という頻度で取得したり、1 週間に 1 回という少ない頻度で取得したりできます。また、1 年までの期間を定めて保持したり、数量を定めて保持したりと、組織の特定のニーズに合わせて機能をカスタマイズすることも可能です。顧客管理の暗号鍵(CMEK)や Google のデフォルトの暗号化を使用することもできます。

今月の初め、Google は AlloyDB の継続的なバックアップとリカバリの一般提供を発表しました。最大 35 日間というリカバリ期間内でポイントインタイム リカバリ機能を利用できます。ユースケースとしては、データの破損を引き起こしたエラーの直前のデータを復元したり、監査またはテストと開発のために特定の日時のデータを復元したりといった例が挙げられます。継続的なバックアップとリカバリは、日次バックアップの計画と、トランザクション ログの継続的な保存の組み合わせです。デフォルトでは、すべてのプライマリ クラスタにリカバリ期間 14 日間の継続的バックアップ計画があり、データが確実に保護されます。

バックアップと同様に、継続的なバックアップとリカバリも AlloyDB のインテリジェント ストレージ システムによって管理されます。つまり、インスタンスのパフォーマンスに影響を与えず、従来の PostgreSQL のポイントインタイム リカバリよりも速いポイントインタイム リカバリが実現します(リプレイを並列化できるため)。トランザクション ログは Cloud Storage にオフロードされるため、データベースのクラスタ ストレージに影響を与えません。

継続的なバックアップとリカバリの費用は、トランザクション ログとバックアップで使用するストレージによって決まります。最初の 7 日間のログストレージは追加費用なしで提供されます。

AlloyDB でレジリエンスに優れたアプリケーションを構築する

確かに、高可用性とデータの耐久性はビジネスにとって重要です。Google Cloud のインフラストラクチャとマネージド サービスは、ビジネスの継続性を確保するための強固な基盤を提供します。AlloyDB はその基盤の上に構築され、インテリジェント ストレージ サービスや、可用性と耐久性を高める追加の機能を備えています。こうした機能を活用することで、インフラストラクチャの障害、データ損失事象、その他の中断が発生した場合でも、ミッション クリティカルなアプリケーションとデータを利用できるため、安心です。

今すぐ AlloyDB でアプリケーションを構築しましょう。新規のお客様は AlloyDB を無料でお試しいただけます


- AlloyDB、シニア プロダクト マネージャー Emir Okan
- AlloyDB、プリンシパル エンジニア Alexander Böhm

投稿先