「Infrastructure as Code」について

「Infrastructure as Code」という言葉を良く聞く。基本的にはバズワードは好まない。馬鹿だと思われるからだ。

しかし、Infrastructure as Codeは好きだ。言葉というより、コンセプトに同意する。

機器の設定なんて機械にやらせた方がいい。SIという業種がある。計算機システムを構築する仕事だ。設計書や手順書を作るところは人しかできない。しかし、設計書や手順書は人に読ませるために書かれる。機械が読めるように設計書や手順書を書いて、機械に機器の設定をやらせるべきだ。

機器の設定なんて人がすべきことではない。その手間を省いた方が人類は幸せになれる。人間にやらせたら不正確だし、遅いし、手間賃もかかる。やる人もつまらない。つまらない仕事はfeeも少ない。*1

機械が読めるように設計書・手順書を書いて、機械に機器の設定をやらせること――これがInfrastructure as Codeである。機械が読める設計書・手順書とは、コードのことだ。

コードは機械が読むものだが、人も読むものだ。書くのは人だが、人を選んではいけない。Infrastructure as Codeの実現の難しさはこれらを満たすことだろう。

Infrastructure as Codeを実現する手段として、「Chef」というソフトウェアフレームワークがよく使われている。ちょっとこれを今調べているが、なかなか良く出来ている。手順書としてのコードを書くと述べたが、Chefはこうなってほしいという状態を記述を求める。簡潔でいい。

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Infrastructure as Codeは発展途上だ。この言葉はなくなるだろうし、Chefもなくなるかもしれないが、このコンセプトは今後必須になっていくだろう。「クラウドコンピューティング」も「Software Defined XXX」も私には同じコンセプトに思える。機械が設定・操作する情報通信機器だ。

設定・操作される側の機器も歩み寄らなければならない。GUIとかCUIとか人のためのユーザーインターフェースは用意されているが、機械のためのユーザーインターフェースが足りない。機械のためのユーザーインターフェースとはAPIのことだ。例えば、REST APIをもっと充実させるべきだ。

*1:やらせる方は結構金を払っているのに、実際やる人はあまりもらえないのは何なんだろう?