モニターまたはターミナルを見ているエンジニア。

パフォーマンス・エンジニアリングとは。

パフォーマンス・エンジニアリング、定義

パフォーマンス・エンジニアリングとは、性能と効率のベンチマークを満たすようにITシステムを最適化する手法です。

パフォーマンス・エンジニアリングは単なる1つのアクションではなく、企業がソフトウェア開発ライフサイクル(SDLC)のあらゆる段階でパフォーマンスを追跡し、最適化することを可能にするDevOpsシフト・レフトの方法論です。その目標は、システムが速度、信頼性、効率、応答時間などの基準の性能メトリクスを確実に満たすようにすることです。

パフォーマンス・エンジニアリング・チームは、まずストレス・テストを通じてベースライン・システム・パフォーマンスを確立します。次に、そのベースラインを使用して、ネットワークの問題と改善の機会を特定します。ベンチマークが設定されると、エンジニアはネットワークの再構成を開始し、修正プログラムを適用し、性能の問題や将来の容量計画についてネットワークを継続的に監視できます。

オブザーバビリティーはパフォーマンス・エンジニアリングの基盤です。オブザーバビリティー・ツールはシステムのパフォーマンスを表す未加工データ(ログ、メトリクス、トレース)を収集し、パフォーマンス・エンジニアリング・チームはこのデータを用いて修正の影響を追跡します。パフォーマンス・エンジニアは、アプリケーション・パフォーマンス管理(APM)と監視、ストレス・テスト、ブラウザー監査、ベンチマークに他のさまざまなツールを使用して、システムを可能な限り明確に把握することができます。

パフォーマンス・エンジニアリングとアプリケーション・パフォーマンス管理(APM)およびパフォーマンス・テストの比較

性能エンジニアリングは、所定のベンチマークを満たすようにITシステムを最適化する、より広範なエンドツーエンドの分野です。アプリケーション・パフォーマンス管理(APM)とパフォーマンス・テストは、その全体のプロセスに関わる活動の2つです。

アプリケーション・パフォーマンス管理(APM)とは、ソフトウェア・ツール、データ分析、アプリケーション管理プロセスを使用して、組織がビジネス・アプリケーションのパフォーマンス、可用性、ユーザー・エクスペリエンスを最適化できるようにする手法のことです。パフォーマンス・エンジニアリングは開発プロセス全体に及びますが、APMはライブ・アプリケーションの問題の検出と修正に重点を置いています。

同様に、パフォーマンス・テストは、負荷テスト、ストレス・テスト、耐久性テスト、その他のテストを通じて、さまざまな条件下でネットワークまたはアプリケーションのパフォーマンスをテストする具体的な活動です。APMと同様に、パフォーマンス・テストは、パフォーマンス・エンジニアリングの広範な実践における1つのアクティビティにすぎません。

パフォーマンス・エンジニアリングの仕組みとは。

パフォーマンス・エンジニアリングは、性能のベンチマークの設定、テストと優先順位付け、最適化、計画、性能の監視を含む、柔軟かつ包括的な一連のプロセスによって実現されます。

ベンチマーク

まず、組織は自社のシステムとアプリケーションがビジネス目標を達成するために必要な性能を特定します。次に、パフォーマンス・エンジニアが現在のパフォーマンスをテストして基準ポイントを確立し、ベンチマークを満たす方法を決定します。

一般的なベンチマーク・メトリクスには、レイテンシー、スループット、リソース使用率、エラー率などがあります。開発チームは、これらのメトリクスをマイクロレベル(特定のサーバーまたはサービス内)で測定することも、アプリケーションまたはネットワーク全体にわたるより大きなスケールで測定することもできます。

ベンチマークには、多くの場合、パフォーマンス要件と開発環境に関する具体的な質問が含まれます。例えば、エンジニアは、CPU使用率の一般的なしきい値を設定する代わりに、5,000人のユーザーがアプリケーションを同時に使用しているときに、CPUの使用率が60%未満かどうかを確認することができます。

テストと優先順位付け

パフォーマンス・エンジニアは、パフォーマンス・テスト・ツールを使用して、テスト・データを確立されたベンチマークに照らして検証し、必要なサービス・レベルを満たすためにどの部分の変更を行う必要があるかを特定します。

