PERF03-BP02 データストアで利用可能な設定オプションを評価する
データストアで使用できるさまざまな機能と設定オプションを理解して評価し、ワークロードに合わせてストレージ容量とパフォーマンスを最適化します。
一般的なアンチパターン:
-
すべてのワークロードに対して、Amazon EBS などの 1 つのストレージタイプのみを使用する。
-
すべてのストレージ層に対して実際のテストを行うことなく、すべてのワークロードにプロビジョンド IOPS を使用する。
-
選択したデータ管理ソリューションの設定オプションを把握していない。
-
使用できる設定オプションを確認せずに、インスタンスサイズを増やすことのみに頼っている。
-
データストアのスケーリング特性をテストしていない。
このベストプラクティスを活用するメリット: データストア設定を確認し、試してみることで、インフラストラクチャのコストを削減し、パフォーマンスを高め、ワークロードの維持に必要な労力を軽減できる場合があります。
このベストプラクティスを活用しない場合のリスクレベル: 中
実装のガイダンス
ワークロードには、データストレージとアクセス要件に基づいて 1 つまたは複数のデータストアを使用できます。パフォーマンス効率とコストを最適化するには、データアクセスパターンを評価し、適切なデータストア設定を判別する必要があります。データストアのオプションを検討する際には、ストレージオプション、メモリ、コンピューティング、リードレプリカ、整合性要件、接続プーリング、キャッシュオプションなど、さまざまな側面を考慮します。こうしたさまざまな設定オプションを試し、パフォーマンス効率のメトリクスを改善します。
実装手順
-
データストアの現在の設定 (インスタンスタイプ、ストレージサイズ、データベースエンジンのバージョンなど) を把握します。
-
AWS ドキュメントとベストプラクティスで、データストアのパフォーマンス向上に推奨される設定オプションについて確認します。考慮すべき主なデータストアのオプションは次のとおりです。
設定オプション 例 読み取りのオフロード (リードレプリカやキャッシュなど) -
DynamoDB テーブルの場合、キャッシュに DAX を使用して読み取りをオフロードできます。
-
Amazon ElastiCache (Redis OSS) クラスターを作成し、アプリケーションで最初にキャッシュから読み取り、要求されたアイテムが存在しない場合はデータベースにフォールバックするように設定できます。
-
Amazon RDS や Aurora などのリレーショナルデータベース、Neptune や Amazon DocumentDB などのプロビジョンド NoSQL データベースはすべて、ワークロードの読み取り部分をオフロードするためのリードレプリカの追加をサポートしています。
-
DynamoDB などのサーバーレスデータベースは自動的にスケーリングします。ワークロードを処理するのに十分な読み取りキャパシティユニット (RCU) がプロビジョニングされていることを確認します。
書き込みのスケーリング (パーティションキーのシャーディングやキューの導入など) -
リレーショナルデータベースの場合、インスタンスのサイズを増やして増加したワークロードに対応するか、プロビジョンド IOPS を増やして、基盤となるストレージへのスループットを増やせるようにします。
-
また、データベースに直接書き込むのではなく、データベースの前にキューを導入することもできます。このパターンでは、データの取り込みをデータベースから切り離し、フローレートを制御することで、データベースが過負荷になるのを回避できます。
-
存続時間の短いトランザクションを大量に作成するのではなく、書き込みリクエストをバッチ処理することで、書き込み量の多いリレーショナルデータベースのスループットを向上させることができます。
-
DynamoDB のようなサーバーレスデータベースは、キャパシティモードに応じて、自動的に、またはプロビジョニングされた書き込みキャパシティユニット (WCU) を調整することにより、書き込みスループットをスケーリングできます。
-
それでも、特定のパーティションキーのスループット制限に達すると、ホットパーティションで問題が発生する可能性があります。これは、より均等に分散されたパーティションキーを選択するか、パーティションキーを書き込みシャーディングすることで緩和できます。
データセットのライフサイクルを管理するためのポリシー -
Amazon S3 Lifecycle を使用して、 オブジェクトのライフサイクル全体を管理できます。アクセスパターンが不明、変化している、または予測できない場合は、 Amazon S3 Intelligent-Tiering を使用できます。Intelligent-Tiering は、アクセスパターンをモニタリングし、アクセスされていないオブジェクトをコストの低いアクセス層に自動的に移動します。ライフサイクル管理における最適化の機会やギャップを特定するには、 Amazon S3 Storage Lens を活用できます。
-
Amazon EFS ライフサイクル管理 は、ファイルシステムのファイルストレージを自動的に管理します。
接続管理とプーリング -
Amazon RDS や Aurora でデータベースへの接続を管理するには、Amazon RDS Proxy を使用できます。
-
DynamoDB などのサーバーレスデータベースには関連付けられている接続はありませんが、負荷の急増に対応するためにプロビジョンドキャパシティおよび自動スケーリングのポリシーを検討します。
-
-
非運用環境で実験とベンチマーキングを行い、どの設定オプションがワークロード要件に対応できるかを特定します。
-
実験が終わったら、移行を計画し、パフォーマンスメトリクスを検証します。
-
AWS のモニタリングツール ( Amazon CloudWatch
など) と最適化ツール ( Amazon S3 Storage Lens ) などを使用して、実際の使用パターンに基づいてデータストアを継続的に最適化します。
リソース
関連ドキュメント:
関連動画:
関連する例: