この Azure Well-Architected Framework のコスト最適化チェックリストの推奨事項に適用されます。
| CO:10 | データコストを最適化します。 データの優先順位を使用したデータ支出。 データの最適化には、データ管理 (階層化と保持)、ボリューム、レプリケーション、バックアップ、ファイル形式、ストレージ ソリューションの機能強化が含まれている必要があります。 |
|---|
このガイドでは、ワークロードのデータ コストを最適化するための推奨事項について説明します。 データ コストを最適化するには、その重要性とアクセス頻度に応じて、データのストレージと管理に関連する費用を最小限に抑える必要があります。 適切なデータ管理により、オーバーヘッド コストを大幅に削減し、データ ユーティリティに合わせて支出を調整できます。 データ コストの最適化を怠った場合、ストレージ ソリューションの配置が間違い、不要なデータ保持が原因で、コストの増大、非効率的なリソースの割り当て、および財務上の無駄につながる可能性があります。
定義
| 任期 | 定義 |
|---|---|
| データ ライフサイクル管理 | 作成から削除まで、ライフサイクル全体にわたってデータを管理するプロセス。 このプロセスには、データの値と使用パターンに基づくデータの整理、格納、保護、アーカイブが含まれます。 |
| データの冗長性 | 複数のストレージ システムまたは場所にデータの重複コピーを格納する方法。 データの冗長性の目的は、データの可用性とフォールト トレランスを向上することです。 |
| データの階層化 | アクセス頻度に基づいてデータを分類し、それに応じてストレージ層に格納するストレージ戦略。 |
| 保持ポリシー | データを削除する前に保持する必要がある期間。 法的、規制、またはビジネス要件を満たすためにデータを保持する必要がある期間を指定します。 |
特定のワークロード内では、データの格納と管理に関連する費用を削減することで、データ コストを最適化します。 データ ストレージと処理コストを最小限に抑えるためのさまざまな戦略とベスト プラクティスがあります。 目標は、データ コストをデータの優先順位に合わせることです。 アクセスの重要度または頻度に基づいて、データの種類にコストレベルを割り当てる必要があります。
ワークロード データのコストの主な要因は、アクセス頻度、アクセス待機時間、ストレージ量です。 次のガイダンスには、これらのコスト ドライバー全体のコストを最適化するための戦略が含まれています。
データのインベントリを取得する
データのコストを最適化する前に、データのインベントリを生成する必要があります。 データ アクセスを調べ、ワークロードとその操作におけるその重要性を判断します。 頻繁にアクセスされるデータとアクセス頻度の低いデータを特定します。 次のインベントリ アクションは、ストレージ リソースを効果的に割り当てるのに役立ちます。
データ アクセス情報を収集する: データ監査を実施して、すべてのデータ ストアを特定してカタログ化します。 ビジネス運用、投資収益率、使用頻度に対する重要度に基づいて、データ セットの価値を決定します。 データ ストレージ ソリューションからアクセス ログ、使用状況メトリック、または分析を収集します。
データ型を識別する: 個人データ、財務データ、知的財産、運用データなど、その種類に基づいてデータを分類します。 各データ型の機密性と重要度を理解します。
アクセス パターンを特定する: 毎日、毎週、または毎月の使用パターンなど、データ アクセスのパターンを特定します。 そのデータの待機時間、ファイル サイズ、およびデータの鮮度の要件を理解する必要があります。
データに優先順位を付ける
データの優先順位付けとは、機密性と重要度に基づいて重要度レベルを分類し、データの種類に割り当てるプロセスです。 データの優先順位は、環境の重要性と一致する必要があります。 たとえば、運用データは実稼働前データよりも重要です。
次の手順を使用して、ワークロードに対するさまざまな種類のデータの重要性を評価します。
優先度レベルを定義します。 組織への価値、規制要件、およびデータ損失の潜在的な影響に基づいて、データの優先度レベル (高、中、低など) を確立します。 目標は、データの優先順位を適切なデータ ソリューションに合わせることです。
ラベルを割り当てる: 各データ セットに秘密度と重要度のラベルを付けます。 データ構造と使用状況に応じて、行、列、またはファイル レベルでラベルを適用できます。 データベースの場合は、特別なツールを使用して、データの機密性と重要度にラベルを付け、特定の行と列に関連付けることができます。 この方法では、データの管理とアクセスをきめ細かく制御できます。
データ管理を最適化する
データ管理は、ワークロード データを格納、移動、およびセキュリティ保護するプロセスです。 データ管理を最適化することで、支出をデータの優先順位に合わせ、データからより多くの価値を引き出すことができます。 データ管理には、次の戦略を検討してください。
データ ライフサイクル管理を最適化する
ライフサイクル全体を通してデータを管理することが重要です。 ライフサイクルのステージには、データの作成 (または取得)、ストレージ、使用状況、共有、保持、破棄 (削除またはアーカイブ) が含まれます。 データ ライフサイクル管理の目標は、関連する規制とポリシーに準拠しながら、データ ストレージ ソリューションを最適化することです。
データ ストレージには、次の 3 つの重要なコスト コンポーネントがあります。
ストレージ コスト: ギガバイト単位などのデータの格納に関連する費用。
トランザクション コスト: 書き込み操作、読み取り操作、データ取得 (ギガバイト単位) などのデータ操作にリンクされているコスト。 データの読み取りと書き込みのコストが異なる場合があります。
待機時間のコスト: データへのアクセスの速度または遅延に関連する費用。
データ ライフサイクル管理の基礎となる考慮事項を次に示します。
データ階層化を使用する: データ階層化の目的は、アクセスとリテンション期間を最もコスト効率の高いストレージ層に合わせることです。 ストレージ層の範囲は、頻繁/即時アクセス (ホット) から頻度の低いアクセスまたは遅延アクセス (コールド) までです。
データ アクセスとリテンション期間のニーズに合わないレベルを使用すると、コストが高くなります。 たとえば、アプリケーションが頻繁にアクセスするデータは、ホット ストレージ内にある必要があります。 アプリケーションがアクセス頻度の低いデータは、コールド ストレージに格納する必要があります。 これらの側面を効果的に管理することで、効率的なデータ ストレージを確保できます。
コンプライアンス要件を検討します。 データ階層化を実装するには、コンプライアンス要件とデータ ガバナンス ポリシーを慎重に検討する必要があります。 多くの場合、コンプライアンスと法的要件によってデータアクセスと保持が促進されます。 データ保持ポリシーを確立して、法的、規制、およびビジネス要件に確実に準拠します。
データ ライフサイクル ポリシーを定義します。 データ ライフサイクル ポリシーでは、定義済みの条件に基づいて、ストレージ層間でデータを移動するタイミングと方法を指定します。 これらのポリシーにより、必要な期間、データが適切なレベルに保持されます。 たとえば、ポリシーでは、データをホット 層に 30 日間、クール層で 90 日間、アーカイブ層に 1 年間保持する必要があることを示すことができます。 法的要件、業界の規制、内部ポリシーなどの要因に基づいて保持期間を設定します。
自動化を使用する: 保持ポリシーは、層間のデータ移動をトリガーできます。 カスタム ソリューションを構築する前に、プラットフォーム機能を使用してポリシーを自動化する必要があります。
特定のレベルの保持期間が経過すると、ポリシーは自動的にデータを次の低コストレベルに移動できます。 たとえば、ホット 層のリテンション期間が終了すると、ポリシーはクール層にデータを移動できます。 このポリシーにより、アクセス パターンとコスト要件に基づいてデータが継続的に最適化されます。
トレードオフ: データ保持ポリシーを管理するには、継続的な監視とメンテナンスが必要です。 データ管理プロセスのオーバーヘッドが増える可能性があります。 また、ストレージ コストにも影響する可能性があります。 保有期間が長い場合や、コストの高いストレージ層を使用すると、ストレージコストが増加する可能性があります。
リスク: データ ライフサイクル管理の実装が不十分な場合、データが失われたり、重要なデータへのアクセスが制限されたりする可能性があります。 データ損失のリスクを軽減するために、適切なバックアップと回復のメカニズムが用意されている必要があります。
データのセグメント化を最適化する
データのセグメント化を最適化するには、データを戦略的に個別のセグメントに編成し、同様のデータ型を統合してストレージ リソースを効率的に割り当てる必要があります。 これにより、ストレージ リソースの割り当てをデータの優先順位に合わせて調整できます。
データのセグメント化を効果的に最適化するには、データを種類と使用パターン別に分類します。 次に、運用上の類似点と要件に応じて、最も効果的なソリューションにデータ セグメントを配置します。 たとえば、取得時間が短いリソースに、高パフォーマンスのストレージを必要とするデータを配置します。 アーカイブ データでは、取得時間が遅い低コストのリソースが使用されます。
この方法により、需要の高いデータは最適なパフォーマンスのためにより高速なストレージを使用し、アクセスの少ないデータでは低コストのストレージを使用できます。 同様に、データ型が使用パターンを共有する場合は、オーバーヘッドを削減し、管理を簡素化し、データ処理を改善するために、それらを 1 つのリソースにグループ化する必要があります。
データ転送を最小限に抑える
データ転送を最小限に抑えることは、ネットワーク間のデータ移動の削減を意味し、データ転送コストを削減します。 これにより、ワークロードが移動するデータの量が減り、ネットワーク使用料が削減されます。 データ転送を最小限に抑えるには、次の推奨事項を検討してください。
- 適切な場所を使用します。 データを地理的にユーザーの近くに配置します。 データの近接性により、ネットワーク移動が削減され、アクセスが高速化され、コストが最適化されます。
- キャッシュを使用します。 データ転送を最小限に抑えるためにキャッシュの利点を検討してください。
- コンテンツ配信ネットワークを使用します。 コンテンツ配信ネットワークでは、頻繁に読み取られた静的データをユーザーの近くに格納できます。 ネットワーク全体のデータ移動を減らし、帯域幅の使用量をオフロードするのに役立ちます。
セキュリティとコンプライアンスを最適化する
特定の運用データでは、より高いセキュリティとコンプライアンスの要件が必要です。 これらの対策により、データ保護、暗号化、バックアップ、保持、監査に関連する追加コストが発生する可能性があります。
データ ストレージ ソリューションの変更がこれらの要件に準拠していることを確認する必要があります。 セキュリティとコンプライアンスの要件が低いデータは、多くの場合、コストを最適化する機会を提供します。
データ ボリュームを最適化する
格納するデータの量を減らすための戦略を見つけることは、コストの削減に役立ちます。 データのアクセシビリティを変更し、次の手法を実装することで、格納されているデータの量を効果的に最適化できます。
キャプチャするデータの量を減らす: キャプチャするデータを詳しく見てみましょう。 目的に必要がないかどうかを判断します。 プロセス、設定、または構成を変更して、重要なデータのみをキャプチャします。
データの圧縮: 圧縮では、データのサイズを小さくすることでコストを節約できます。 これは、書き込み 1 回、読み取りなし、または読み取り頻度の低いシナリオで最も効果的です。 これは、より寒いストレージに適しています。
トレードオフ: データの圧縮と展開の両方で、CPU 時間が増加します。
不要なデータを削除する: 関連する情報を格納するプロセスを効率化するためのポリシーを実装します。 バックアップとスナップショットの保有期間を評価し、不要になったデータを削除します。 データの最初のアーカイブや論理的な削除期間の有効化など、最終的なデータ削除につながるプロセスが必要になる場合があります。 データを削除する前に、常に回復可能性を考慮してください。
データの重複除去: 冗長データを排除するデータ重複除去手法を実装します。 重複除去を使用すると、一意のデータ ブロックのみを確実に格納できるため、ストレージ要件が削減されるため、コストを節約できます。 ハッシュ アルゴリズムとデータ チャンクの比較を使用します。 重複除去プロセスを定期的に実行して、重複データを特定して排除します。
ユーザーの動作を最適化する: ユーザーが生成したデータを収集するワークロードでは、効率的なデータ ストレージの重要性についてユーザーに教育します。 不要なファイルやデータを定期的に確認して削除するよう勧めます。 過剰なデータ ストレージを阻止するストレージ クォータまたは価格モデルを実装します。
データ レプリケーションを最適化する
データ レプリケーションでは、データの複数のコピーを作成し、信頼性のために他の地理的な場所またはゾーンに格納します。 レプリケーションにより、1 つの場所またはゾーンで障害や停止が発生した場合でも、他の場所のレプリケートされたコピーからデータにアクセスできます。
この冗長性は、データの可用性と回復性の向上に役立ちます。 データ損失とダウンタイムのリスクを最小限に抑えます。
コストの最適化のためにデータ レプリケーションを最適化するには、次のガイドラインを考慮してください。
データ レプリケーションの要件を評価する: ワークロードの特定のニーズを評価し、必要なデータ レプリケーションのレベルを決定します。 データの重要度、目標復旧時間 (RTO)、目標復旧時点 (RPO) などの要因を考慮してください。
適切なレプリケーション戦略を選択する: コストの最適化の目標に合ったレプリケーション テクノロジを選択します。 ワークロードのサービス レベル アグリーメント (SLA) 要件を検討します。
同期レプリケーション、非同期レプリケーション、またはその両方の組み合わせなどのオプションを評価します。 データ整合性要件やネットワーク帯域幅に関する考慮事項などの要因に基づいて決定します。 ワークロードに必要な可用性のレベルを評価し、ゾーンとリージョンの冗長性の必要性を評価します。
ネットワーク帯域幅の最適化: 圧縮とデータ重複除去の手法を実装することで、ネットワーク帯域幅の使用を最小限に抑えます。 これらの手法を使用すると、レプリケーション中に転送されるデータの量を減らすことができます。これにより、コストを節約できます。
レプリケーションの頻度の監視と最適化: ワークロードのニーズの変化に基づいて、レプリケーションの頻度を定期的に確認して調整します。 レプリケーションの頻度を微調整すると、不要なレプリケーションのオーバーヘッドを減らすことでコストを最適化できます。
バックアップを最適化する
バックアップは、プライマリ ストレージとは別に作成および格納できるデータの定期的なスナップショットまたはコピーです。 データの破損、誤った削除、またはシステム障害が発生した場合は、バックアップを使用してデータを以前の状態に復元できます。
バックアップを最適化するための手法を次に示します。
データ分類: バックアップの重要度と優先順位に基づいてデータを分類します。 分類を使用すると、重要でないデータのバックアップ コストを最小限に抑えながら、重要なデータのバックアップにリソースを集中できます。
増分バックアップ: 毎回完全バックアップを実行する代わりに、増分バックアップの実装を検討してください。 増分バックアップでは、前回のバックアップ以降に行われた変更のみがキャプチャされるため、ストレージとネットワーク帯域幅の要件を減らすことができます。
トレードオフ: 増分バックアップでは、データを復元するためにより多くの手順と時間が必要です。 最初に完全バックアップを復元してから、目的の復元ポイントに到達するまで、各増分バックアップを順番に適用する必要があります。
バックアップ圧縮: バックアップ プロセス中に圧縮を有効にして、バックアップ ファイルのサイズを小さくします。 圧縮されたバックアップでは、ストレージ領域が少なくて済むため、コストを節約できます。
バックアップ ストレージ層: バックアップ保有ポリシーを評価し、古いバックアップをコールド ストレージやアーカイブ ストレージなどの低コストのストレージ層に移動することを検討します。 アクセス頻度の低いバックアップをコスト効率の高いストレージ オプションに格納すると、コストを最適化できます。
バックアップの保有期間: ビジネス要件とコンプライアンス規制に基づいて、バックアップの保有期間を確認して調整します。 バックアップを長期間維持すると、追加のストレージ コストが発生する可能性があります。
バックアップ頻度: さまざまな種類のデータのバックアップ頻度を分析します。 データの変更頻度とデータの重要度に基づいてバックアップ スケジュールを調整します。 これらのプラクティスは、不要なバックアップを排除し、ストレージ コストを削減するのに役立ちます。
ファイル形式を最適化する
ファイル形式は、データの入出力 (I/O) パターンとクエリ パターンを最適化することで、コストの最適化に影響します。 一部のファイル形式は、特定のシナリオに対応します。 ファイル形式をワークロードの要件に合わせて調整すると、ワークロードのパフォーマンスが向上します。
一般的な形式に関する考慮事項を次に示します。
Avro: Avro ファイル形式は、書き込み負荷の高い I/O パターンを処理する場合や、クエリ パターンで複数のレコード行全体をフェッチする必要がある場合に適しています。 Avro のシリアル化と逆シリアル化のプロセスは効率的であるため、一連のイベントとメッセージを連続して生成する Kafka などのメッセージ バスと互換性があります。
Parquet および Optimized Row Columnar (ORC):Parquet ファイル形式と ORC ファイル形式は、読み取り負荷の高い I/O パターンのシナリオや、クエリ パターンがレコードの特定の列に焦点を当てる場合に優れています。
どちらの形式も列形式ストレージです。つまり、データは行単位ではなく列単位で格納されます。 列形式ストレージを使用すると、圧縮の向上と効率的な読み取り操作が可能になります。 必要な列のみをフェッチする必要があるため、無関係なデータに対して不要な I/O を回避できます。
ストレージ ソリューションを最適化する
データに最適なストレージ方法とシステムを評価して選択します。 この作業には、データベースの切り替え、さまざまなストレージの種類の使用、キャッシュ メカニズムの追加などがあります。 管理の容易さは、ストレージ ソリューションを選択する際に考慮すべきもう 1 つの要素です。
データの特定のニーズと特性に合わせてストレージ ソリューションを調整することで、パフォーマンスとスケーラビリティの要求を満たしながら、より優れたコスト効率を実現できます。 データベースの切り替えやサービスのスワップにはコストがかかりますが、間違ったストレージ ソリューションにデータを格納すると、余分なコストが発生する可能性があります。
いくつかのユース ケースを次に示します。
データベースの切り替え: ニーズに合ったデータベース システムに切り替えることを検討できます。 たとえば、リレーショナル データベースを使用している場合は、データがよりドキュメント指向であるか、柔軟なスキーマが必要な場合に、NoSQL データベースに移動するオプションを調べることができます。
リレーショナル データベースからフラット ファイル ストアへの移行: 場合によっては、従来のリレーショナル データベースではなくフラット ファイルにデータを格納すると、シンプルさとコスト効率などの利点が得られます。 フラット ファイルは、ログ ファイルや複雑なクエリを必要としないデータなど、特定の種類のデータに適しています。 たとえば、バイナリ イメージを SQL データベースに格納できますが、バイナリ データの処理専用のストレージ サービスに格納する方がコスト効率が高くなります。
概要を使用してログ データ コストを最適化する: 大量のログ データ ストリームの場合は、分析機能を維持しながらストレージ コストを削減するために、集計手法を使用することを検討してください。
サービスとしてのインフラストラクチャ (IaaS) からサービスとしてのプラットフォーム (PaaS) への移行: IaaS データベース ソリューションは、技術チームの注意をコア タスクから転用する、時間がかかり、リソースを集中的に消費するプロパティになる可能性があります。 データ量の増加と、手動によるスケーリング、バックアップ、インフラストラクチャのメンテナンスの課題により、PaaS ソリューションのコスト効率と効率が向上します。
キャッシュの追加: メイン データベース サーバーでのリソース使用量を減らすには、複雑なクエリ結果をキャッシュするためのキャッシュ ソリューションの使用を検討してください。 データベース サーバーの権限を付与すると、コストの最適化に役立つ場合があります。 該当するユース ケースでは、キャッシュされたデータと共に Time to Live (TTL) を使用して、ストレージのニーズを削減し、コストを削減することを検討してください。
クエリ最適化ストアとデータ ストレージ ストア: クエリ最適化ストアは、高速なデータ取得と分析のために設計されています。 クイック データ インジェストと読み取りに重点を置きますが、頻繁な更新には重点を置いていません。 時系列データや最近のデータへの迅速なアクセスには適していますが、大量のトランザクション タスクには適していません。
データ ストレージ ストアは、特に非構造化データや半構造化データなど、大量の柔軟なデータを処理します。 データ ストレージ ストアは分析をサポートできますが、複雑なタスクには特殊なデータベースが必要になる場合があります。 NoSQL のユース ケースなどのシナリオでは、ログやユーザーが生成したコンテンツなどの多くの変数データを格納する場合に最適です。
Azure ファシリテーション
データのインベントリを取得する: Microsoft Purview は、データ資産全体を組織が管理、保護、管理するのに役立つデータ ガバナンス、リスク、コンプライアンス ソリューションのファミリです。 Microsoft Purview ソリューションは、統合されたカバレッジを提供し、リモート ユーザー接続の最近の増加、組織全体のデータの断片化、従来の IT 管理ロールのぼやけに対処するのに役立ちます。
データ管理の最適化: Azure Storage と Azure Data Lake Storage には、異なる データ アクセス層があります。 また、データの階層化と保持 を自動化するデータ ライフサイクル管理ポリシー も提供します。
ルールベースのポリシーを使用して、BLOB データを適切なアクセス層に移行したり、ライフサイクルの終了時にデータを期限切れにしたりすることができます。 このポリシーを使用すると、BLOB をクール (またはコールド) からホットに切り替えてアクセスするとすぐに、パフォーマンスを最適化できます。
バックアップの最適化: Azure Backup サービスには、バックアップを合理化するための複数の機能が用意されています。 ディスク スナップショットを使用したネイティブ データベース バックアップやストレージ バックアップなどの機能が提供されます。 仮想マシンのバックアップ、長期的なリテンション期間、バックアップ管理がサポートされます。
サービスの機能の一部を次に示します。
監視: バックアップ センターを 1 つのウィンドウとして使用して、ジョブとバックアップ インベントリを日常的に監視できます。 バックアップ センターには、Azure Monitor ログと Azure ブックを使用するバックアップ レポートへのインターフェイスが用意されています。
レポート: バックアップ レポートには、次の機能があります。
- 使用されるクラウド ストレージを割り当てて予測します。
- バックアップと復元を監査します。
- さまざまなレベルの細分性で主要な傾向を特定します。
- バックアップのコスト最適化の機会を可視化し、分析情報を得ることができます。
予約容量: Azure Backup Storage の予約容量では、1 年または 3 年間の予約にコミットするときに、コンテナー標準レベルに格納されているバックアップ データの容量が割引されます。 予約は、予約の期間中、一定量のバックアップストレージ容量を提供します。
アーカイブ層: Azure Backup を使用すると、組織のコンプライアンス規則で定義されている保有期間のニーズに応じて、長期保有 (LTR) バックアップ データを含むバックアップ データを格納できます。 ほとんどの場合、古いバックアップ データにアクセスすることはほとんどなく、コンプライアンスのニーズに合わせてのみ格納されます。 Azure Backup では、スナップショットと Standard レベルに加えて、 アーカイブ層の LTR ポイントのバックアップがサポートされています。
ストレージ ソリューションの最適化: Azure には多くのストレージ ソリューションがあります。 これらは、特定の要件に基づいてコストを最適化するのに役立つさまざまな機能を提供します。 Azure には、 適切なデータ ストアの選択に役立つガイダンスがあります。
最適なストレージ ソリューションと構成を選択するには、データ アクセス パターン、リテンション期間のニーズ、パフォーマンス要件を評価することが重要です。 Azure Advisor などのツールを使用してストレージの使用状況を定期的に監視および最適化することで、コストをさらに最適化できます。
Azure Monitor Log Analytics の概要ルールのクエリを最適化すると、さまざまなサービス レベルで高インジェスト率の高いデータ ストリームを自動的に要約できます。 このアプローチでは、分析とレポートのために詳細な生データが集計されたデータセットに集約される階層化されたアーキテクチャを作成することで、コスト効率の高い長期的なデータ保持を実現し、分析分析情報を保持しながらストレージコストを大幅に削減します。
関連リンク
- 統合に関する推奨事項
- Microsoft Purview
- データ アクセス層
- データ ライフサイクル管理ポリシー
- Azure Backup Storage
- アーカイブ層
- 適切なデータ ストアを選択する
コスト最適化チェックリスト
完全なレコメンデーションのセットを参照してください。