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