システムのパフォーマンスに問題が発生すると、ビジネス上で大きなダメージとなります。そのため、パフォーマンスチューニングは定期的に、かつ適切に行う必要があります。しかし、パフォーマンスチューニングをどのように行えばよいのか迷っている人もいるのではないでしょうか。

ここでは、パフォーマンスチューニングの必要性や流れのほか、適したツールについて解説します。

 

パフォーマンスチューニングとはシステムの動作環境を最適化すること

パフォーマンスチューニングとは、システムのパフォーマンスを計測し、本来想定していたレベル、あるいはそれ以上の性能を発揮できるよう、システムの動作環境を最適化することです。

システムのパフォーマンスが当初の想定より落ちていた場合、まずは当初の性能を取り戻すことを目指します。そして、さらなるパフォーマンスアップの余地があるのか、パフォーマンスを維持しながらコストを落とす方法があるのかといった内容を検討することが一般的です。

なお、パフォーマンスチューニングは、インフラ領域でもよく使われますが、ここではソフトウェア領域を中心に解説します。

 

2つの視点からみたパフォーマンスチューニングの必要性

パフォーマンスチューニングがなぜ必要なのか、2つの視点から説明します。ひとつはコストとパフォーマンスのバランスを基準にするコスト視点、もうひとつはサービスの提供状況を基準にするユーザー視点です。どちらの視点でパフォーマンスチューニングするかによって、とるべき方法や目指す結果が異なります。パフォーマンスチューニングを行う際は、どちらの立場に立って実施するのか、最初に明確にしておきましょう。

それぞれの視点におけるパフォーマンスチューニングの必要性について解説します。

コスト視点でのパフォーマンスチューニング

コスト視点で考えると、クラウドネイティブの環境の場合にパフォーマンスチューニングの必要性が高まります。クラウドネイティブの環境では、オンプレミスの運用と異なり、リソースの増減は比較的容易です。現在のアクセス状況に対してシステム構成を最適化できれば、過剰なコストを抑える効果が期待できます。また近い将来、ボトルネックになりそうな部分があれば、若干のコストをかけてグレードアップすることで、負荷が増加してもパフォーマンスを維持できるでしょう。

 

ユーザー視点でのパフォーマンスチューニング

ユーザー視点では、ビジネス上の損失を防ぐためにパフォーマンスチューニングが必要です。

システムのパフォーマンスが悪化し、サービス提供に支障をきたすレベルになれば、ユーザーにストレスを与えるだけではなく、サービスそのものがダウンしかねません。また、ユーザーからクレームを受けた後にアクションを起こしても、サービスが元のパフォーマンスを取り戻す頃には、自社サービスのブランドを大きく損なうことも考えられます。

そのため、ユーザー視点でのパフォーマンスチューニングは、外形監視を使ってユーザーと同じ環境からサービスにアクセスし、ユーザーから見たシステムのパフォーマンスを定期的に計測することや、リアルユーザーモニタリングを使って実際にユーザーが体験しているパフォーマンスを測定することが重要です。

パフォーマンスチューニングのポイント

パフォーマンスチューニングを行う際は、システムの各部から得られるメトリクスデータをどこまで収集し、どれほどの頻度でパフォーマンスチューニングを行うか、そのバランスがポイントとなります。

例えば、ユーザーとの接点となるアプリケーションの処理時間のデータはユーザーのサービスに対する評価に直結する重要なデータです。しかし、このデータだけでは適切なパフォーマンスチューニングはできません。分析精度を高めるために、異なる時間帯やユーザーのデバイスといった、より多くの情報が必要です。

一方で、補足情報を多く集めすぎると、分析に時間がかかり、結果としてパフォーマンスチューニングの頻度が落ちてしまいかねません。

情報の収集の粒度やパフォーマンスチューニングの頻度は、何度かパフォーマンスチューニングを実施しながら、自社に合ったバランスを探る必要があります。

パフォーマンスチューニングの流れ

パフォーマンスチューニングはどのように進めていけばよいのでしょうか。一般的な流れを見ていきましょう。

 

1 .パフォーマンスチューニング前の状況を正確に把握しておく

パフォーマンスチューニングを行う前に、現時点でのシステムの状況を把握します。すでに何らかの問題が発生しているのなら、その事象をできるだけ正確に詳しく記録しておきます。インフラ側だけでなく、ユーザー視点でのパフォーマンスレベルも記録しておきましょう。

また、パフォーマンスチューニングにどれほどのコストをかけられるのか、あらかじめ想定しておくことをおすすめします。

 

2.  ボトルネックを検出する

次に、ボトルネックを検出します。従来の方法では、OSやミドルウェア、アプリケーションなど、さまざまなところから出力されるログを取得し、どこでどのような処理が行われ、どんな結果になったのかを突き合わせて、ボトルネックを検出する必要がありました。

