冪等性(べきとうせい)とは?

f:id:hira98:20190705203618p:plain

【結論】

  • 同じ操作を何度繰り返しても同じ結果が得られる性質のこと。

  • インフラ構築の自動化を進めるにあたって、冪等性の担保が重要になってくる。

【目次】

はじめに

作業を自動化するプログラムを開発する上でに重要になってくる、冪等性という概念についてまとめてました。

簡単な自動化の例

「AからBへファイルをコピーする処理を自動化する例」で考えてみます。

プログラム的には次のような処理になると思います。

  1. Aのファイルを読み込む。
  2. 読み込んだファイルをBへ書き込む。

処理自体はたいしたことないですが、自動化する場合は同じ処理を何回実行しても同じ結果になるようにしないといけません。

なぜなら、自動化処理は一つの環境(サーバーなど)で1回実行して終わり。

というわけではなく、何十、何百台に対して設定を行う事になります。

何十、何百というサーバーは基本的に同じ構成のはずですが、サーバーも物である以上ハード故障でファイル読み込みできない状況だったり、そもそもサーバーに接続できない状況など様々な例外ケースが考えられます。

よって、自動化処理を行うと100台中10台で自動化に失敗しました。

というような状況が起こりえます。

そんな時に、「失敗した10台だけに対して再度自動化処理を行う。」という設定を人力で行なっていた場合、設定ミスが発生し、成功しているサーバーの状態まで悪化させてしまう可能性があります。

というような状況になってしまうと、折角の自動化したのに全く意味がありません。

冪等性とは?

結論でも述べましたが、冪等性(べきとうせい)とは同じ操作を何度繰り返しても同じ結果が得られる性質のことです。

「AからBへファイルをコピーする処理を自動化する」例だと、AからBへファイルをコピーするという作業に着目するのではなく、「AとBに同じファイルがある」という結果に着目します。

結果に着目することで、一度自動化処理に成功したサーバーに対して同じ自動化処理を実行しても返ってくる結果は同じになります。

参考情報

『Ansible実践ガイド 第2版』

さいごに

基本的にブログは土日に書き溜めて、足りない分を平日に朝に書いています。

しかし現場に配属されて、通勤時間(30分→60分)と出社時間(9:30→9:00)のダブルパンチでブログ執筆に当てられる時間も減ってしまい、記事の駄文レベルが一気に上昇している自覚はあります🤪