

# SUS 3 ソフトウェアとアーキテクチャのパターンをどのように利用して、持続可能性目標を目指しますか?
<a name="sus-03"></a>

負荷平滑化を実行しデプロイされたリソースが一貫して高使用率で維持されるパターンを実装し、リソースの消費を最小化します。時間の経過とともにユーザーの行動が変化したため、コンポーネントが使用されずアイドル状態になることがあります。パターンとアーキテクチャを改定して、使用率の低いコンポーネントを統合し、全体の使用率を上げます。不要になったコンポーネントは廃止します。ワークロードコンポーネントのパフォーマンスを理解し、リソースの消費が最も大きいコンポーネントを最適化します。顧客がお客様のサービスにアクセスするために使用するデバイスを把握し、デバイスをアップグレードする必要性を最小化するパターンを実装します。

**Topics**
+ [SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する](sus_sus_software_a2.md)
+ [SUS03-BP02 使用率が低い、またはまったく使用しないワークロードのコンポーネントを削除またはリファクタリングする](sus_sus_software_a3.md)
+ [SUS03-BP03 時間やリソースを最も多く消費するコード領域を最適化する](sus_sus_software_a4.md)
+ [SUS03-BP04 デバイスや機器への影響を最適化する](sus_sus_software_a5.md)
+ [SUS03-BP05 データアクセスとストレージパターンのサポートが最も優れたソフトウェアパターンとアーキテクチャを使用する](sus_sus_software_a6.md)

# SUS03-BP01 非同期のジョブおよびスケジュールされたジョブ向けにソフトウェアとアーキテクチャを最適化する
<a name="sus_sus_software_a2"></a>

キュー駆動型などの効率的なソフトウェアおよびアーキテクチャパターンを使用して、デプロイされたリソースの使用率を一貫して高く維持します。

 **一般的なアンチパターン:** 
+  予期せぬ需要の急増に対応するために、クラウドワークロードのリソースを過剰にプロビジョニングしています。
+  お使いのアーキテクチャでは、メッセージングコンポーネントによって非同期メッセージの送信者と受信者が切り離されていません。

 **このベストプラクティスを活用するメリット:** 