オブザーバビリティを実装しているAPM(アプリケーションパフォーマンス監視)ツールを活用すれば、迅速にボトルネックを検出可能です。ログだけでなく、メトリクスデータやトレースデータなどを収集し、クラウドに分散している多くのマイクロサービスをすべて関連づけて表示します。

 

3 . 適切なパフォーマンスチューニング策を検討、実施する

ボトルネックが見つかったら、その中から最もパフォーマンスの改善に効果が見込めるものを選び、改善策を検討し実施します。

パフォーマンスの悪化要因は、アプリケーション側やユーザー側などいたるところに存在します。そのため、フロントエンドからバックエンドまでのシステムすべてを俯瞰して、悪化要因をピックアップし、優先順位を付けた上でパフォーマンスチューニング策を検討していくことが大切です。

 

4.  効果測定を行う

パフォーマンスチューニングを行ったら、どのような成果が出たのかを必ず測定しましょう。パフォーマンスチューニング前よりもパフォーマンスが向上していたら、パフォーマンスチューニングは完了です。成果が思わしくない場合は、ほかのボトルネックを対策し、同様に効果測定を行います。

なお、パフォーマンスチューニングを行うことで、動作障害などが表れる場合もあるため、パフォーマンスチューニング前の状態に切り戻せるよう準備しておくことも大切です。

パフォーマンスチューニングに必要なオブザーバビリティ

前述したように、適切なパフォーマンスチューニングを行うには、システム全体の状況を把握する必要があります。そこで重要なのが、オブザーバビリティの概念です。

オブザーバビリティとは、システム上で何らかの異常が起こった際に、それを通知するだけでなく、どこで何が起こったのか、なぜ起こったのかを把握する能力を表す指標、あるいは仕組みのことです。オブザーバビリティでは、従来インフラ領域だけにとどまっていた監視領域を押し広げ、インフラからミドルウェア、さらにユーザーとのタッチポイントとなるアプリケーションまでカバーします。そして、リクエストに対してどのようなレスポンスがあったのかを追跡、監視し、その情報を保存します。

マイクロサービスが複雑にからみ合うクラウドネイティブな環境では、システム全体がどのように動いているのかを把握するのは極めて困難です。オブザーバビリティがあれば、システム全体をフルスタックで監視・管理でき、効果的なパフォーマンスチューニングを行うことが可能になります。

 

オブザーバビリティについては、こちらの記事「オブザーバビリティとは?監視との違い、必要性について解説」も合わせてご覧ください。

 

 

パフォーマンスチューニングにNew Relicを導入するメリット

パフォーマンスチューニングを行うなら、オブザーバビリティプラットフフォームであるNew Relicを導入するのがおすすめです。アプリケーションのパフォーマンスを管理するAPMの機能を主軸に多くの機能を備え、システム内のさまざまな情報を収集して分析、保存します。

New Relicを導入するメリットを見てみましょう。

 

システム全体を数値化して、可視化できる

New Relicを導入する大きなメリットは、システム全体を数値化して、可視化できることです。パフォーマンスチューニングでは、システム全体を見ることが大切です。しかし、クラウドネイティブの環境では、数多くのマイクロサービスやクラウドサービスなどが関連し合うため、どこに改善の余地があるのかを見いだすのは簡単ではありません。

New Relicなら、システム全体を俯瞰して、重要度や優先度を判断しながら、パフォーマンスチューニングのポイントを表示することが可能です。

 

開発側と運用側が連携しやすくなる

New Relicを導入することで、開発側と運用側が連携しやすくなります。開発側はより優れたサービスを素早くリリースしたいと考え、運用側はサービスの安定性を求めてリリースに慎重な態度を取りがちです。そのため、開発側と運用側が対立することもあるかもしれません。

そこで、New Relicを導入すれば、システムのすべてを俯瞰して、何がどのように関連しているのか、どこに問題があるのかを、ひとつの画面で見ることができます。それにより、問題発生時であっても、開発側と運用側の建設的なコミュニケーションがとりやすくなります。

New Relic導入により開発側と運用側の共通言語として機能すれば、両者がシームレスに連携しながら作業を進めていくDevOpsをさらに推進できるでしょう。

 

効果的なパフォーマンスチューニングを目指すならNew Relicを検討しよう

New Relicには、パフォーマンスチューニングに活用できる機能がそろっているほか、サポート体制があるため、導入や運用にあたって疑問点があっても安心です。また、自前で監視環境を構築する場合と異なり、New Relicなら登録すればすぐに使うことができます。効果的なパフォーマンスチューニングを目指すなら、まずは、New Relicの使用感やコストなどを確かめてみてはいかがでしょうか。

 

New RelicのWebパフォーマンスチューニングについては、下記の記事をご覧ください。

Webパフォーマンスチューニングのためのオブザーバビリティ