以前非機能要件を定義するためにIPAさんの資料を参考にして作成を進めました。
その中で特に困った項目を挙げここでお話ししたいと思います。
1. オンラインレスポンスについて
まずオンラインレスポンスについておさらいしましょう。
レスポンスタイムとは、システムや装置などに要求や入力が与えてから、反応を送り返すまでにかかるの時間のこと。また、その平均。この時間が短いほど、利用者や他のシステムなど外部にとっての「待ち時間」が少ないことを意味する。
出展:↓
直感的に分かりますね。
非機能要件でオンラインレスポンスの時間を決める際は通常時とピーク時の二つを考えます。
今回イマジテックで開発しているサービスは要件定義内に即時レスポンスが定められています。
なので通常時は即時レスポンスを実現する、でいいのですが問題はピーク時です。
ピーク時何秒で返そっかなーってわかんないです。
少し迷っていて色々調べると以下の記事に出会いました。
応答時間における3つの限界が書いてありました。
・0.1秒までなら応答が瞬時に返ってきたという印象を与える。
・1秒までならユーザーの思考は途切れなく流れる。
・10秒までならユーザーの注意力は続く。
・10秒遅延してしまうと、ユーザーが即、サイトから離れてしまうことも多くなる。
なに!
いやー。勉強になりました。
この資料を踏まえピーク時は10秒以内で返答するように決めました。
せっかくサービスにアクセスしたのに10秒以上待たされて離れてしまうのはもったいないです。
とはいえ10秒以内は十分遅いので開発時はさらに早くレスポンスが返るようにしたいですね。
2. CPU利用率、メモリ使用率について
利用率についてはそのままですね。
最初この二つの利用率については、
「まあ、80%超えたらアカン」
と考えていました。(どこかでそうで聞いた気がする。。。)
しかしこの80%というのは私たちが普段利用してるPCのCPU,メモリについてです。
今回はサーバのCPU,メモリの利用率なので改めて考えなければいけません。
↓の画像はIPAが公開している資料になります。
CPU利用率、メモリ使用率を決めるにあたって参考で来ます。
(CPU利用率についての画像ですが、メモリ利用率も同じレベルです。)
出展:IPA 『非機能要件グレード グレード表 P.9』
こちらを参考にし利用率を決める際は
80%以上
50%以上80%未満
20%以上50%未満
20%未満
このレベルで考えます。
まず80%以上はなしです。
通常時80%で急に大量のアクセスが来た場合、100%になる可能性があります。
これに合わせそもそもパフォーマンスが低下する可能性があります。
続いて20%未満ですが費用面の意味で却下です。
絶大な安心感を得ることができますが、単純な話で「良いサーバ」だからです。
弊社が開発しているサービスは大規模でなくまず小さく進めており、チャレンジの意味合いも含めています。
今後大規模なサービスになって強いサーバが必要になる可能性はありますが、現状そこまで余裕を持ったサーバの性能する必要はないです。
残りは
50%以上80%未満
20%以上50%未満
の二つです。
うーん。ムズイ。
ここにきてどちらかを選ぶ決定的な理由が見つからず困りました。
ここでIPAが選択時の条件を載せていたので見てみます。
にゃるほど。
低コストにこだわるなら80%以上
利用者が増える想定なら20%以上50%未満
バランスが取れているのが50%以上80%未満だと
上記の結果CPU利用率、メモリ利用率を
50%以上80%未満
とすることにしました。
開発中のサービスについて触れませんので多くは言及しませんがバランスが取れているこの利用率にします。
なんとか利用率を決めることができましたが、選択理由を具体的に説明をすることはできません。
なぜそう決めたのか説明をする際は「IPAがそう言ってたから」としか言えません。
具体的な説明ができるよう日々の研鑽が必要です。
3. 終わりに
非機能要件を決めるにあたって様々な資料を参考にしました。
今回参考にした記事、サイトさんには感謝しています。
それにしてもまだまだ修行が足りません。
開発以外の知識が(考え方によっては開発ですが)欠落しています。
自社サービス開発を続けることで得る知識は計り知れないので今後もQiitaにて発信を続けたいと思います。
4.予告
次の記事では「DB設計」についてまとめたいと思います。
10月20日金曜日に投稿予定です。