

# パフォーマンス効率
<a name="performance-efficiency"></a>

 パフォーマンス効率の柱には、システムの要件を満たすためにコンピューティングリソースを効率的に使用し、要求の変化とテクノロジーの進化に対してその効率性を維持する能力が含まれます。 

 このパフォーマンス効率の柱では、設計原則、ベストプラクティス、質問の概要を説明します。実装に関する規範的なガイダンスとして [パフォーマンス効率の柱に関するホワイトペーパーを参照してください。](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp).

**Topics**
+ [設計原則](perf-dp.md)
+ [定義](perf-def.md)
+ [ベストプラクティス](perf-bp.md)
+ [リソース](perf-resources.md)

# 設計原則
<a name="perf-dp"></a>

 クラウドには、パフォーマンス効率のための 5 つの設計原則があります。 
+  **最新テクノロジーを誰もが利用できるようにする**: 複雑なタスクをクラウドベンダーに委託することで、チームがより簡単に高度なテクノロジーを実装できるようにします。IT チームに新しいテクノロジーのホスティングと実行について学んでもらうのではなく、テクノロジーをサービスとして消費することを検討してください。たとえば、NoSQL データベース、メディアトランスコーディング、および機械学習などは、いずれも特化された専門知識を必要とするテクノロジーです。クラウドでは、これらのテクノロジーがチームによる消費が可能なサービスとなり、チームはリソースのプロビジョニングと管理ではなく、製品の開発に集中できるようになります。 
+  **わずか数分でグローバル展開する**世界中の複数の AWS リージョンにワークロードをデプロイすることで、最小限のコストで、より低いレイテンシーとより優れたエクスペリエンスをお客様に提供できます。 
+  **サーバーレスアーキテクチャを使用する**: サーバーレスアーキテクチャにより、従来のコンピューティングアクティビティのために物理的なサーバーを実行および維持する必要がなくなります。たとえば、サーバーレスストレージサービスは静的ウェブサイトとして機能させることができ (ウェブサーバーが不要になる)、イベントサービスはコードをホストできます。これによって物理サーバーを管理する運用上の負担が取り除かれます。また、マネージドサービスはクラウド規模で運用されることから、トランザクションコストも削減することができます。 
+  **より頻繁に実験する**: 仮想および自動化できるリソースを使用すれば、さまざまなタイプのインスタンス、ストレージ、構成を使用して比較テストを迅速に実行できます。 
+  **メカニカルシンパシーを重視する**: クラウドサービスの使用方法を理解し、常にワークロードの目標に最適なテクノロジーアプローチを使用します。例えば、データベースやストレージのアプローチを選択するときには、データアクセスパターンを考慮します。 

# 定義
<a name="perf-def"></a>

 クラウドのパフォーマンス効率を向上させるには、次の 4 つのベストプラクティス領域があります。 
+  **選択** 
+  **レビュー** 
+  **モニタリング** 
+  **トレードオフ** 

 データ駆動型アプローチを採⽤して、⾼パフォーマンスのアーキテクチャを選択します。ハイレベルな設計から、リソースタイプの選択と設定に至るまで、アーキテクチャのあらゆる側面に関するデータを収集してください。 

 選択した内容を定期的にレビューして、進化し続ける AWS クラウドの機能を十分に活かしていることを確認します。モニタリングすることで、期待されるパフォーマンスからの逸脱を確実に把握できるようにします。圧縮やキャッシュを使用したり、整合性に関する要件を緩和したりするなど、アーキテクチャにおけるトレードオフを行ってパフォーマンスを向上させます。 

# ベストプラクティス
<a name="perf-bp"></a>

**Topics**
+ [選択](perf-sel.md)
+ [レビュー](perf-review.md)
+ [モニタリング](perf-monitoring.md)
+ [トレードオフ](perf-tradeoffs.md)

# 選択
<a name="perf-sel"></a>

 特定のワークロードに適したソリューションはさまざまで、大抵の場合、ソリューションには複数のアプローチが組み合わされています。優れた設計のワークロードは、複数のソリューションを使用することで様々な機能を活用しパフォーマンスの改善をします。 

 AWS のリソースは多くのタイプと設定で利用できるため、ワークロードのニーズにしっかりと適合するアプローチを見つけることが容易になります。また、オンプレミスのインフラストラクチャでは簡単に実現できないオプションも利用できます。例えば、Amazon DynamoDB のようなマネージドサービスでは、あらゆるスケールにおいてレイテンシーが 10 ミリ秒未満であるフルマネージド型の NoSQL データベースを提供します。 

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。(パフォーマンス効率に関する質問、回答、ベストプラクティスの一覧については、 [付録](a-performance-efficiency.md)を参照してください)。