パフォーマンス・テストの一般的な形式は次のとおりです。

負荷テスト

負荷テストは、予想される負荷で動作するときにシステムがどのように動作するかを示します。負荷テストの目的は、平均的な同時ユーザー数による通常の作業条件下でルーチン規模のワークロードが発生した際のシステム動作を示すことです。

拡張性テスト

拡張性テストでは、処理されるデータ量やユーザーの負荷が増え、システムはストレスにさらされます。このテストは、増加したペースに対応しながら結果を達成できるかどうかを示します。

ストレス・テスト

ストレス・テストでは、システムが限界点に達するまでにどれだけの時間がかかるかを正確に判断するために、理解されている運用上の限界まで負荷をかけ、さらにそれを超えたストレスを与えます。

スパイク・テスト

スパイク・テストは、ユーザー・トラフィックやデータ量が突然、アクティビティが急増したときに何が起こるかを観察します。システムは通常のオペレーションを続けながら、さまざまな変化に対応しなければなりません。

ボリューム・テスト

ボリューム・テストは、システムが大量のデータをどのように処理するか、特にそのデータを完全に処理し、劣化なしに保管できるかを検証します。

耐久性テスト

耐久性テスト(ソーク・テスト)は、エンジニアがシステムを長期にわたって観察し、徐々にデータの劣化やメモリー・リークなどの問題を発見するテストです。

最適化

システムの制限と欠点を特定した後、最適化のプロセスが始まります。

問題の性能ボトルネックの性質に応じて、パフォーマンス・エンジニアは次のような最適化ストラテジーを使用する場合があります。

  • アルゴリズム最適化とは、システム機能を駆動するアルゴリズムを効率向上させるために調整することです。

  • データベースの最適化。システム・データに関する根本的な問題は、クエリー最適化(データベースがクエリーを実行する最も効率的な方法を決定するプロセス)やインデックスの最適化(システムが可能な限り高速な検索パスを使用するようにすることを目的としている)などのプロセスを通じて修正されます。

  • キャッシュ化は、要求の高い計算操作の結果を保存し、より迅速に再現・取得できるようにします。

  • メモリーの最適化では、エンジニアは、メモリー内のオブジェクトを再利用したり、データを再編成したり、一部のデータを保管したりすることで、メモリー・リークを削減し、ガベージ・コレクションを高速化します。

  • ネットワークの最適化これには、帯域幅の圧縮、負荷分散、HTTP接続の再利用、およびネットワークの性能を向上させるためのその他の手法が含まれます。

計画と監視

システムが最適化された後、パフォーマンス・エンジニアは新しいベースラインからの逸脱を継続的に監視し、将来の成長とアクティビティを計画します。

オブザーバビリティーにより、パフォーマンス・エンジニアは、システムが計画通りに動作しているかどうかを判断できます。オブザーバビリティー・ツールは、ログ、メトリクス、トレースを収集・分析することで、ITチームが問題の特定と解決をリアルタイムで自動化できるようにします。システムのオブザーバビリティーが高いほど、ITチームは、特定されたパフォーマンスの問題からその根本原因に、追加のテストやコーディングを行わなくても、より迅速かつ正確に到達できます。

キャパシティー・プランニングにより、性能エンジニアは将来のITインフラストラクチャー要件を予測し、ビジネス・ニーズの一歩先を行くことができます。キャパシティー・プランニングには、現在の需要と利用可能なキャパシティーを分析し、それを組織の機能や参考情報と比較することが含まれます。組織はその後、効率的にスケールするための調整可能なストラテジーを策定します。

AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

パフォーマンス・エンジニアリングのメリット

パフォーマンス・エンジニアリングのメリットには、ユーザー・エクスペリエンスの向上、よりスケーラブルなITインフラストラクチャー、より効率的な問題解決、キャパシティー・プランニングの改善などがあります。

ユーザー・エクスペリエンスの向上

パフォーマンス・エンジニアリングは、ユーザーをサービスから遠ざける可能性のある高遅延などの性能の問題を修正することで、ユーザー・エクスペリエンスを向上させます。パフォーマンス・エンジニアリングは、ソフトウェア・エンジニアリングのプロセスとそのアウトプットを最適化することで、ユーザーとの信頼関係を構築し、リピート・ビジネスを促進するのに役立ちます。

