【正解】C
【0からの解説】
①前提知識
Memorystore for Redis は Google Cloud のフルマネージドな Redis サービスです。インスタンスはリージョン単位のリソースで、主な可用性・永続化の機能は次のとおりです。
・Standard Tier: 同じリージョン内の別ゾーンにレプリカを持ち、ゾーン障害時に自動フェイルオーバーします。リードレプリカを有効にすると読み取りもスケールできますが、レプリカはすべて同じリージョン内にあります。
・RDB スナップショット(永続化): インスタンス内部の永続ストレージに定期的にスナップショットを保存し、ノードの障害後などに同じインスタンスのデータを復元するためのものです。スナップショットは内部的なシステム復旧専用で、ユーザーがアクセスしたり、別リージョンのインスタンスで使ったりすることはできません。
・エクスポート / インポート: インスタンスのデータを RDB ファイルとして Cloud Storage バケットに書き出し、別のインスタンスに読み込めます。Cloud Scheduler と Cloud Run functions(旧 Cloud Functions)などを使って定期的なエクスポートを自動化できます。
②要件と制約の整理
・リージョン全体の停止に備え、別リージョンへのフェイルオーバーを想定している。
・フェイルオーバー先の Memorystore インスタンスが「空のキャッシュから始まらない」ようにしたい → 停止したリージョンに依存せずに、別リージョンからアクセスできるデータのコピーが必要。
③正解が要件を満たす理由
定期的なエクスポートをデュアルリージョン(2 つのリージョンにデータを冗長保存する)Cloud Storage バケットに書き出しておけば、一方のリージョンが完全に停止しても、もう一方のリージョンから RDB ファイルを読み出せます。フェイルオーバー先のリージョンの Memorystore インスタンスにこのファイルをインポートすれば、最後のエクスポート時点のデータでキャッシュを事前にウォームアップでき、空の状態から始まるのを避けられます。
【誤りの選択肢】
A:Standard Tier のレプリカは同じリージョン内のゾーン障害に対する保護であり、リージョン全体の停止には対応できません。さらにリードレプリカを無効にしても別リージョンにデータが残るわけではないため、要件とは無関係です。
B:リードレプリカも同じリージョン内に作成されるため、リージョン全体が停止すればプライマリと一緒に利用できなくなります。別リージョンのインスタンスにデータを引き継ぐ手段にはなりません。
D:RDB スナップショットは同じインスタンス内のシステム復旧専用で、ユーザーはアクセスできず、別リージョンの新しいインスタンスへの復元には使えません。リージョン全体の停止時の対策にはなりません。
【参考】
Redis インスタンスからデータをエクスポートする | Memorystore for RedisRDB スナップショットについて | Memorystore for RedisMemorystore for Redis の高可用性