+  効率的なソフトウェアとアーキテクチャのパターンは、ワークロード内の未使用リソースを最小限に抑え、全体的な効率を向上させます。
+  非同期メッセージの受信とは無関係に処理をスケールできます。
+  メッセージングコンポーネントを使用することで、可用性要件が緩和され、より少ないリソースで対応できるようになります。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 [イベント駆動型](https://aws.amazon.com/event-driven-architecture/)アーキテクチャなどの効率的なアーキテクチャパターンを使用すると、コンポーネントの使用率が均等になり、ワークロードのオーバープロビジョニングを抑えます。効率的なアーキテクチャパターンを使用することで、時間の経過に伴う需要の変化により、使用されずにアイドル状態になるリソースを最小限に抑えることができます。

 ワークロードコンポーネントの要件を理解し、リソース全体の利用率を高めるアーキテクチャパターンを採用します。不要になったコンポーネントは廃止します。

### 実装手順
<a name="implementation-steps"></a>
+  ワークロードの需要を分析し、それらに対応する方法を決定します。
+  同期応答を必要としないリクエストやジョブには、キュー駆動型アーキテクチャと自動スケーリングワーカーを使用して使用率を最大化します。キュー駆動型アーキテクチャを検討する場合の例を次に示します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/wellarchitected/2024-06-27/framework/sus_sus_software_a2.html)
+  いつでも処理できるリクエストやジョブについては、スケジューリングメカニズムを利用してジョブをバッチ処理することで効率化を図ります。AWS でのスケジューリングメカニズムの例を次に示します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/wellarchitected/2024-06-27/framework/sus_sus_software_a2.html)
+  アーキテクチャでポーリングやウェブフックのメカニズムを使用している場合、それらをイベントに置き換えます。[イベント駆動型アーキテクチャを使用して](https://docs.aws.amazon.com/lambda/latest/operatorguide/event-driven-architectures.html)、高効率のワークロードを構築します。
+  [AWS でサーバーレス](https://aws.amazon.com/serverless/)を活用して、過剰にプロビジョニングされたインフラストラクチャを排除します。
+  アーキテクチャの個別のコンポーネントの適切なサイズを設定し、リソースが入力を待ってアイドル状態になるのを防ぎます。
  +  または [AWS Cost Explorer または [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) で適切なサイズ設定に関する推奨事項](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)を使用して、適切なサイズ設定の機会を特定できます。
  +  詳細については、「[適切なサイジング: ワークロードに適したインスタンスのプロビジョニング](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-right-sizing/cost-optimization-right-sizing.html)」を参照してください。

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+  [Amazon Simple Queue Service とは](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [Amazon MQ とは](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [Amazon SQS に基づくスケーリング](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [AWS Step Functions とは](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [AWS Lambda とは](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [Amazon SQS での AWS Lambda の使用](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 
+ [ REST API を使用した非同期ワークフローの管理 ](https://aws.amazon.com/blogs/architecture/managing-asynchronous-workflows-with-a-rest-api/)

 **関連動画:** 
+ [AWS re:Invent 2023 - Navigating the journey to serverless event-driven architecture ](https://www.youtube.com/watch?v=hvGuqHp051c)
+ [AWS re:Invent 2023 - Using serverless for event-driven architecture & domain-driven design ](https://www.youtube.com/watch?v=3foMZJSPMI4)
+ [AWS re:Invent 2023 - Advanced event-driven patterns with Amazon EventBridge ](https://www.youtube.com/watch?v=6X4lSPkn4ps)
+ [AWS re:Invent 2023 - Sustainable architecture: Past, present, and future ](https://www.youtube.com/watch?v=2xpUQ-Q4QcM)
+ [ Asynchronous Message Patterns \$1 AWS Events ](https://www.youtube.com/watch?v=-yJqBuwouZ4)

 **関連する例:** 
+ [AWS Graviton プロセッサと Amazon EC2 スポットインスタンスを使用したイベント駆動型アーキテクチャ ](https://catalog.workshops.aws/well-architected-sustainability/en-US/2-software-and-architecture/event-driven-architecture-with-graviton-spot)

# SUS03-BP02 使用率が低い、またはまったく使用しないワークロードのコンポーネントを削除またはリファクタリングする
<a name="sus_sus_software_a3"></a>

未使用のコンポーネントや不要になったコンポーネントを削除し、使用率の低いコンポーネントはリファクタリングして、ワークロードの無駄を最小化します。

 **一般的なアンチパターン:** 
+  ワークロードの個別のコンポーネントの使用率レベルを定期的に確認していない。
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) など AWS のサイズ最適化ツールからのレコメンデーションを確認しない。

 **このベストプラクティスを活用するメリット:** 未使用のコンポーネントを削除すると、無駄が最小限に抑えられ、クラウドワークロードの全体的な効率が向上します。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

クラウドワークロードで未使用または十分に活用されていないコンポーネントは、不要なコンピューティング、ストレージ、またはネットワークリソースを消費します。これらのコンポーネントを削除またはリファクタリングして、無駄を直接削減し、クラウドワークロードの全体的な効率を向上させます。これは、需要の変化や新しいクラウドサービスのリリースに伴う、反復的な改善プロセスです。例えば、[AWS Lambda](https://docs.aws.amazon.com/lambda/) 関数のランタイムが大幅に低下すると、メモリサイズを小さくする必要があることを示す指標になります。また、AWS で新しいサービスや機能がリリースされると、ワークロードに最適なサービスやアーキテクチャが変化する可能性があります。

 ワークロードのアクティビティを継続的にモニタして、個別のコンポーネントの使用率レベルを改善する機会を見逃さないようにします。アイドルのコンポーネントを削除しアクティビティのサイズ最適化を行って、最小限のクラウドリソースでビジネス要件を満たすようにします。

### 実装手順
<a name="implementation-steps"></a>
+  **AWS リソースのインベントリ作成:** AWSリソースのインベントリを作成します。AWS では、[AWS Resource Explorer](https://docs.aws.amazon.com/resource-explorer/latest/userguide/welcome.html) を有効にして AWS リソースを探索および整理できます。詳細については、「[AWS re:Invent 2022 - How to manage resources and applications at scale on AWS](https://www.youtube.com/watch?v=bbgUnKq6PAU)」を参照してください。
+  **使用率のモニタリング:** ワークロードの重要なコンポーネント ([Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) メトリクスの CPU 使用率、メモリ使用率、ネットワークスループットなど) の使用率メトリクスをモニタリング、キャプチャします。
+  **未使用コンポーネントの特定:** アーキテクチャ内の未使用のコンポーネントや使用率の低いコンポーネントを特定します。
  +  安定したワークロードの場合は、[AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) などの AWS サイズ最適化ツールを定期的にチェックして、アイドル状態、未使用、使用率の低いコンポーネントを特定します。
  +  一次的なワークロードについては、使用率メトリクスを評価して、アイドル、未使用、または使用率の低いコンポーネントを特定します。
+  **不要コンポーネントの削除:** 不要になったコンポーネントや関連アセット (Amazon ECR イメージなど) を廃止します。
  + [ Amazon ECR における未使用イメージの自動クリーンアップ ](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/)
  + [AWS Config および AWS Systems Manager を使用して未使用の Amazon Elastic Block Store (Amazon EBS) ボリュームを削除](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/delete-unused-amazon-elastic-block-store-amazon-ebs-volumes-by-using-aws-config-and-aws-systems-manager.html)
+  **低使用率コンポーネントのリファクタリング:** 使用率の低いコンポーネントをリファクタリングまたは他のリソースと統合して、使用効率を改善します。例えば、使用率の低い個別のインスタンスでデータベースを実行する代わりに、1 つの [Amazon RDS](https://aws.amazon.com/rds/) データベースインスタンスで複数の小さなデータベースをプロビジョニングできます。
+  **改善の評価:** ワークロードによってプロビジョニングされる、[作業の単位を完了するために必要なリソース](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/evaluate-specific-improvements.html)を理解します。この情報を使用して、コンポーネントを削除またはリファクタリングすることによって達成された改善を評価します。
  + [ 持続可能性プロキシメトリクスを使用してクラウド効率を測定して追跡する、パート I: プロキシメトリクスとは](https://aws.amazon.com/blogs/aws-cloud-financial-management/measure-and-track-cloud-efficiency-with-sustainability-proxy-metrics-part-i-what-are-proxy-metrics/)
  + [ 持続可能性プロキシメトリクスを使用してクラウド効率を測定して追跡する、パート II: メトリクスパイプラインの確立](https://aws.amazon.com/blogs/aws-cloud-financial-management/measure-and-track-cloud-efficiency-with-sustainability-proxy-metrics-part-ii-establish-a-metrics-pipeline/)

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+ [AWS Trusted Advisor](https://aws.amazon.com/premiumsupport/technology/trusted-advisor/)
+  [Amazon CloudWatch とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+ [ 適切なサイジング: ワークロードに適したインスタンスのプロビジョニング ](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-right-sizing/cost-optimization-right-sizing.html)
+ [ 適切なサイズ設定の推奨事項によるコストの最適化 ](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)

 **関連動画:** 
+ [AWS re:Invent 2023 - Capacity, availability, cost efficiency: Pick three](https://www.youtube.com/watch?v=E0dYLPXrX_w)

# SUS03-BP03 時間やリソースを最も多く消費するコード領域を最適化する
<a name="sus_sus_software_a4"></a>

アーキテクチャの異なるコンポーネント内で実行されているコードを最適化して、パフォーマンスを最大化しながらリソースの使用量を最小化します。

 **一般的なアンチパターン:** 
+  リソースの使用量に対してコードを最適化しない。
+  通常、パフォーマンスの問題にはリソースを増やすことで対処している。
+  コードの見直しおよび開発プロセスで、パフォーマンスの変化を追跡していない。

 **このベストプラクティスを活用するメリット:** 効率的なコードを使用すると、リソースの使用量が最小限に抑えられ、パフォーマンスが向上します。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 クラウドに構築されたアプリケーションのコードを含むあらゆる機能領域を精査して、そのリソース使用量とパフォーマンスを最適化することが重要です。ビルド環境および本稼働環境でワークロードのパフォーマンスを継続的にモニタし、リソースの使用量が特に高いコードスニペットを改善する機会を特定します。定期的な見直しプロセスを導入して、コードの中でリソースを効率的に使用していないバグまたはアンチパターンを特定します。自分のユースケースに合わせて、同じ結果になるシンプルで効率的なアルゴリズムを活用します。

## 実装手順
<a name="implementation-steps"></a>
+ **効率的なプログラミング言語を使用する:** ワークロードに効率的なオペレーティングシステムとプログラミング言語を使用します。エネルギー効率に優れたプログラム言語 (Rust など) の詳細については、「[Rust での持続可能性](https://aws.amazon.com/blogs/opensource/sustainability-with-rust/)」を参照してください。
+  **AI コーディングコンパニオンを使用する:** [Amazon Q Developer](https://aws.amazon.com/q/developer/) などの AI コーディングコンパニオンを使用して、コードの効率的な記述を検討します。
+ **コードレビューを自動化する:** ワークロードを開発する際に、自動化されたコードレビュープロセスを導入して、品質を向上させ、バグやアンチパターンを特定します。
  + [Amazon CodeGuru Reviewer でのコードレビューの自動化](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)
  + [ Amazon CodeGuru での同時実行バグの検出 ](https://aws.amazon.com/blogs/devops/detecting-concurrency-bugs-with-amazon-codeguru/)
  + [ Amazon CodeGuru を使用して Python アプリケーションのコード品質を向上させる ](https://aws.amazon.com/blogs/devops/raising-code-quality-for-python-applications-using-amazon-codeguru/)
+ **コードプロファイラーを使用する:** コードプロファイラーを使用して、時間またはリソースを最も多く使用するコードの領域を特定し、最適化の対象とします。
  + [ Amazon CodeGuru Profiler を使用して組織のカーボンフットプリントを削減する ](https://aws.amazon.com/blogs/devops/reducing-your-organizations-carbon-footprint-with-codeguru-profiler/)
  + [ Amazon CodeGuru Profiler を使用して Java アプリケーションのメモリ使用量を理解する ](https://aws.amazon.com/blogs/devops/understanding-memory-usage-in-your-java-application-with-amazon-codeguru-profiler/)
  + [ Amazon CodeGuru Profiler を使用してカスタマーエクスペリエンスを改善しコストを削減する ](https://aws.amazon.com/blogs/devops/improving-customer-experience-and-reducing-cost-with-codeguru-profiler/)
+  **モニタリングと最適化をする:** 継続的なモニタリングリソースを使用して、リソース要件が高い、または最適ではない構成のコンポーネントを特定します。
  +  コンピューティング負荷が高いアルゴリズムを、結果が同じであり、よりシンプルでより効率的なバージョンに置き換えます。
  +  ソートや書式設定などの不要なコードを削除します。
+  **コードのリファクタリングまたは変換を使用する:** アプリケーションのメンテナンスとアップグレードに [Amazon Q コード変換](https://aws.amazon.com/q/aws/code-transformation/)を検討します。
  + [ Amazon Q コード変換による言語バージョンのアップグレード ](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/code-transformation.html)
  + [AWS re:Invent 2023 - Amazon Q コード変換を使用してアプリケーションのアップグレードとメンテナンスを自動化する ](https://www.youtube.com/watch?v=LY76tak6Z1E)

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+  [Amazon CodeGuru Profiler とは](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [FPGA インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [AWS の構築ツールの AWS SDK](https://aws.amazon.com/tools/) 

 **関連動画:** 
+ [ Improve Code Efficiency Using Amazon CodeGuru Profiler ](https://www.youtube.com/watch?v=1pU4VddsBRw)
+ [ Automate Code Reviews and Application Performance Recommendations with Amazon CodeGuru ](https://www.youtube.com/watch?v=OD8H63C0E0I)

# SUS03-BP04 デバイスや機器への影響を最適化する
<a name="sus_sus_software_a5"></a>

アーキテクチャで使用されているデバイスや機器を理解し、それらの使用量を削減する戦略を使用します。これにより、環境に対するクラウドワークロードの全体的な影響を最小化できます。

 **一般的なアンチパターン:** 
+  顧客によって使用されるデバイスの環境に対する影響を無視する。
+  顧客によって使用されるリソースを手動で管理および更新している。

 **このベストプラクティスを活用するメリット:** 顧客のデバイス用に最適化されたソフトウェアパターンと機能を実装することで、クラウドワークロードの全体的な環境への影響を軽減できます。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 顧客のデバイスに合わせて最適化されたソフトウェアパターンや機能を実装することで、複数の方法で環境に対する影響を削減できます。
+  下位互換性がある新機能を実装することで、ハードウェアの置換を削減できます。
+  アプリケーションを最適化してデバイスで効率的に実行できるようにすることで、エネルギー消費を削減し、バッテリー寿命を延ばすことができます (バッテリー駆動の場合)。
+  また、アプリケーションをデバイスに合わせて最適化すると、ネットワーク経由のデータ転送も削減できます。

 アーキテクチャで使用されているデバイスや機器、それらの予想ライフサイクル、およびそれらコンポーネントを置換した場合の影響を理解します。デバイスのエネルギー消費、顧客がデバイスを置換する必要性、およびデバイスを手動でアップグレードする必要性を最小限にできるソフトウェアパターンや機能を実装します。

### 実装手順
<a name="implementation-steps"></a>
+ **棚卸しを実施する:** アーキテクチャで使用されているデバイスをリストアップします。デバイスには、モバイル、タブレット、IoT デバイス、スマートライト、さらに工場のスマートデバイスも含まれます。
+ **エネルギー効率が優れたデバイスを使用する:** エネルギー効率が優れたデバイスをアーキテクチャで使用することを検討してください。デバイスの電源管理設定を使用して、使用していないときは低電力モードに切り替えます。
+ **効率的なアプリケーションを実行する:** デバイスで実行されているアプリケーションを最適化します。
  +  バックグラウンドでのタスク実行などの戦略を使用して、エネルギーの消費量を削減します。
  +  ペイロードを構築する際にネットワーク帯域幅とレイテンシーを考慮し、低帯域幅、高レイテンシーのリンクでもアプリケーションが問題なく動作できる能力を実装します。
  +  ペイロードやファイルを、デバイスが必要とする最適な形式に変換します。例えば、[Amazon Elastic Transcoder](https://docs.aws.amazon.com/elastic-transcoder/) または [AWS Elemental MediaConvert](https://aws.amazon.com/mediaconvert/) を使用して、サイズが大きい高品質のデジタルメディアファイルを、ユーザーがモバイルデバイス、タブレット、ウェブブラウザ、およびネット接続したテレビで再生できる形式に変換できます。
  +  コンピューティングの負荷が高いアクティビティはサーバー側 (画像のレンダリングなど) で実行、またはアプリケーションストリーミングを使用して、古い型のデバイスでのユーザーエクスペリエンスを改善します。
  +  特にインタラクティブセッションの場合は、出力を分割してページ番号を付け、ペイロードを管理しローカルストレージの要件を制限します。
+ **サプライヤーを関与させる:** 持続可能な資材を使用し、サプライチェーンと環境認定に透明性を持ったデバイスサプライヤーと連携します。
+ **無線通信 (OTA) アップデートを使用する:** 自動化された無線通信 (OTA) の仕組みを使用して、1 つ以上のデバイスに更新をデプロイします。
  +  [CI/CD パイプライン](https://aws.amazon.com/blogs/mobile/build-a-cicd-pipeline-for-your-android-app-with-aws-services/)を使用してモバイルアプリケーションを更新できます。
  +  [AWS IoT Device Management](https://aws.amazon.com/iot-device-management/) を使用して、接続されたデバイスを大規模にリモートで管理できます。
+ **マネージド型 Device Farm を使用する:** 新機能や更新をテストするには、ハードウェアの代表的なセットを備えたマネージド型 Device Farm を使用して、サポート対象のデバイスを拡大する開発を繰り返します。詳細については、以下を参照してください。[SUS06-BP05 マネージド型 Device Farm を使用してテストする](sus_sus_dev_a5.md)
+ **モニタリングと改善を続ける:** デバイスのエネルギー使用量を追跡して、改善が必要な分野を特定します。新しいテクノロジーやベストプラクティスを活用して、これらのデバイスの環境に配慮した取り組みを強化します。

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+  [AWS Device Farm とは](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [WorkSpaces アプリケーションドキュメント](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+ [ FreeRTOS 実行デバイスでファームウェアを更新するための OTA チュートリアル ](https://docs.aws.amazon.com/freertos/latest/userguide/dev-guide-ota-workflow.html)
+ [ 環境持続可能性のための IoT デバイスの最適化 ](https://aws.amazon.com/blogs/architecture/optimizing-your-iot-devices-for-environmental-sustainability/)

 **関連動画:** 
+ [AWS re:Invent 2023 - Improve your mobile and web app quality using AWS Device Farm](https://www.youtube.com/watch?v=__93Tm0YCRg)

# SUS03-BP05 データアクセスとストレージパターンのサポートが最も優れたソフトウェアパターンとアーキテクチャを使用する
<a name="sus_sus_software_a6"></a>

データがどのようにワークロード内で使用されているか、ユーザーに消費されているか、転送されているか、保存されているかを理解します。データへのアクセスと保存を最適にサポートするソフトウェアパターンとアーキテクチャを使用して、ワークロードのサポートに必要なコンピューティング、ネットワーク、ストレージのリソースを最小化します。

 **一般的なアンチパターン:** 
+  すべてのワークロードのデータの保存とアクセスのパターンが類似していると考えている。
+  ストレージ階層を 1 つだけ使用し、すべてのワークロードがその階層に適していると考えている。
+  時間が経過してもデータアクセスパターンが変わらないと考えている。
+  アーキテクチャはデータアクセスの高バーストの可能性をサポートしているが、その結果リソースがほとんどの時間でアイドルのままになる。

 **このベストプラクティスを活用するメリット:** データアクセスとストレージパターンに基づいてアーキテクチャを選択、最適化すると、開発の複雑さが軽減され、全体的な使用率が向上します。グローバルテーブル、データのパーティショニング、キャッシュをいつ使用するべきかを理解することで、運用上の諸経費を減らし、ワークロードのニーズに応じてスケールできるようになります。

 **このベストプラクティスを活用しない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 ワークロードの長期的な持続可能性を向上させるには、ワークロードのデータアクセスとストレージ特性をサポートするアーキテクチャパターンを使用します。これらのパターンは、データを効率的に取得して処理するのに役立ちます。例えば、独自の分析ユースケースに最適化された専用サービスを使用して、AWS で[最新のデータアーキテクチャ](https://aws.amazon.com/big-data/datalakes-and-analytics/modern-data-architecture/)を使用します。このようなアーキテクチャパターンを使用すると、データ処理が効率的になり、リソースの使用量を削減できます。

### 実装手順
<a name="implementation-steps"></a>
+  **データ特性の理解:** データの特性やアクセスパターンを分析して、クラウドリソースに最適な構成を特定します。考慮する主な特徴には次のものがあります。
  +  **データ型:** 構造、半構造、非構造 
  +  **データの増加:** 制限あり、無制限 
  +  **データ保存期間:** 永続、一時的、一過性 
  +  **アクセスパターン:** 読み取りまたは書き取り、更新頻度、急増、安定 
+  **最適なアーキテクチャパターンの使用:** データアクセスとストレージパターンのサポートが最も優れたアーキテクチャパターンを使用します。
  + [ データ永続化を有効にするパターン ](https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-data-persistence/enabling-patterns.html)
  + [ Let’s Architect\$1 モダンデータアーキテクチャ](https://aws.amazon.com/blogs/architecture/lets-architect-modern-data-architectures/)
  + [AWS のデータベース: 特定のジョブに最適なデータベースを ](https://www.youtube.com/watch?v=-pb-DkD6cWg)
+  **専用サービスの使用:** 目的に合ったテクノロジーを使用します。
  +  圧縮データをネイティブに操作するテクノロジーを使用します。
    + [ Athena でサポートされる圧縮ファイル形式 ](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html)
    + [ での ETL 入力および出力の形式オプションAWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html)
    + [ Amazon Redshift を使用して Simple Storage Service (Amazon S3) から圧縮されたデータファイルをロードする ](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html)
  +  アーキテクチャでのデータ処理に専用の[分析サービス](https://aws.amazon.com/big-data/datalakes-and-analytics/?nc2=h_ql_prod_an_a)を使用します。AWS 専用分析サービスの詳細については、「[AWS re:Invent 2022 - Building modern data architectures on AWS](https://www.youtube.com/watch?v=Uk2CqEt5f0o)」を参照してください。
  +  主要なクエリパターンに対して最も優れたサポートをするデータベースエンジンを使用します。データベースインデックスを管理して、効率的なクエリを実行します。詳細については、「[AWS データベース](https://aws.amazon.com/products/databases/)」および「[AWS re:Invent 2022 - Modernize apps with purpose-built databases](https://www.youtube.com/watch?v=V-DiplATdi0)」を参照してください。
+  **データ移動を最小限にする:** アーキテクチャで消費されるネットワーク容量が削減できるネットワークプロトコルを選択します。

## リソース
<a name="resources"></a>

 **関連ドキュメント:** 
+  [列データ形式の COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [Firehose での入力レコード形式の変換](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [列指向形式に変換して Amazon Athena でのクエリパフォーマンスを改善する](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [Amazon Aurora での Performance Insights を使用した DB 負荷のモニタリング](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [Amazon RDS での Performance Insights を使用した DB 負荷のモニタリング](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+ [ Amazon S3 Intelligent-Tiering ストレージクラス](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/)
+ [ Amazon DynamoDB を使用して CQRS イベントストアを構築する ](https://aws.amazon.com/blogs/database/build-a-cqrs-event-store-with-amazon-dynamodb/)

 **関連動画:** 
+ [AWS re:Invent 2022 - Building data mesh architectures on AWS](https://www.youtube.com/watch?v=nGRvlobeM_U)
+ [AWS re:Invent 2023 - Deep dive into Amazon Aurora and its innovations](https://www.youtube.com/watch?v=je6GCOZ22lI)
+ [AWS re:Invent 2023 - Improve Amazon EBS efficiency and be more cost-efficient ](https://www.youtube.com/watch?v=7-CB02rqiuw)
+ [AWS re:Invent 2023 - Optimizing storage price and performance with Amazon S3 ](https://www.youtube.com/watch?v=RxgYNrXPOLw)
+ [AWS re:Invent 2023 - Building and optimizing a data lake on Amazon S3](https://www.youtube.com/watch?v=mpQa_Zm1xW8)
+ [AWS re:Invent 2023 - Advanced event-driven patterns with Amazon EventBridge ](https://www.youtube.com/watch?v=6X4lSPkn4ps)

 **関連する例:** 
+ [AWS 目的別データベースワークショップ](https://catalog.us-east-1.prod.workshops.aws/workshops/93f64257-52be-4c12-a95b-c0a1ff3b7e2b/en-US)
+ [AWS モダンデータアーキテクチャ Immersion Day](https://catalog.us-east-1.prod.workshops.aws/workshops/32f3e732-d67d-4c63-b967-c8c5eabd9ebf/en-US)
+ [ でのデータメッシュの構築AWS](https://catalog.us-east-1.prod.workshops.aws/workshops/23e6326b-58ee-4ab0-9bc7-3c8d730eb851/en-US)