タイムアウト設計
タイムアウト設計とは、システム開発において機器や機能部のタイムアウト値を全体として整合性を持つように設計すること
実施すべき工程
ウォーターフォール開発においては○○において実施すべき。 アジャイル開発においては○○において実施すべき。(悩み中)
実施すべき担当
インフラ(方式)チーム、アプリチームが横通しで実施すべき。
タイムアウト設計を行う目的
- ユーザ観点
エンドユーザーを待たせ過ぎないようにする。ずっと処理中の砂時計の画面だとエンドユーザ体験が悪い。
- サーバリソース観点
異常な事態によって異常に時間がかかっている処理があった場合、その処理がシステムの資源(DB接続、HTTP接続、APサーバーのスレッド、など)をいつまでも占有してしまう。この結果、正常に処理できるはずの他の要求が処理できずスループットが低下する。システムの資源を速やかに解放し、この事態を回避するため、タイムアウト値として上限時間を定める。
- セキュリティ観点
例えば、セッションのタイムアウト値を無限にすると、ユーザがログイン → 離席 → 誰かが勝手に悪さをする!
ユーザがあるASPアプリケーションとの会話をうち切ったつもりでいても,20分間はそのセッションが生き残っているということである。もし,本人がWWWブラウザを終了させずに席を離れた隙に他人が操作をして当該ASPアプリケーションのページを呼び出すことができれば,生きているセッションに再接続することができ,各種の情報が漏れてしまうことになる。
タイムアウト種別/分類
クライアント非活動タイムアウト(セッションタイムアウト)
- クライアントが指定時間以上操作をしない場合、タイムアウトとなる
処理タイムアウト
タイムアウト設計のポイント
タイマー設計の一般的なポイント
–クライアントからバックエンドへ向かって徐々に短く設定する
–ユーザに表示されるタイムアウト画面とユーザの後続処理を確認する
処理タイムアウトでは以下の点も確認
–タイムアウトするタイミングと開放されるリソース
–タイムアウト発生時に、その処理が中断/ロールバックされるか、処理が継続されるか
–タイムアウト発生時のエラーハンドリングと検知方法
タイムアウト設定箇所
(悩み中)
-ブラウザ
-ロードバランサ
-WAF
-認証サーバ
-Webサーバ
-DBクライアント
-DBサーバ
-対向システム
タイムアウト設計サンプル
[引用] http://public.dhe.ibm.com/software/dw/jp/websphere/was/was7_update/wasv7updatews05design_rv.pdf
参考
http://public.dhe.ibm.com/software/dw/jp/websphere/was/was7_update/wasv7updatews05design_rv.pdf
https://qiita.com/takkun/items/db49fdfcdec1c0c34f47
http://itdoc.hitachi.co.jp/manuals/3020/30203M0461/EM040140.HTM
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a05_03_main.html