Webシステムのパフォーマンス監視とは?基本的な概念から始める入門ガイド #techtekt Advent Calendar 2023

はじめに

はじめまして!テクノロジー本部 エンジニアリング統括部 Miraiz開発本部でエンジニアをしてます、田口です。

最近では、インフラの負債解消、SREっぽい活動、サービスの非機能要求整理などをしています。

この記事は何?

最近プロジェクトで、サービス性能改善のための改修効果を計測するために、パフォーマンス監視を導入することになりました。

しかしながら、自分の経験としては主に死活監視・インフラリソース監視はあるものの、パフォーマンス監視については初心者だったため、一からキャッチアップを始めました。

そこで同じような境遇の方向けの、導入に向けて知っておくべき観点を記事にしてみました。

※ パフォーマンス監視ツールは本当に多く、どれが良いかはそのプロジェクトで既に使われている他ツール(CI・監視など)との親和性にもよるため、具体的なツール比較や実装については紹介していません。

観点1: 何を計測したいのか

まず何よりも先に、関係者が欲しいデータを認識し、何を計測したいのかを把握しておくのが大事です。

パフォーマンス監視で取るようなデータはすごくざっくり、以下2種類に分けられると考えています。

 

1. ユーザー体験(=UX指標)

一般的には、Core Web Vitalsを収集するためのツールが多いです。

※ Core Web Vitalsとは簡単にいうと、Googleが提唱しているWebページのユーザー体験を測定するための重要な指標です。ページの読み込み速度・応答性・視覚的な安定性を評価するものです。

developers-jp.googleblog.com

これらを収集するツールとしては、Ligthhouse, WebPageTest API,pagespeed insightsなどが有名です。

また、リアルユーザーモニタリング(Datadog RUMなど)もユーザー体験を指標化してくれるツールであるため、こちらの分類になるかと思います。

 

2. サーバーの応答速度

例えばマイクロサービスであれば、各機能のコードにスニペットを埋め込んでトレースを取得したり、ロードバランサのアクセスログからレイテンシを引っ張ってくるなどの方法があると思います。

純粋に各サーバーのパフォーマンスを監視したければ、こちらを取得することになります。

ツールは本当に多岐に渡りますが、Datadog APM, OpenTelemety, GoogleCloud利用ならCloud Trace, AWS利用ならAWS X-Rayなどが挙げられます。

 

どちらを計測すべきか?

UX指標を計測する場合

ユーザー視点のデータを収集できるので、エンドユーザーが直接感じるサービス品質を評価できます。そのためビジネス影響のレポーティングしやすさなどにメリットがあります。

一方、データから直接的な原因特定(どこのコードを改修すれば良いか)は、難しいです。

また利用者の環境(クライアントサイド・ネットワーク・地理性)によってもユーザー体験は大きく変わるため、特にサービスのユーザー数が少ない段階だと、収集したデータと利用者側の実態に乖離が出やすいという懸念もあります。

 
サーバーの応答速度を計測する場合

どの機能(ツールによってはコードレベル)が原因で遅延しているかが具体的に分かり、問題を直接特定できます。そのためコード改修やインフラリソース調整がしやすいという開発者側面でメリットが大きいです。

一方、サーバー自身の応答速度を改善してもユーザー体験が必ずしも向上するとは限らないという懸念もあります。

例えば、クライアントサイドの条件(ブラウザ・スペックや地理的な条件)に原因があったり、コンテンツの最適化が不十分で、そもそもCDNなど別のアプローチで対処すべき問題だったり、など様々です。

 

観点2: 小さく始める

マイクロサービスで応答速度を監視するには、基本的に各機能のコード改修が必要です。

また、UX指標を計測する場合も、収集を自動化するためにCIなどを頑張って組むことになります。

このようにして頑張ったわりには、本当に必要なデータが収集できず、結局活用されなかったというオチがありえます。

そのため、導入コスト(人的にも金銭的にも)が低いものから素早く導入を始めて理解を浸透させ、より詳しい指標・別視点の指標がとりたいという要望が出てきたら増強していくのが、無駄がなく本当に欲しいデータが取れるようになるコツだと考えています。

 

最後に

パフォーマンス監視導入の上で、まず何を考えるべきかを書いてみました。

初心者だからこそ伝えられる内容もあったのではないかと考えています。自プロジェクトでもまだ始まったばかりなので、今後自分自身もキャッチアップを続けていきたいと思います。

見ていただきありがとうございました!

 

田口 慎 Makoto Taguchi

エンジニアリング統括部 Miraiz開発部 MIRAIZ開発グループ エンジニア

2022年9月 中途入社。サッカーとハイボールが好き。

※2023年12月現在の情報です。