

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

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

 ベストプラクティス: 

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

 ソフトウェアの効率的な設計とアーキテクチャを使用し、作業単位で必要な平均リソースを最小化します。コンポーネントの使用率が平均化されるメカニズムを実装し、タスクの合間でアイドルになるリソースを削減して、負荷のスパイクの影響を最小化します。 

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

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  即時処理を必要としないリクエストをキューに入れます。 
+  直列化を増やしてパイプライン全体の使用率を平均化します。 
+  個別のコンポーネントの容量を変更し、リソースが入力を待ってアイドル状態になるのを防ぎます。 
+  バッファを作成し、レート制限を設定して外部サービスの消費を円滑化します。 
+  使用できる中で最も効率的なハードウェアを使用し、ソフトウェアを最適化します。 
+  キュー駆動型アーキテクチャ、パイプライン管理、オンデマンドインスタンスワーカーを使用して、バッチ処理の使用率を最大化します。 
+  タスクをスケジュールして、同時実行による負荷のスパイクとリソースの競合を避けます。 
+  電力の炭素強度が最も低い時間帯にジョブを処理します。 

## リソース
<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) 
+  [AWS Lambda を Amazon SQS に使用する](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) 

 **関連動画:** 
+  [Building Sustainably on AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [Moving to event-driven architectures](https://www.youtube.com/watch?v=h46IquqjF3E) 

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

 ワークロードアクティビティをモニターして、個別のコンポーネントの時間経過による使用率の変化を特定します。未使用のコンポーネントや不要になったコンポーネントを削除し、使用率の低いコンポーネントはリファクタリングして、無駄なリソースを制限します。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  機能コンポーネントの負荷を (トランザクションフローや API コールなどのインジケーターを使用して) 分析し、未使用および使用率の低いコンポーネントを特定します。 
+  不要になったコンポーネントは使用停止にします。 
+  使用率の低いコンポーネントはリファクタリングします。 
+  使用率の低いコンポーネントを他のリソースと統合して、使用効率を改善します。 

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

 **関連するドキュメント:** 
+  [「AWS X-Ray とは何ですか。」](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch とは?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [ServiceLens を使用してアプリケーションのヘルスをモニターする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [Automated Cleanup of Unused Images in Amazon ECR (Amazon ECR における未使用画像の自動クリーンアップ)](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **関連動画:** 
+  [Building Sustainably on AWS (AWS でサステナブルに構築する)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

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

 ワークロードアクティビティをモニターして、リソースの消費が最も大きいアプリケーションコンポーネントを特定します。それらのコンポーネント内で実行されているコードを最適化して、パフォーマンスを最大化しながらリソースの使用量を最小化します。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  リソース使用率が作用するパフォーマンスをモニターして、作業単位でリソースを多く必要とするコンポーネント特定し、最適化の対象とします。 
+  コードプロファイラーを使用して、時間またはリソースを最も多く使用するコードの領域を特定し、最適化の対象とします。 
+  アルゴリズムを同じ結果が生成される、より効率的なバージョンに置き換えます。 
+  ハードウェアアクセラレーションを使用して、実行時間が長いコードブロックの効率を改善します。 
+  最も効率的なオペレーティングシステムとプログラム言語をワークロードに使用します。 
+  不要なソートと書式設定を削除します。 
+  データの変更頻度と消費方法に基づいて使用されるリソースを最小化するデータ転送パターンを使用します。例えば、状態変更情報は、クライアントがリソースを消費してポーリングし価値のない「変更なし」のメッセージを受信するのではなく、クライアントにプッシュします。 

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

 **関連するドキュメント:** 
+  [Amazon CloudWatch とは?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [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) 
+  [The AWS SDKs on Tools to Build on AWS (AWS の構築ツールの AWS SDK)](https://aws.amazon.com/tools/) 

 **関連動画:** 
+  [Building Sustainably on AWS (AWS でサステナブルに構築する)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

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

 お客さまのサービスを利用するために顧客が使用しているデバイスや機器、その予想ライフサイクル、およびそれらのコンポーネントを交換することによる金融および持続可能性に対する影響を理解します。顧客のデバイスの交換や機器のアップグレードの必要性を最小化するソフトウェアパターンとアーキテクチャを実装します。例えば、新機能の実装には、より古いハードウェアやオペレーティングシステムのバージョンと後方互換性のあるコードを使用します。また、ペイロードのサイズを管理して、対象デバイスのストレージ容量を超えないようにします。 

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

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  顧客が使用するデバイスのインベントリを作成します。 
+  マネージド型 Device Farm を代表的なハードウェアセットと共に使用してテストを行い、変更の影響を理解して、サポート対象のデバイスを最大化する開発を繰り返します。 
+  ペイロードを構築する際にネットワーク帯域幅とレイテンシーを考慮し、低帯域幅、高レイテンシーのリンクでもアプリケーションが問題なく動作できる能力を実装します。 
+  データペイロードを事前に処理して、ローカルでの処理要件を削減し、データ転送要件を制限します。 
+  コンピューティングの負荷が高いアクティビティはサーバー側 (画像のレンダリングなど) で実行するか、アプリケーションストリーミングを使用して、古い型のデバイスでのユーザーエクスペリエンスを改善します。 
+  特にインタラクティブセッションの場合は、出力を分割してページ番号を付け、ペイロードを管理しローカルストレージの要件を制限します。 

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

 **関連するドキュメント:** 
+  [AWS Device Farm とは?](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Amazon AppStream 2.0 のドキュメント](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Amazon Elastic Transcoder のドキュメント](https://docs.aws.amazon.com/elastic-transcoder/) 

 **関連動画:** 
+  [Building Sustainably on AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 

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

 データがどのようにワークロード内で使用されているか、ユーザーに消費されているか、転送されているか、保存されているかを理解します。データの処理と保存の要件を最小化するテクノロジーを選択します。 

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

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  データアクセスとストレージパターンを分析します。 
+  不要な処理を (分析の実行時などに) 回避するため、Parquet などの効率的なファイル形式でデータファイルを保存し、プロビジョンする合計ストレージを削減します。 
+  圧縮データをネイティブに操作するテクノロジーを使用します。 
+  主要なクエリパターンに対して最も優れたサポートをするデータベースエンジンを使用します。 
+  データベースインデックスを管理してインデックスの設計が効率的なクエリ実行を確実にサポートするようにします。 
+  消費されるネットワーク容量が削減できるネットワークプロトコルを選択します。 

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

 **関連するドキュメント:** 
+  [Athena でサポートされる圧縮ファイル形式](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [Amazon Redshift を使用した列指向のデータ形式からの 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) 
+  [AWS Glue の ETL 入出力の形式オプション](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [列指向形式に変換して Amazon Athena でのクエリパフォーマンスを改善する](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [Amazon Redshift を使用して圧縮されたデータファイルを Amazon S3 からロードする](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.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) 
+  [AWS IoT FleetWise](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-iot-fleetwise-transferring-vehicle-data-cloud/) 

 **関連動画:** 
+  [Building Sustainably on AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 