自動構築ツールの強み「冪等性(べきとうせい)」
一度構築したら二度と変更が加わらない、ということはありません。「企画・設計」時点で8~9割方システムの構成は決まっていますが、残りの1~2割は検証環境などで実際に構築させ試行錯誤する必要があったり、構築期間中にパッケージがバージョンアップしていたり、と変更は必ず発生します。
またシステムのライフサイクルが一周し、「更改」するときになって既存の環境に変更を加えることもあります。
例えばウェブサーバを構築する際に構築スクリプトを用いてApacheをインストールします。後にMySQLも必要になったときに、構築スクリプトに「MySQLをインストールする」と追記して実行するとどうなるでしょうか? 答えはApacheが既にインストールされているためスクリプトはエラーを返します。
ここでようやく自動構築ツールの強みが出てきます。自動構築ツールは「冪等性(べきとうせい)」という性質をもっています。聞きなれない単語かもしれませんが、大雑把に説明すると「ある操作を1回行っても複数回行っても同じ結果が得られる」という数学の概念です。
自動構築ツールにおいての冪等性とは「処理の結果が現在の状態と変わらないのなら、処理を行わない」と理解すると良いでしょう。「対象をどうするか」ではなく「対象が最終的にどうなっているか」を先に考えることができます。
つまり、MySQLの例を構築スクリプトではなくplaybookに記述するとAnsibleは「Apacheはすでにインストールされているので何もしない。MySQLはインストールされていないので実行する」と判断します。
もちろん、ChefやPuppetといった主要な自動構築ツールはこの性質を持っています。 (注:すべての処理に対して冪等性が担保されるわけではありません。)
この性質があるおかげで変更が容易になり、少人数でも大量のサーバを低リスクで構築することができます。結果、構築の自動化が導入されるようになってきました。
おわりに
自動構築をメインに駆け足でシステム開発の自動化について説明しました。自動化を用いたプロジェクトは今後もますます増えていきます。システムエンジニアとして必須の技術とはならないかもしれませんが知っておくに越したことはないでしょう。
「自動」と聞くとどうしてもコンピュータは自ら考え実行する人工知能(AI)のようなものを想像してしまいがちですが、この記事を通してシステム開発の自動化がそこまで仰々しいものではないと少しでも感じていただけると幸いです。
- 慶田 洋啓
- 株式会社BFT
- 「インフラエンジニア3年目。仮想化プロジェクトからスタートし、DB更改プロジェクトを経て現在はクラウドによるMSPサイト一括化、 およびオンプレミスの分析ツール変更の設計、構築、試験などに携わる。Linux、Windowsどちらも満遍なく触れている。」