はじめに
IaC(Infrastructure as Code)は今や必須と言っても過言でないくらい浸透しているアーキテクチャだと思います。(個人の主観)私の対応するお客様の中でも利用数は多く、むしろIaCやらないと仕事任せられないくらいの姿勢でくるお客様もいらっしゃいます。ただIaCを実現するには、単にツールを導入すればよいだけではなく、導入前から様々な製品を比較検討する必要があります。これは当たり前と言えば当たり前の事実ですが、何も考えずにこのツール入れればいいんでしょ。といった安易な考えの元ツールを入れてみたけど使いこなせない。イメージと違ったみたいなお客様も多くいらっしゃったので、個人的なノウハウ含めて検討の際に考えておきたい事を書きたいと思います。
IaCのメリット・デメリット
簡単に言うと同じような構成のシステムの焼きまわしが用意にできるので、構築コストが圧倒的に手動と比べて削減できます。しかしながら、導入するにあたり利用者に学習コストがかかったり、運用ルールを明確に定めていない場合実機とテンプレートに差異が発生してしまい差異が発生した場合の取り込みはどのように実施するのかを予めルール化しておかないと運用が破綻します。
IaCの市場
調査会社の分析によると中小企業よりも大企業の方が利用率が高い傾向がある事が判明しました。
これは考えてみればごく当たり前で、中小企業のように複数サービスがサイロ化されておらずかつシステム規模の小さいものに対して、わざわざIaCを導入してもあまりメリットが少ないからです。逆に大企業のようにエコシステムが複数あり、システム規模が大きいものが各部門ごとにそれぞれあるような場合、IaCを使う恩恵が大きいです。
導入にあたり考えること
主に重要な3点に絞って記載しました。
詳しくは以下資料を参照ください。
各ツールの役割
例えばツールを導入するといってもそのツールがどこまでをカバーしているのかを考えないといけません。
プラットフォームを管理するツールなのか?OSやミドルを管理するシステムなのか。
ツールによってライセンスや対応言語、動作するプラットフォームの制約等もありますのでこれらを勘案して検討する必要があります。
最後に
少し込み入った話をしましたが、導入のきっかけは各社それぞれあるのでPoCから入るのであればザックバランに使ってみるのもありかと思います。例えばですが、ある会社様では、社内にHCLの有識者がいたためにTerraform一択でやりたいといったお客様もいらっしゃいました。そういったきっかけを元にIaCに取り組むのもありかと考えます。
講演資料
ウェビナーで登壇した際の資料まとめておりますので、興味がありましたらご参照ください。