トランザクションスコープ

  • トランザクションスコープが適切かどうかを見極める道具として、シーケンス図が有効である。
    • 代表的なトランザクションがどのような処理を含んでいて、どのような経路を通り、何を含んでいないのかを確認することができる。
    • きちんとDBに対してデータ更新を実行してからユーザーにレスポンスを返しているか、不要な処理をトランザクションに含んでいないかがポイントとなる。

トランザクションスコープが不適切な場合の対応策

  • トランザクションを構成するソフトウェアは、システムにおいて重要なコンポーネントである。そのため、トランザクションスコープが不適切だからといって、再構想などの対策がしくにい。
  • そこで、トランザクションスコープが長すぎる場合の対策として、次が挙げられる。
    1. タイムアウトの実装と検知
      • 時間がかかりすぎている場合に自分から処理をギブアップする。
    2. サービス監視を実装する
      • 業務ができているか、あるいはレスポンスがおかしくないかを監視する。
    3. インフラの持つ各種キュー(待ち行列)を監視する
    • Webサーバーにおけるスレッド数やDBへのリクエストキューなどの処理が終わっていなければ、どんどん蓄積されるリソースを定期的に確認して、閾値を超えたら通知する。
    • 大幅に手を入れられるならば、一旦溜めるようなキューイングの仕組みが効果的な場合がある。

参考文献

  • 『DB SELECTION 44のアンチパターンに学ぶDBシステム』