パフォーマンス効率

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

このパフォーマンス効率の柱では、設計原則、ベストプラクティス、質問の概要を説明します。実装に関する規範的なガイダンスについては、「パフォーマンス効率の柱」のホワイトペーパーを参照してください。

設計原則

クラウドでのパフォーマンス効率には、5 つの設計原則があります。

定義

クラウドでのパフォーマンス効率には、4 つのベストプラクティスの分野があります。

高性能なアーキテクチャを選択する際は、データ駆動型のアプローチを選択します。ハイレベルな設計から、リソースタイプの選択と設定に至るまで、アーキテクチャのあらゆる側面に関するデータを収集してください。選択した内容を定期的にレビューすることで、絶えず進化し続けている AWS クラウドを活用できているかを確認できます。モニタリングを実施すれば、予想したパフォーマンスからのずれを把握し、その対策を講じることができます。さらに、圧縮やキャッシュを使用したり、整合性に関する要件を緩和したりするなど、アーキテクチャにおけるトレードオフを行ってパフォーマンスを向上させることができます。

ベストプラクティス

選択

システムにとって最適なソリューションは、お客様のワークロードの種類に応じて異なります。多くの場合、複数のアプローチを組み合わせて使用します。優れた設計のシステムでは複数のソリューションが使用され、さまざまな機能によってパフォーマンスが改善されます。

AWS では、リソースは仮想化され、さまざまな種類や設定を持つリソースとして使用できます。これにより、お客様のニーズに密接に適合したアプローチを見つけやすくなるとともに、オンプレミスのインフラストラクチャでは簡単に実現できないオプションを見つけることができます。例えば、Amazon DynamoDB のようなマネージドサービスでは、あらゆるスケールにおいてレイテンシーが 10 ミリ秒未満であるフルマネージド型の NoSQL データベースを提供します。

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

PERF 1: 最も良いパフォーマンスのアーキテクチャをどのように選択していますか?

アーキテクチャに導入するパターンと実装を選択する場合は、データ駆動型のアプローチを使用して最適なソリューションを見つけてください。AWS ソリューションアーキテクト、AWS リファレンスアーキテクチャ、および AWS パートナーネットワーク (APN) のパートナーは、学んだことに基づいて、お客様がアーキテクチャを選択できるようサポートしますが、お客様のアーキテクチャを最適化するには、ベンチマークや負荷テストで得られたデータが必要になります。

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

コンピューティング

システムにとって最適なコンピューティングソリューションは、アプリケーションの設計、使用パターン、設定に応じて異なります。各アーキテクチャでは、コンポーネントごとに異なるコンピューティングソリューションが使用されることもあり、パフォーマンスを向上させるための機能も異なります。アーキテクチャに対して適切でないコンピューティングソリューションを選択すると、パフォーマンス効率が低下する場合があります。

AWS では、インスタンス、コンテナ、ファンクションの形式でコンピューティングが利用できます。

  • インスタンスは仮想化されたサーバーなので、ボタンをクリックしたり、API コールしたりすることで機能を変更できます。クラウドでは、どのリソースを使用するかは固定されていないため、さまざまな種類のサーバーを実験できます。AWS では、さまざまなファミリーとサイズの仮想サーバーインスタンスが用意されており、ソリッドステートドライブ (SSD) やグラフィック処理ユニット (GPU) といったさまざまな機能が提供されています。

  • コンテナは、リソースが分離されたプロセスで、アプリケーションとその依存関係を実行できる、オペレーティングシステムを仮想化する方法です。

  • ファンクションは、実行するコードに基づいて、実行環境を抽象化します。例えば、AWS Lambda を使用すれば、インスタンスを実行することなくコードを実行できます。

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

PERF 2: コンピューティングソリューションをどのように選択していますか?

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

ストレージ

システムにとって最適なストレージソリューションは、アクセス方法 (ブロック、ファイル、オブジェクト)、アクセスパターン (ランダムまたはシーケンシャル)、必要なスループット、アクセス頻度 (オンライン、オフライン、アーカイブ)、更新頻度 (WORM、動的)、および可用性と耐久性に関する制約に応じて異なります。優れた設計のシステムでは複数のストレージソリューションが使用され、さまざまな機能によってパフォーマンスが改善されます。

AWS では、ストレージは仮想化され、さまざまな種類を持つストレージとして使用できます。これにより、ストレージ手法をより簡単かつより密接にお客様のニーズに適合させることができるとともに、オンプレミスのインフラストラクチャでは簡単に実現できないストレージオプションを提供できます。例えば Amazon S3 は、99.999999999% (イレブンナイン) の耐久性を実現するよう設計されています。また、磁気ハードディスク (HDD) から SSD に変更することもできます。さらには、あるインスタンスから別のインスタンスに仮想ドライブを秒単位で簡単に移動することもできます。

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

PERF 3: ストレージソリューションをどのように選択していますか?

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

データベース

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

Amazon RDS では、フルマネージド型のリレーショナルデータベースが用意されています。Amazon RDS を使用すると、データベースのコンピューティングリソースとストレージリソースをダウンタイムなしでスケールできます。Amazon DynamoDB は、あらゆる規模で 10 ミリ秒未満のレイテンシーを実現するフルマネージド型 NoSQL データベースです。Amazon Redshift は、ペタバイト規模のマネージド型データウェアハウスで、パフォーマンスや容量のニーズの変化に応じてノードの数や種類を変更できます。

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

PERF 4: データベースソリューションをどのように選択していますか。