| PERF 1: 最適なパフォーマンスのアーキテクチャはどのように選択すればよいですか? | 
| --- | 
|  多くの場合、ワークロード全体での最適なパフォーマンスのためには、複数のアプローチが必要になります。Well-Architected なシステムでは、パフォーマンスを向上させるために複数のソリューションと機能が使用されています。 | 

 データ主導のアプローチを用いて、アーキテクチャのパターンと実装を選択し、コスト効率性に優れたソリューションを実現します。AWS ソリューションアーキテクト、AWS リファレンスアーキテクチャ、および AWS パートナーネットワーク (APN) のパートナーは、業界知識に基づいてアーキテクチャの選択を支援しますが、アーキテクチャを最適化するには、ベンチマークまたは負荷テストを通じて得られるデータが必要になります。 

 アーキテクチャでは通常、アーキテクチャに関するさまざまなアプローチが組み合わされて使用されます (イベント駆動型、ETL、パイプラインなど)。アーキテクチャの実装には、アーキテクチャのパフォーマンスの最適化に特化した AWS のサービスが使用されます。以下のセクションでは、考慮すべき 4 つの主なリソースタイプ、つまりコンピューティング、ストレージ、データベース、およびネットワークについて説明します。 

# コンピューティング
<a name="perf-compute"></a>

 要件やパフォーマンスのニーズを満たし、コストや労力を大幅に効率化するコンピューティングリソースを選択することで、同じ数のリソースでより多くを達成できます。コンピューティングオプションを評価するときは、ワークロードのパフォーマンスの要件とコスト要件に留意し、これを使用して十分な情報に基づいて意思決定を行います。

 AWS では、インスタンス、コンテナ、関数という 3 つの形式でコンピューティングを利用できます。 
+  **インスタンス** は仮想化されたサーバーで、ボタンまたは API コールを使用して機能を変更できます。クラウドではリソースを柔軟に選択できることから、異なるサーバータイプで実験することができます。AWS では、これらの仮想サーバーインスタンスには、さまざまなファミリーおよびサイズがあり、ソリッドステートドライブ (SSD) やグラフィック処理ユニット (GPU) など、多種多様な機能を提供します。
+  **コンテナ** は、オペレーティングシステムを仮想化する手段です。コンテナを使用すると、リソースが分離されたプロセス内でアプリケーションとその依存関係を実行できます。AWS Fargate は、コンテナ用のサーバーレスコンピューティングです。コンピューティング環境のインストール、設定、管理を制御する必要がある場合は、Amazon EC2 を使用できます。Amazon Elastic Container Service (ECS) または Amazon Elastic Kubernetes Service (EKS) といった複数のコンテナオーケストレーションプラットフォームから選択することもできます。 
+  **関数** 実行するコードに基づいて、実行環境を抽象化します。例えば、AWS Lambda を使用すれば、インスタンスを実行することなくコードを実行できます。

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。


| PERF 2: コンピューティングソリューションはどのように選択すればよいですか? | 
| --- | 
| ワークロードにとって最適なコンピューティングソリューションは、アプリケーションの設計、使用パターン、設定に応じて異なります。各アーキテクチャでは、コンポーネントごとに異なるコンピューティングソリューションが使用される可能性があるため、パフォーマンスを向上させるための機能も異なります。アーキテクチャに不適切なコンピューティングソリューションを選択すると、パフォーマンス効率が低下する可能性があります。 | 

 コンピューティングを使用するアーキテクチャを設計する場合、需要が変化してもパフォーマンスを維持できるだけの十分な容量を確保できるように、伸縮性のメカニズムを導入する必要があります。

# ストレージ
<a name="perf-storage"></a>

 クラウドストレージはクラウドコンピューティングに不可欠のコンポーネントで、ワークロードが使用する情報を保持します。クラウドストレージは、通常、従来のオンプレミスストレージシステムよりも信頼性、拡張性、安全性に優れています。ワークロードに適したクラウドデータ移行オプションに加えて、オブジェクト、ブロック、ファイルストレージサービスから選択します。

 AWS では、オブジェクト、ブロック、ファイルという 3 つの形式でストレージを利用できます。 