拡張性の向上

パフォーマンス・エンジニアリングは、システム内の問題を明確に把握します。この図により、システムを拡張する際(新しいサービスを追加することで水平方向に拡張する場合、またはネットワーク容量をより多く使用することで垂直方向に拡張する場合)に、ボトルネックを回避しやすくなります。

効率的な問題解決

パフォーマンス・エンジニアリングは、確立されたベンチマークを満たすシステムを作成するために必要なツールと知識をエンジニアに提供するのに役立ちます。エンジニアは、ネットワークの性能を大幅に低下させる前に問題を発見できるため、性能の問題をより迅速に解決し、平均修復時間(MTTR)を短縮し、コストを削減できます。

効率的なキャパシティー・プランニング

パフォーマンス・エンジニアリングは、システム動作に対するエンジニアの理解を深めることで、キャパシティー・プランニングの効果を向上させるのに役立ちます。ベンチマーク・プロセスと継続的なオブザーバビリティーの実践を通じて、エンジニアはネットワークに必要なものについてより深い洞察を得ることができます。この洞察により、エンジニアは容量に関するより適切な意思決定を行い、サーバーの容量に対する過剰な支出や不足のリスクを軽減することができます。

パフォーマンス・エンジニアリングの課題

パフォーマンス・エンジニアリングの課題には、最新のシステムの複雑さ、問題の根本原因の特定、「ロングテール」問題の考慮、必要なツールセットと専門知識の構築などがあります。

複雑さ

現代のIT環境は、複雑なハイブリッドクラウド環境でホストされることが多い、数千にもなる マイクロサービスによって支配されています。このような分散システム全体で洞察を収集し、分析し、行動することは、時には予測不可能なワークフローを伴うリソース集約的なプロセスとなりえます。

根本原因の発見

複雑さが原因で、ネットワークの問題の真の根本原因を特定することが難しくなります。APIの応答が遅い場合、それはデータベースのインデックス不足、メモリー・リーク、設定の問題の成果かもしれません。性能エンジニアは、最適化の実際の機会を特定するために根本原因分析を行う必要があるかもしれません。

ロングテールの問題

ロングテールの問題は、少数のユーザーが経験するネットワークの不良状態です。多くの場合、通常のオブザーバビリティーの実践を回避する、検知が難しい特異な問題によって引き起こされます。パフォーマンス・エンジニアリングの文脈では、これらの問題はネットワーク全体の状態を脅かすため、課題をもたらしますが、通常のパフォーマンス・テストではその根本原因を特定するのが困難です。

インフラストラクチャーの構築

パフォーマンス・エンジニアリングの実践には、スタッフの専門知識と高度なプラットフォーム機能が必要です。パフォーマンス・テストには、ネットワーク状態の高価な大規模シミュレーションが必要です。チームは、大量のテレメトリー・データを実行可能な洞察に変えるには、システムを十分に理解する必要があります。パフォーマンス・エンジニアリングの柔軟で反復的な性質には、急速な変化に対応できる組織構造が必要です。

執筆者

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

関連ソリューション
IBM Cloud Infrastructure Center

IBM Cloud Infrastructure Centerは、IBM zSystemsおよびIBM LinuxONE上で稼働するプライベートクラウド・インフラストラクチャーを管理するために設計されたOpenStack互換ソフトウェア・プラットフォームです。

Cloud Infrastructure Centerの詳細はこちら
ITインフラストラクチャー

ハイブリッドクラウド環境全体に安全なAI対応インフラストラクチャーを提供します

ITインフラストラクチャー・ソリューションはこちら
クラウド・ソリューション

安全性と柔軟性を備えたクラウドで、ビジネスの成長に合わせてリソースを無理なく拡張できます。

クラウド・ソリューション
次のステップ

IBMのハイブリッドクラウドとAI対応ソリューションで、企業インフラを変革しましょう。ビジネスを保護、拡張、モダナイズするために設計されたサーバー、ストレージ、ソフトウェアはこちらする、または専門家の洞察にアクセスして生成AIストラテジーを強化できます。

  1. ITインフラストラクチャー・ソリューションの詳細はこちら
  2. IBM Cloudの詳細はこちら