忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【システム構成】二度届いても動じない!「冪等性(べきとうせい)の担保」|情報処理問題1000本ノック

ネットワークの不安定な環境では、同じリクエストが重複して届くことは珍しくありません。そんな時、システムが二重処理を防ぎ、常に正しい結果を保つための必須概念を攻略しましょう。

1. 問題:重複リクエストへの耐性

【 問題 】 ある操作を1回行っても、失敗したと思って複数回繰り返して行っても、結果が常に同じ(副作用が1回分しか発生しない)ようになる性質を何と呼ぶでしょうか?

ア、一貫性(Consistency)   イ、可用性(Availability)   ウ、冪等性(Idempotency)   エ、原子性(Atomicity)

2. 正解:システム設計・APIに関する正解

正解: ウ、冪等性(べきとうせい)

3. 解説:「何度やっても結果が同じ」という安心感

特に決済システムやメッセージキューを利用した分散システムにおいて、冪等性の担保は設計上の最優先事項の一つです。

【図解:冪等性がある場合とない場合】

■ 冪等性がない例(銀行振込)
・「1万円送金する」という命令を2回送ると、2万円引き落とされる。
・通信エラーで結果が分からない時に再送するのが怖くなる。

■ 冪等性を担保した例
・命令に「リクエストID:A100」を付与する。
・サーバー側で「A100は処理済み」と記録しておけば、2回目が届いても「既に完了しています」と安全に回答できる。
[ HTTPメソッドと冪等性 ]
GET, PUT, DELETE:原則として冪等であるべきとされています(何度消しても、無い状態は変わらない)。
POST:原則として冪等ではありません(送るたびに新しいデータが作られる可能性がある)。

1. 理解のコツ: エレベーターの「行先階ボタン」をイメージしてください。1回押しても、連打しても、結局その階に止まるという「結果」は変わりません。これが冪等性です。
2. 試験対策の視点: 「同じデータが複数回届いても正常に処理できる」「ある操作を何度繰り返しても結果が同一」という表現があれば冪等性です。分散システムにおける「リトライ処理」とセットで出題されることが多いです。


4. まとめ

「同じデータが複数回届いても、正常に処理できることを担保する」。これが冪等性(べきとうせい)です。ネットワークの「もしも」を想定し、二重実行によるデータの不整合を防ぐ、堅牢なシステム設計の要(かなめ)です。


PR