【システム開発】パーセンタイルはパフォーマンスを表現できる便利な指標

f:id:orchid-bell:20181217225922j:plain

システム開発をベンダーに依頼する時に、応答速度や処理速度の希望を伝えるのは意外と難しいです。

「動きが遅いのは絶対イヤ。どんなに大きなデータでも3秒以内に処理すること!」などと要求すると、とんでもなく高額な見積もりが出てきます。

普通は「大容量データの処理中は動作が遅くなってもしょうがない」と割り切って、ある一定以上のデータ量はパフォーマンスの条件から外すという形で依頼します。しかし、ここにも問題があって、「じゃあ、一定以上というのはどこ辺が適当なのだろう?」ということになります。

そこで活躍するのが、今回ご紹介するパーセンタイルという指標です。

 

パーセンタイルとは、データの位置を表す値

パーセンタイルは統計学の考え方で、データを小さい順に並べて、最初からみて何%のところに位置するかを見たものです。

システム開発の依頼においては、「応答速度:90パーセンタイル 3秒以内」のような表現をします。

動作の軽い処理からみて、90%の処理は3秒以内の応答速度を実現しなさいという意味になります。

裏を返せば「重い処理の10%は3秒を超えてもよい」ということです。

こうすることで、「重い処理は動作が遅くてもしょうがないよなあ」という感覚的なものを簡単に数値化して伝えることができます。

パフォーマンスを重視しないのであればパーセンタイルは下げれば良いですし、ハイパフォーマンスなシステムにしたければ、パーセンタイルを上げておけば良いです。

パフォーマンスの妥協点を数値ひとつで検討しやすいので、おすすめです。

 

パーセンタイルのデメリット

パーセンタイルはこちらの希望するパフォーマンスを手軽に伝達できる手段ではありますが、パーセンタイル外の処理時間に言及できておらず、またパーセンタイル内に含めたい処理が伝えられないというデメリットがあります。

分かりにくいと思うので、データベースアクセスを例にして説明します。

データベースアクセスには、検索、追加、更新、削除という4つの基本処理がある。

今回のシステムは基本的にデータ削除はしないので、検索、追加、更新が速ければ良いという意図で、応答速度は「90パーセンタイル 3秒以内」という提示をした。

しかし、出来上がったシステムは検索、追加、削除がパーセンタイル内に含まれ、更新が含まれないという結果だった。しかも、更新処理は非常に遅く、最低でも1分はかかる状態だった。

重視したい機能や処理をうまく伝えられないと、このようなことになってしまいます。

パーセンタイルはパフォーマンスの期待値を表すためだけに使用し、言葉で説明できることはちゃんと説明することが、パーセンタイルをうまく使うコツです。


パーセンタイルは評価指標としても使える

例えば負荷テストを行った結果、「応答速度:平均値5秒、99パーセンタイル 3秒以下」となったとします。

この例だと大多数の処理は速いですが、残り1%の処理が平均値を底上げしていることが分かります。

このようなデータの捉え方をすることで、パフォーマンスの改善点を探しやすくなります。

ぜひ活用してみてください。