無限ノック › SAP 練習問題一覧 › 問題
SAP既存のソリューションの継続的改善複数選択

大手小売企業がAWS上でEコマースシステムを運営しています。現在の構成:Amazon RDS for MySQL 8.0(db.r5.4xlarge、マルチAZ構成)をプライマリデータベースとして使用し、us-east-1にRead Replicaを2台構成しています。ピーク時(セール期間)には読み取りQPS(Queries Per Second:1秒あたりのクエリ数)が50,000を超え、ReplicaLagが30秒以上に達することがあります。商品検索クエリが全体の70%を占め、その多くが同一パラメータの繰り返しクエリです。ECS Fargate上のコンテナアプリケーションがコネクションプーリングなしで直接RDSエンドポイントに接続しており、ピーク時にDB接続数が4,000を超えて「Too many connections」エラーが散発しています。加えて、ap-northeast-1(東京)リージョンでのDR(Disaster Recovery:災害対策)要件としてRTO(Recovery Time Objective:目標復旧時間)30分・RPO(Recovery Point Objective:目標復旧時点)5分が新たに追加されました。 以下の要件をすべて満たすために最も適切なソリューションの組み合わせを2つ選んでください。 【要件】 ①読み取りレイテンシを現状から50%以上改善する。 ②ap-northeast-1でのRTO30分・RPO5分のDR要件を満たす。 ③コネクション過多問題を解決する。 ④アプリケーションコードの変更を最小限にする。

A
RDS for MySQLをAmazon Aurora MySQL互換エディションに移行し、Aurora Global Databaseを構成してus-east-1をプライマリクラスター、ap-northeast-1をセカンダリクラスターとする。Auroraのストレージレベルレプリケーションにより通常のReplicaLagは100ms未満となり読み取りパフォーマンスが大幅改善される。クロスリージョンレプリケーションラグは通常1秒未満であり、マネージドフェイルオーバー実行時のRTO約1分・RPO約1秒がAurora Global Databaseで実現できるため、RTO30分・RPO5分の要件を十分に満足する。
✓ 正解
A(Aurora Global Database)はAuroraのストレージレベルレプリケーションで現在30秒超のReplicaLagを100ms未満に改善し要件①を達成します。またクロスリージョンレプリケーション(通常1秒未満)とマネージドフェイルオーバー(RTO約1分・RPO約1秒)でRTO30分・RPO5分のDR要件②も十分に満たします。C(RDS Proxy)は接続先URLの変更のみでコネクション多重化が有効になり要件③④を同時に解決します。
B
Amazon ElastiCache for Redis(クラスターモード有効、r6g.xlargeノード)を既存RDSの前段に配置し、商品検索クエリ結果をCache-Asideパターン(アプリがキャッシュを参照し、ミス時のみDBに問い合わせるパターン)でキャッシュする。アプリケーションのデータアクセス層(DAOクラス)にRedisクライアントとキャッシュロジックを追加実装し、商品データの更新頻度に応じたTTL(Time To Live:キャッシュ有効期間)を設定してデータ鮮度を管理する。
Cache-Aside実装はDAOクラスへのコード追加が必須で要件④に反します。
C
Amazon RDS Proxyをus-east-1のアプリケーションとRDSクラスターの間に配置し、コネクションプーリングおよび多重化(Multiplexing:複数のアプリ接続を少数のDB実接続に集約する機能)を有効化する。アプリケーションの接続先をRDS ProxyエンドポイントのURLに差し替えるだけでよく、ピーク時の「Too many connections」エラーを解消しながらアプリケーションコードの変更を最小限に抑えられる。
✓ 正解
A(Aurora Global Database)はAuroraのストレージレベルレプリケーションで現在30秒超のReplicaLagを100ms未満に改善し要件①を達成します。またクロスリージョンレプリケーション(通常1秒未満)とマネージドフェイルオーバー(RTO約1分・RPO約1秒)でRTO30分・RPO5分のDR要件②も十分に満たします。C(RDS Proxy)は接続先URLの変更のみでコネクション多重化が有効になり要件③④を同時に解決します。
D
Amazon DynamoDB+DAX(DynamoDB Accelerator:DynamoDB向けのマイクロ秒レベルのインメモリキャッシュサービス)を導入し、商品カタログデータをDynamoDBに移行する。AWS DMS(Database Migration Service)のCDC(Change Data Capture:変更データキャプチャ)機能でRDS MySQLからDynamoDBへリアルタイム同期し、アプリケーションの検索処理をDynamoDB/DAX経由に書き直す。
DynamoDB/DAXへの移行はアプリケーションの大幅な書き直しが必要です。
E
RDS Read Replicaを現在の2台から6台に増設し、Route 53の加重ルーティング(Weighted Routing)ポリシーで読み取りトラフィックを分散する。加えてRDSパラメータグループのmax_connectionsを8,000に引き上げてコネクション上限を緩和し、ap-northeast-1にもRead Replicaを1台追加して非同期レプリケーションによるDRに対応する。
クロスリージョンReplicaは1台ではRPO5分を保証できず、max_connections引き上げはコネクション過多の根本解決になりません。

解説

選択肢AのAurora Global Databaseは、Auroraのストレージレベルレプリケーションにより現在30秒超のReplicaLagを100ms未満に改善し要件①を達成します。またクロスリージョンレプリケーション(通常1秒未満)とマネージドフェイルオーバー(RTO約1分・RPO約1秒)でRTO30分・RPO5分のDR要件②も十分に満たします。 選択肢CのRDS Proxyは、アプリケーションの接続先URLをRDS ProxyエンドポイントのURLに差し替えるだけでコネクション多重化が有効になり、ピーク時の「Too many connections」エラーを解消しながらアプリケーションコードの変更を最小限に抑え、要件③④を同時に解決します。 選択肢BのCache-Aside実装はDAOクラスへのRedisクライアントとキャッシュロジックの追加実装が必須となり、アプリケーションコードの変更を最小限にする要件④に反します。 選択肢DのDynamoDB/DAXへの移行はアプリケーションの検索処理を大幅に書き直す必要があり、要件④に反するうえ移行工数も大きくなります。 選択肢EのRead Replicaを6台に増設してもReplicaLagの根本原因は解決されず、ap-northeast-1への1台の非同期ReplicaはRPO5分を保証できません。max_connections引き上げもコネクション過多の根本解決にはなりません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAPを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SAP の問題一覧に戻る