ワークロードのデータベースアプローチ (RDBMS、NoSQL) はパフォーマンス効率に大きく影響しませんが、データ駆動型のアプローチよりも、組織の方針に基づいて選択されることが多くあります。ストレージと同様、ワークロードのアクセスパターンを検討することが重要です。また、データベースではないソリューション (検索エンジンやデータウェアハウスなど) を使用してより効率的に問題を解決できないか検討することも重要です。

ネットワーク

システムにとって最適なネットワークソリューションは、レイテンシーやスループットなどの要件によって異なります。場所のオプションはユーザーリソースやオンプレミスリソースなどの物理的制約の影響を受けますが、最新技術を使用することやリソースを置き換えることで、こうした影響を軽減できます。

AWS では、ネットワークは仮想化され、さまざまな種類や構成を持つネットワークとして使用できます。これにより、ネットワーク手法をより簡単かつより密接にお客様のニーズに適合させることができます。AWS では、拡張ネットワーク、Amazon EBS 最適化インスタンス、Amazon S3 Transfer Acceleration、動的 Amazon CloudFront など、ネットワークトラフィックを最適化するための製品機能を提供しています。また、Amazon Route 53 のレイテンシールーティング、Amazon VPC エンドポイント、AWS Direct Connect など、ネットワーク距離を短縮しジッターを削減するネットワーキング機能も提供しています。

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

PERF 5: ネットワークソリューションをどのように選択していますか?

ネットワークソリューションを選択する際は、場所を検討する必要があります。AWS を使用すれば、使用される場所に近い所にリソースを配置できるため、ネットワークの距離を縮めることができます。リージョンや、プレイスメントグループ、エッジロケーションを活用すれば、パフォーマンスを大幅に向上させることができます。

レビュー

ソリューションを設計するときは、選択できるオプションが限られていても、時間が経つにつれ、アーキテクチャのパフォーマンスを向上させることができる新しいテクノロジーやアプローチが利用できるようになります。

AWS を使用すれば、お客様のニーズに応じて絶えず進化している革新的なテクノロジーを利用できます。AWS では、新しいリージョンやエッジロケーション、サービス、機能を定期的にリリースしています。これらを利用すれば、お客様のアーキテクチャのパフォーマンス効率を向上させることができます。

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

PERF 6: ワークロードを進化させるためにどのように新機能を取り込んでいますか?

アーキテクチャのどの部分でパフォーマンスが制約されているかを把握することで、そうした制約を緩和できるリリースを見つけることができます。

モニタリング

アーキテクチャの実装後は、お客様が発見する前に問題を修正できるよう、アーキテクチャのパフォーマンスをモニタリングする必要があります。モニタリングメトリクスを使用して、メトリクスがしきい値を超えたときにアラームを発生させるようにします。アラームを使用すれば、正しく動作していないコンポーネントが見つかったときに、そのコンポーネントを回避するための自動アクションをトリガーできます。

Amazon CloudWatch では、通知アラームのモニタリングと送信を行う機能が用意されています。自動化機能を使用すれば、Amazon Kinesis、Amazon Simple Queue Service (Amazon SQS)、AWS Lambda を通じてアクションをトリガーでき、パフォーマンスの問題を回避できます。

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

PERF 7: リソースが正常に動作していることを確認するためにどのようにモニタリングしていますか?

効果的にモニタリングするには、大量の誤検出を発生させたり、大量のデータに振り回されたりしないことが重要です。自動化されたトリガーを使用すれば、ヒューマンエラーを防ぐことができ、問題解決までの時間を短縮できます。アラームソリューションをテストするシミュレーションを本番環境で実行するゲームデーを計画し、そのソリューションが問題を正しく認識するか確認してください。

トレードオフ

ソリューションのアーキテクチャを設計する場合は、トレードオフを考慮して最適なアプローチを選択します。より高いパフォーマンスを実現できるように、整合性、耐久性、容量を重視するのか、時間またはレイテンシーを重視するのかを、お客様の状況に応じてトレードオフしてください。

AWS を使用すれば、数分で世界各地にリソースを展開して、エンドユーザーに近い場所にリソースをデプロイできます。また、データベースシステムなどの情報ストアに読み取り専用のレプリカを動的に追加できるため、プライマリデータベースの負荷を減らすことができます。AWS では、Amazon ElastiCache などのキャッシュソリューションも用意されています。このソリューションでは、インメモリデータストア (またはインメモリキャッシュ) と Amazon CloudFront が用意されており、お客様の静的コンテンツをエンドユーザーに近い場所にキャッシュできます。Amazon DynamoDB Accelerator (DAX) では、Amazon DynamoDB の前面にリードスルー/ライトスルー分散キャッシュ層が設けられています。また、DAX では、Amazon DynamoDB と同じ API がサポートされていますが、キャッシュ内にあるエンティティに対して 1 ミリ秒未満のレイテンシーが実現されています。

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

PERF 8: パフォーマンスを向上させるために、トレードオフをどのように利用していますか?

トレードオフを行うことで、アーキテクチャが複雑になる可能性があります。また、トレードオフを行った場合は、ロードテストを実施して、トレードオフによって目に見える効果が得られたか確認する必要があります。

主要な AWS のサービス

パフォーマンス効率に不可欠なAWS のサービスは Amazon CloudWatch であり、リソースとシステムをモニタリングし、全体的なパフォーマンスと動作状況を可視化します。。以下のサービスと機能では、パフォーマンス効率の 4 つの分野がサポートされます。

リソース

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

Performance Efficiency Pillar
Amazon S3 Performance Optimization
Amazon EBS Volume Performance
AWS re:Invent 2016: Scaling Up to Your First 10 Million Users (ARC201)
AWS re:Invent 2017: Deep Dive on Amazon EC2 Instances