書籍
著:野村総合研究所
日経BP社
読もうと思った動機
仕事で排他制御の話があり、それについて理解を深めたいので本書を選びました。
印象に残った部分
エラーチェックの種類 p17 p25
エラーチェックは大別して
単項目チェック、複数項目関連チェック、業務タイミング、その他とある。
PL:Presentation Logic
BL:Buisiness Logic
ライフライン名 | 説明 | 実装方法 |
---|---|---|
GUI | ブラウザで表示される部分 | "" |
receive_reqeust(略) | PLでリクエスト、レスポンスを処理する部分 | "" |
単項目チェック(simple_item_check) | PLで実行 入力項目ごとに、入力規則通りかをチェックする処理型、桁数、書式、必須、文字コードなどが入力規則通りであること | "" |
複数項目関連チェックmultiple_item_related_check | BLで実行関連のある複数項目間の整合性チェックする処理 画面内項目間の入力内容の整合性が保たれていること | "" |
業務チェックbuisiness check | BLで実行業務のチェック、他システム連携、データベース連携 | "" |
DB | RDBMS。ストアドにBL使うならより詳細に書く必要あり | "" |
エラー後挙動の3パターン p60
名称 | 説明 | 単項目チェック? | 複数項目関連チェック? | 業務チェック? | その他 |
---|---|---|---|---|---|
再入力パターン | 利用者が入力誤りを訂正して再実行することで、エラーを解決できるパターン | ◯ | ◯ | ◯ | 最も多いパターン |
やり直しパターン | 単純な再入力では解決できず、エラーの起点処理に戻ってやり直すことで解決するパターン | ☓ | ☓ | ☓ | セッションタイムや排他エラーで使われる |
お手上げパターン | 利用者では解決できない問題が発生したパターン | ☓ | ☓ | ☓ | システムダウンやネットワークエラー |
排他制御の種類 楽観 or 悲観
・排他制御とは、システムを複数の利用者が同時に操作するような場合一貫して、処理するために必要な制御機構
・楽観的ロック:対象のテーブルにロックキーという属性を加え、データを更新するたびにロックキーを更新する。
・ロックキーについて、タイムスタンプよりバージョンキーにしたほうが良い。タイムスタンプの最小単位が1秒、1分の場合エラーになる場合がある。
todo 楽観ロックされる様子をアクティビティ図かシーケンス図で書く
楽観ロックの実装方法 p169
バージョン比較、タイムスタンプ比較、全列データ比較
実践できること or 感想
業務システムのシステム設計の本です。初心者向けです。
この本とても良いですね。何が良いって業務システム開発でつまづきやすい箇所(エラー設計、排他処理設計)が書かれているという点が良いですね。あと分かり易くするため工夫が随所に盛り込まれてるのも良きですね。正直言ってこの本に感動しました。
惜しいと思う箇所は、参考書籍が紹介されていないことです。
もっと掘り下げたい項目の関連書籍があれば尚良かったです。
今の自分に難しかったのは複数画面のエラー処理と、悲観ロック以降は難しかったですね。
後で再チャレンジしたいですね。
実践すること
本の内容を全部頭に叩き込んでおきたいです。
検証環境を作って簡単な再現デモをできる状態にしておく
さっと見せられるような再現デモを用意しときたいですね。
HTML+JSでDocker無し簡単な
腐りにくそうな知識で、作っとけば何回も再利用できそうだからやる価値は有ると思います。
エラー処理再現デモについて
・シーケンス図とアクティビティ図を書く
・エラー発生後の挙動3パターンを実装する
・htmlファイル(HTML+JS)で再現する。動作環境をブラウザのみにする。
楽観ロック再現デモについて
・シーケンス図とアクティビティ図を書く
・楽観ロックの実装パターンを実際に作って検証する
・動作環境はとりあえず、素のphp+postgres(Docker)
DBあるからやっぱりDocker必要になるかな。SQLiteで代用できるか???
docker使わない方法はないだろうか
悲観ロックについて
上の楽観ロックできるようになってから考えます。