+  **オブジェクトストレージ** は、ユーザーが生成したコンテンツ、アクティブなアーカイブ、サーバーレスコンピューティング、ビッグデータストレージ、またはバックアップと復旧のために、任意のインターネットロケーションからデータにアクセスできるようにする、スケーラブルで耐久性のあるプラットフォームを提供します。Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データの可用性、セキュリティ、パフォーマンスを備えたオブジェクトストレージサービスです。Amazon S3 は 99.999999999% (9 が 11 個) の耐久性を実現するように設計されており、世界中の企業向けに数百万ものアプリケーションのデータを保存しています。
+  **ブロックストレージ** は、各仮想ホストに、高可用性かつ一貫性のある低レイテンシーのブロックストレージを提供します。これは、ダイレクトアタッチトストレージ (DAS) またはストレージエリアネットワーク (SAN) に類似しています。Amazon Elastic Block Store (Amazon EBS) は、EC2 インスタンスからアクセスできる永続的ストレージを必要とするワークロード向けに設計されており、適切なストレージ容量、パフォーマンス、コストでアプリケーションを調整することができます。
+  **ファイルストレージ** は、複数のシステムにまたがる共有ファイルシステムへのアクセスを提供します。Amazon Elastic File System (EFS) などのファイルストレージソリューションは、大規模なコンテンツリポジトリ、開発環境、メディアストア、ユーザーのホームディレクトリなどのユースケースに最適です。Amazon FSx を使用すると、一般的なファイルシステムを簡単かつコスト効率よく起動して実行できるため、広く使用されているオープンソースや商用ライセンスが付与されたファイルシステムの豊富な機能セットと高速なパフォーマンスを活用できます。

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。


| PERF 3: ストレージソリューションはどのように選択すればよいですか? | 
| --- | 
|  システムにとって最適なストレージソリューションは、アクセス方法 (ブロック、ファイル、オブジェクト)、アクセスパターン (ランダム、シーケンシャル)、必要なスループットやアクセス頻度 (オンライン、オフライン、アーカイブ)、更新頻度 (WORM、動的)、可用性と耐久性に関する制約によって異なります。優れた設計のシステムでは、複数のストレージソリューションを使用し、さまざまな機能を有効にしてパフォーマンスとリソースの使用効率を高めています。  | 

 ストレージソリューションを選択する際は、必要なパフォーマンスを実現できるように、お客様のアクセスパターンに合ったソリューションを選択することが重要です。

# データベース
<a name="perf-db"></a>

 クラウドは、ワークロードで発生するさまざまな問題に対処する、専用のデータベースサービスを提供します。これは、リレーショナル、key-value、ドキュメント、インメモリ、グラフ、時系列、および台帳データベースを含めた多数の専用データベースエンジンから選択できます。特定の問題 (または一連の問題) を解決するために最適なデータベースを選択することによって、制約の多い汎用的なモノリシックデータベースから脱却し、顧客のパフォーマンスニーズを満たすアプリケーションの構築に専念することができます。

 AWS では、リレーショナル、key-value、ドキュメント、インメモリ、グラフ、時系列、台帳データベースなど、複数の専用データベースエンジンから選択できます。AWS データベースでは、サーバーのプロビジョニング、パッチの適用、セットアップ、設定、バックアップ、復旧などのデータベース管理タスクについて心配する必要がありません。AWS はクラスターを継続的にモニタリングして、自己修復ストレージと自動スケーリングによってワークロードを実行状態に保つため、より価値の高いアプリケーション開発に専念できます。

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。


| PERF 4: データベースソリューションはどのように選択すればよいですか? | 
| --- | 
|  システムにとって最適なデータベースソリューションは、可用性、整合性、分断耐性、レイテンシー、耐久性、スケーラビリティ、クエリ機能などの要件に応じて異なります。多くのシステムでは、各種サブシステムに異なるデータベースソリューションを使用しているため、パフォーマンスを向上させるために活用する機能も異なります。システムに対して適切でないデータベースソリューションや機能を選択すると、パフォーマンス効率が低下する場合があります。 | 

 ワークロードのデータベースアプローチは、パフォーマンス効率に大きな影響を与えます。多くの場合、データ駆動型のアプローチではなく、組織のデフォルトに従って選択されます。ストレージと同様、ワークロードのアクセスパターンを検討することが重要です。また、データベースではないソリューション (グラフ、時系列、インメモリストレージデータベースなど) を使用してより効率的に問題を解決できないか検討することも重要です。

