パフォーマンス・エンジニアリングとは、性能と効率のベンチマークを満たすようにITシステムを最適化する手法です。
パフォーマンス・エンジニアリングは単なる1つのアクションではなく、企業がソフトウェア開発ライフサイクル(SDLC)のあらゆる段階でパフォーマンスを追跡し、最適化することを可能にするDevOpsとシフト・レフトの方法論です。その目標は、システムが速度、信頼性、効率、応答時間などの基準の性能メトリクスを確実に満たすようにすることです。
パフォーマンス・エンジニアリング・チームは、まずストレス・テストを通じてベースライン・システム・パフォーマンスを確立します。次に、そのベースラインを使用して、ネットワークの問題と改善の機会を特定します。ベンチマークが設定されると、エンジニアはネットワークの再構成を開始し、修正プログラムを適用し、性能の問題や将来の容量計画についてネットワークを継続的に監視できます。
オブザーバビリティーはパフォーマンス・エンジニアリングの基盤です。オブザーバビリティー・ツールはシステムのパフォーマンスを表す未加工データ(ログ、メトリクス、トレース)を収集し、パフォーマンス・エンジニアリング・チームはこのデータを用いて修正の影響を追跡します。パフォーマンス・エンジニアは、アプリケーション・パフォーマンス管理(APM)と監視、ストレス・テスト、ブラウザー監査、ベンチマークに他のさまざまなツールを使用して、システムを可能な限り明確に把握することができます。
性能エンジニアリングは、所定のベンチマークを満たすようにITシステムを最適化する、より広範なエンドツーエンドの分野です。アプリケーション・パフォーマンス管理(APM)とパフォーマンス・テストは、その全体のプロセスに関わる活動の2つです。
アプリケーション・パフォーマンス管理(APM)とは、ソフトウェア・ツール、データ分析、アプリケーション管理プロセスを使用して、組織がビジネス・アプリケーションのパフォーマンス、可用性、ユーザー・エクスペリエンスを最適化できるようにする手法のことです。パフォーマンス・エンジニアリングは開発プロセス全体に及びますが、APMはライブ・アプリケーションの問題の検出と修正に重点を置いています。
同様に、パフォーマンス・テストは、負荷テスト、ストレス・テスト、耐久性テスト、その他のテストを通じて、さまざまな条件下でネットワークまたはアプリケーションのパフォーマンスをテストする具体的な活動です。APMと同様に、パフォーマンス・テストは、パフォーマンス・エンジニアリングの広範な実践における1つのアクティビティにすぎません。
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
パフォーマンス・エンジニアリングは、性能のベンチマークの設定、テストと優先順位付け、最適化、計画、性能の監視を含む、柔軟かつ包括的な一連のプロセスによって実現されます。
まず、組織は自社のシステムとアプリケーションがビジネス目標を達成するために必要な性能を特定します。次に、パフォーマンス・エンジニアが現在のパフォーマンスをテストして基準ポイントを確立し、ベンチマークを満たす方法を決定します。
一般的なベンチマーク・メトリクスには、レイテンシー、スループット、リソース使用率、エラー率などがあります。開発チームは、これらのメトリクスをマイクロレベル(特定のサーバーまたはサービス内)で測定することも、アプリケーションまたはネットワーク全体にわたるより大きなスケールで測定することもできます。
ベンチマークには、多くの場合、パフォーマンス要件と開発環境に関する具体的な質問が含まれます。例えば、エンジニアは、CPU使用率の一般的なしきい値を設定する代わりに、5,000人のユーザーがアプリケーションを同時に使用しているときに、CPUの使用率が60%未満かどうかを確認することができます。
パフォーマンス・エンジニアは、パフォーマンス・テスト・ツールを使用して、テスト・データを確立されたベンチマークに照らして検証し、必要なサービス・レベルを満たすためにどの部分の変更を行う必要があるかを特定します。
パフォーマンス・テストの一般的な形式は次のとおりです。
負荷テストは、予想される負荷で動作するときにシステムがどのように動作するかを示します。負荷テストの目的は、平均的な同時ユーザー数による通常の作業条件下でルーチン規模のワークロードが発生した際のシステム動作を示すことです。
拡張性テストでは、処理されるデータ量やユーザーの負荷が増え、システムはストレスにさらされます。このテストは、増加したペースに対応しながら結果を達成できるかどうかを示します。
ストレス・テストでは、システムが限界点に達するまでにどれだけの時間がかかるかを正確に判断するために、理解されている運用上の限界まで負荷をかけ、さらにそれを超えたストレスを与えます。
スパイク・テストは、ユーザー・トラフィックやデータ量が突然、アクティビティが急増したときに何が起こるかを観察します。システムは通常のオペレーションを続けながら、さまざまな変化に対応しなければなりません。
ボリューム・テストは、システムが大量のデータをどのように処理するか、特にそのデータを完全に処理し、劣化なしに保管できるかを検証します。
耐久性テスト(ソーク・テスト)は、エンジニアがシステムを長期にわたって観察し、徐々にデータの劣化やメモリー・リークなどの問題を発見するテストです。
システムの制限と欠点を特定した後、最適化のプロセスが始まります。
問題の性能ボトルネックの性質に応じて、パフォーマンス・エンジニアは次のような最適化ストラテジーを使用する場合があります。
システムが最適化された後、パフォーマンス・エンジニアは新しいベースラインからの逸脱を継続的に監視し、将来の成長とアクティビティを計画します。
オブザーバビリティーにより、パフォーマンス・エンジニアは、システムが計画通りに動作しているかどうかを判断できます。オブザーバビリティー・ツールは、ログ、メトリクス、トレースを収集・分析することで、ITチームが問題の特定と解決をリアルタイムで自動化できるようにします。システムのオブザーバビリティーが高いほど、ITチームは、特定されたパフォーマンスの問題からその根本原因に、追加のテストやコーディングを行わなくても、より迅速かつ正確に到達できます。
キャパシティー・プランニングにより、性能エンジニアは将来のITインフラストラクチャー要件を予測し、ビジネス・ニーズの一歩先を行くことができます。キャパシティー・プランニングには、現在の需要と利用可能なキャパシティーを分析し、それを組織の機能や参考情報と比較することが含まれます。組織はその後、効率的にスケールするための調整可能なストラテジーを策定します。
パフォーマンス・エンジニアリングのメリットには、ユーザー・エクスペリエンスの向上、よりスケーラブルなITインフラストラクチャー、より効率的な問題解決、キャパシティー・プランニングの改善などがあります。
パフォーマンス・エンジニアリングは、ユーザーをサービスから遠ざける可能性のある高遅延などの性能の問題を修正することで、ユーザー・エクスペリエンスを向上させます。パフォーマンス・エンジニアリングは、ソフトウェア・エンジニアリングのプロセスとそのアウトプットを最適化することで、ユーザーとの信頼関係を構築し、リピート・ビジネスを促進するのに役立ちます。
パフォーマンス・エンジニアリングは、システム内の問題を明確に把握します。この図により、システムを拡張する際(新しいサービスを追加することで水平方向に拡張する場合、またはネットワーク容量をより多く使用することで垂直方向に拡張する場合)に、ボトルネックを回避しやすくなります。
パフォーマンス・エンジニアリングは、確立されたベンチマークを満たすシステムを作成するために必要なツールと知識をエンジニアに提供するのに役立ちます。エンジニアは、ネットワークの性能を大幅に低下させる前に問題を発見できるため、性能の問題をより迅速に解決し、平均修復時間(MTTR)を短縮し、コストを削減できます。
パフォーマンス・エンジニアリングは、システム動作に対するエンジニアの理解を深めることで、キャパシティー・プランニングの効果を向上させるのに役立ちます。ベンチマーク・プロセスと継続的なオブザーバビリティーの実践を通じて、エンジニアはネットワークに必要なものについてより深い洞察を得ることができます。この洞察により、エンジニアは容量に関するより適切な意思決定を行い、サーバーの容量に対する過剰な支出や不足のリスクを軽減することができます。
パフォーマンス・エンジニアリングの課題には、最新のシステムの複雑さ、問題の根本原因の特定、「ロングテール」問題の考慮、必要なツールセットと専門知識の構築などがあります。
現代のIT環境は、複雑なハイブリッドクラウド環境でホストされることが多い、数千にもなる マイクロサービスによって支配されています。このような分散システム全体で洞察を収集し、分析し、行動することは、時には予測不可能なワークフローを伴うリソース集約的なプロセスとなりえます。
ロングテールの問題は、少数のユーザーが経験するネットワークの不良状態です。多くの場合、通常のオブザーバビリティーの実践を回避する、検知が難しい特異な問題によって引き起こされます。パフォーマンス・エンジニアリングの文脈では、これらの問題はネットワーク全体の状態を脅かすため、課題をもたらしますが、通常のパフォーマンス・テストではその根本原因を特定するのが困難です。
パフォーマンス・エンジニアリングの実践には、スタッフの専門知識と高度なプラットフォーム機能が必要です。パフォーマンス・テストには、ネットワーク状態の高価な大規模シミュレーションが必要です。チームは、大量のテレメトリー・データを実行可能な洞察に変えるには、システムを十分に理解する必要があります。パフォーマンス・エンジニアリングの柔軟で反復的な性質には、急速な変化に対応できる組織構造が必要です。
IBM Cloud Infrastructure Centerは、IBM zSystemsおよびIBM LinuxONE上で稼働するプライベートクラウド・インフラストラクチャーを管理するために設計されたOpenStack互換ソフトウェア・プラットフォームです。
ハイブリッドクラウド環境全体に安全なAI対応インフラストラクチャーを提供します
安全性と柔軟性を備えたクラウドで、ビジネスの成長に合わせてリソースを無理なく拡張できます。