💨

Infrastructure as Code やる?やらない?やめる?

2023/10/26に公開

TL;DR

  • Infrastructure as Code はよい
  • Infrastructure as Code はよい、だけではない
  • Infrastructure as Code はよい、だけではないことを理解した人たちもいる

はじめに

最近このネタをさんざん考えていますが、Infrasturcture as Code についてまた少し書いてみようかと思います。

Infrastructure as Code のよい点

こちらは割とわかりやすいかと思うのでさっくり書いていきます。

  • 構築手順が標準化される
  • 構築時間が短くなり、それに伴う時間・工数コストが削減される
  • 構築ミスが減る
  • かっこいい、楽しい

もっといっぱいありますが、いくらでも書けるとは思います。

Infrastructure as Code の気になる点

よい点 に対して 気になる点 と表現するのはフェアでないようにも思いますが、別に悪い点でもないのでこのような表現にしています。

  • 初期の学習コスト、新しい機能が出てきた際にそれに対応する運用コストのようなものをどう考えるか
    • 耳が痛い話かもしれませんが、IaC は入れて終わりではなく IaC 自体の運用・メンテナンスが必要です
  • (歴史のある VM と比較して) 新しい PaaS や Serverless、k8s などの概念が出てきた際に、その柔軟な構成に対応する IaC をタイムリーに提供できるか
    • この観点において、CaaS (Container as a Service) 基盤は役割分担として意外といい落としどころではないかと思っています
  • 一般的なシステム構築 (要件定義、設計、構築、テスト、運用) において IaC が効くのは設計以降だが、一番重要なのは要件定義
    • 諸説あるとは思いますが、要件間違ってたらできあがったものに満足できないですよね、というのはみなさん同意できるんじゃないでしょうか
  • そもそも自社でそのインフラ抱えておく必要あるのか
    • これは世の中に多数存在しているマネージド サービスを念頭に置いていますが、そもそもそのシステムが自社のビジネスに競争力をもたらすものでなければアウトソースするのも選択肢に入ってきます
  • 自社が IT を活用している・できているのかどうか
    • いわゆるテック系企業・ネット系企業では IT 自体が競争力を生み出す源ですが、たとえば製造業・小売業において IT で競争力を生み出せていない状況であれば IaC に対する投資対効果が薄くなります
    • 逆説的に、製造業・小売業において IT で競争力を生み出せる企業をもっと増やしたいと考えています
  • SIer / ベンダーにインフラの構築を依頼している
    • 運用を他社にアウトソースしているケースは多いとは思いますが、仮に今 30 万円で VM が構築されていたとして、IaC を導入することで 10 万円になりました、じゃあそれがそのままユーザ側にも還元されるかというとそうはならないでしょうという話です
    • 逆に SIer / ベンダーに取ってみればさっさと IaC を取り入れて内部工数を下げ、利益を増やすということは当たり前に行われていてもおかしくないです

Infrastructure as Code の導入を後押しするもの

よい点と気になる点を書きましたが、自社のインフラストラクチャが以下のような性質を持っていれば IaC を取り入れるメリットが大きく、投資に対するリターンが早く得られるのではないかと思います。

  • インフラストラクチャのデプロイ回数が多い

    少し概念的なグラフを示しますが、自動化なしに比べて自動化ありは 0 (初期状態) におけるコストがやや高い、一方で自動化ありにするとデプロイ 1 回当たりのコストが下がる、という前提で書いたものです。
    横軸は「年」として、1 年に 1 回デプロイするのか、2 回デプロイするのかの違いでふたつのグラフを書いています。
    この前提において、デプロイ回数が少ない場合より多い方が、2 つの線がクロスする時点が左になる、つまりインフラ構築の積算コストがより早いタイミングで等しくなることを示したつもりです。
    あたりまえの話を書いていますが、一応図にするとなるほどと思うかもしれません。

infrequent deployment

  • 同じようなアーキテクチャが多い

    少しずつ変わってきている雰囲気もありますが、業界ごとのプロプライエタリなシステム・アプリケーションにおいては 3 層アーキテクチャがまだ採用されているのではと思います。
    じゃあ Load Balancer があって、その後ろに VM が 複数台あって、でそれを Web / App / DB で 3 セット、みたいなアーキテクチャが多いのであれば IaC との親和性は高いです。

Infrastructure as Code をやめる

まだやってないよという会社も多いのかもしれませんが、一方でもうやめようという会社もあるのも確かです。
メリットは確実にあるのですが、じゃあそれに見合うだけのコストなのかというとそうではない、というケースもあります。
IaC 取り入れたいのでそのためのワークショップをやってほしいというのはよく聞く話ではあるのですが、最終的な導入のイメージまでちゃんとつかんだうえで IaC の世界に飛び込んでいただければと思います。

Discussion