# ネットワーク
<a name="perf-network"></a>

 ネットワークはすべてのワークロードコンポーネント間に存在するため、ワークロードのパフォーマンスと動作に対して、良くも悪くも大きな影響を及ぼす可能性があります。また、ハイパフォーマンスコンピューティング (HPC) などのネットワークパフォーマンスに大きく依存するワークロードもあり、この場合はネットワークを深く理解することがクラスターのパフォーマンスを向上させるうえで重要になります。帯域幅、レイテンシー、ジッター、およびスループットに関するワークロードの要件を判断する必要があります。

 AWS ではネットワーキングが仮想化されており、数多くの異なるタイプと設定で利用することができます。このため、ニーズに合うネットワーキング手法が取りやすくなります。AWS は、ネットワークトラフィックを最適化する製品機能を提供します (例えば、拡張ネットワーキング、Amazon EBS 最適化インスタンス、Amazon S3 Transfer Acceleration、動的 Amazon CloudFront など)。また、AWS は、ネットワーク距離またはジッターを軽減するネットワーク機能も提供します (例えば、Amazon Route 53 レイテンシールーティング、Amazon VPC エンドポイント、AWS Direct Connect、AWS Global Accelerator など)。

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。


| PERF 5: ネットワークソリューションはどのように選択すればよいですか? | 
| --- | 
|  ワークロードに最適なネットワークソリューションは、レイテンシー、スループット要件、ジッター、および帯域幅に応じて異なります。ロケーションのオプションは、ユーザーまたはオンプレミスのリソースなどの物理的な制約に左右されます。これらの制約は、エッジロケーションまたはリソースの配置で相殺することができます。 | 

 ネットワークをデプロイする際は、場所を検討する必要があります。距離を縮めるために、リソースが使用される場所の近くに配置することもできます。ネットワーキングメトリクスを使用して、ワークロードの進化に合わせてネットワーキング設定を変更します。リージョンや、プレイスメントグループ、エッジサービスを活用すれば、パフォーマンスを大幅に向上させることができます。クラウドベースのネットワークは素早い再構築または変更が可能なことから、パフォーマンス効率を維持するためにもネットワークアーキテクチャを徐々に進化させることが必要です。

# レビュー
<a name="perf-review"></a>

 クラウドテクノロジーは急速に進化しており、最新のテクノロジーとアプローチを使用してワークロードコンポーネントのパフォーマンスを継続的に向上させる必要があります。ワークロードコンポーネントに対する変更を継続的に評価して検討し、パフォーマンスとコストの目標を確実に満たすようにする必要があります。機械学習や人工知能 (AI) などの新しいテクノロジーにより、カスタマーエクスペリエンスを再考し、ビジネスワークロード全体にわたってイノベーションを起こすことができます。

 お客様のニーズによって推進される AWS の継続的なイノベーションをご活用ください。AWS では、新しいリージョン、エッジロケーション、サービス、および機能を定期的にリリースしています。これらのリリースはいずれも、アーキテクチャのパフォーマンス効率を向上させることができます。 

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。 


| PERF 6: ワークロードを進化させるために、新機能をどのように活用すればよいですか？ | 
| --- | 
|  ワークロードを設計する際に選択できるオプションには限りがありますが、時間と共に、ワークロードのパフォーマンスを向上させることができる新しいテクノロジーとアプローチが利用できるようになります。 | 

 アーキテクチャのパフォーマンスが低いのは、通常、パフォーマンスレビュープロセスが存在しないか、破損していることに起因します。アーキテクチャのパフォーマンスレベルが低い場合は、パフォーマンスレビュープロセスを導入することで、デミングの PDCA (計画 – 実施 – 評価 – 改善) サイクルを適用して反復的な改善を促すことができます。 

