冪等性 【idempotence】 冪等 / idempotency
概要
冪等性(idempotence)とは、ある操作を何度繰り返しても結果が同じになるという性質。元は数学の概念だがIT分野でもほぼ同じ意味で用いられる。同じ演算や処理、操作などを1回行っても、何度繰り返し行っても常に同じ結果になる性質を指す。例えば、「与えられた実数の絶対値を求める関数」は、得られた結果を再度与えても結果は同じになり、何度繰り返しても結果は同じとなる。
HTTPでWebサーバに対する要求の種類表すHTTPメソッドでは、同じリソースへGETメソッド、PUTメソッド、DELETEメソッドを何度発行しても結果は同じになるため、これらは冪等な操作だが、POSTメソッドを繰り返し発行するとその度にサーバにデータが追加され異なる状態に変化していくため冪等ではない。
IaCの冪等性
システム管理の自動化などを行うIaC(Infrastructure as Code)ツールなどでは、システム環境を整備するコードが冪等になるよう、宣言型言語を用いて記述することが多い。これは従来のコマンドなどを列挙するシェルスクリプトなどの仕組みと対比される。
例えば、コマンドなどの手続き型のコードで「VMインスタンスを1台起動する」という手続きを記述すると、実行前の状態によって結果は異なり(起動済みが1台なら2台に、2台なら3台になる)、繰り返し実行するとその度に異なる状態に変化する(1台→2台→3台→…)。
一方、宣言的なコードを用いて「起動済みVMインスタンスを1台にする」と記述すれば、実行前の状態に関わらず、必ずインスタンスが1台の状態になる。コードを何度繰り返して適用しても、やはり1台起動した状態が維持される。必要な操作はその都度異なるため、ツール側に高度な制御機能が必要となる。
(2023.9.29更新)