# モニタリング
<a name="perf-monitoring"></a>

 ワークロードを実装した後は、そのパフォーマンスをモニタリングして、問題が顧客に影響を及ぼす前に修正できるようにする必要があります。モニタリングメトリクスを使用して、しきい値を超えたときにアラームが発報されるようにします。 

 Amazon CloudWatch は、ワークロードの監視、システム全体のパフォーマンス変化への対応、リソース利用の最適化、運用の健全性の統合ビューを得るためのデータと実行可能なインサイトを提供する、監視、観測のためのサービスです。CloudWatch は、AWS およびオンプレミスのサーバーで実行されるワークロードから、ログ、メトリクス、イベントの形式で監視、運用データを収集します。 AWS X-Ray は、デベロッパーが本番稼働用の分散型アプリケーションを分析し、デバッグするのに役立ちます。AWS X-Ray を使用すると、アプリケーションの動作に関するインサイトを得て、根本原因を検出し、パフォーマンスのボトルネックを特定できます。これらのインサイトを使用することで、速やかに対応し、ワークロードのスムーズな動作を維持できます。 

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。 


| PERF 7: リソースが稼働していることを確認するには、リソースをどのようにモニタリングすればよいですか? | 
| --- | 
|  システムのパフォーマンスは徐々に低下することがあります。劣化を特定し、オペレーティングシステムまたはアプリケーション負荷などの内部および外部の要因を修正するために、システムのパフォーマンスをモニタリングします。 | 

 誤判定がないことを確実にすることは、効果的なモニタリングソリューションの鍵です。自動化されたトリガーは、人為的なミスを防ぎ、問題の修正にかかる時間を短縮できます。解決までの時間を短縮できます。アラームソリューションをテストするシミュレーションを本番環境で実行するゲームデーを計画し、そのソリューションが問題を正しく認識するか確認してください。 

# トレードオフ
<a name="perf-tradeoffs"></a>

 ソリューションを設計する際は、最適なアプローチを確保するためのトレードオフについて検討します。状況に応じて、整合性、耐久性、および時間とレイテンシーの余裕と引き換えに、より優れたパフォーマンスを実現することができます。 

 AWS を使用すると、エンドユーザーに近い世界中の場所に数分でリソースをデプロイできます。また、読み取り専用のレプリカをデータベースシステムなどの情報ストアに動的に追加して、プライマリデータベースの負荷を軽減することもできます。 

 以下の質問は、パフォーマンス効率に関する考慮事項に焦点を当てています。 


| PERF 8: パフォーマンスを向上させるために、トレードオフをどのように利用すればよいですか? | 
| --- | 
|  アーキテクチャの設計にあたって、最適なアプローチとなるトレードオフを特定します。多くの場合、整合性、耐久性、および時間とレイテンシーの余裕と引き換えに、パフォーマンスを向上させることができます。 | 

 ワークロードに変更を加えた後、メトリクスを収集して評価し、それらの変更の影響を判断します。システムおよびエンドユーザーに対する影響を測定し、トレードオフがワークロードにどのような影響を与えるかを理解します。負荷テストなどの体系的なアプローチを使用して、トレードオフによってパフォーマンスが向上するかどうかを調べます。 

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

 パフォーマンス効率に関するベストプラクティスの詳細については、以下のリソースを参照してください。

## ドキュメント
<a name="perf-doc"></a>
+  [Amazon S3 パフォーマンスの最適化](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Amazon EBS ボリュームのパフォーマンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html?ref=wellarchitected-wp) 

## ホワイトペーパー
<a name="perf-wp"></a>
+  [パフォーマンス効率の柱](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp) 

## 動画
<a name="perf-video"></a>
+  [AWS re:Invent 2019: Amazon EC2 foundations (CMP211-R2) (Amazon EC2 の基礎知識)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: Storage state of the union (STG201-L) (ストレージの現状)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: AWS purpose-built databases (DAT209-L) (AWS の目的別データベース)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures (NET317-R1) (AWS およびハイブリッド AWS ネットワークアーキテクチャへの接続性)](https://www.youtube.com/watch?v=eqW6CPb58gs&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Powering next-gen Amazon EC2: Deep dive into the Nitro system (CMP303-R2) (次世代 Amazon EC2 の実現に向けて: Nitro システムの事例詳細)](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Scaling up to your first 10 million users (ARC211-R) (最初の 1,000 万ユーザーまでのスケールアップ)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 