はじめてのInfrastructure as Code

オウルです。
今回は、Kubernetesをはじめる前に知っておくと何かと得をする「Infrastructure as Code」を紹介したいと思います。
恥ずかしながら、Kubernetesを知るまで全く知りませんでした。僕は「Infrastructure as Code」を理解することがKubernetesへの理解を深める重要なファクターだと思っています。後は「イミュータブル」ですね。これはまた別の機会に。Kubernetes以外にも、特にパブリッククラウドにおいては「Infrastructure as Code」が主流だと思います。
僕はDevOpsでいうところのDevです。正直なところインフラは全然詳しくないです。というか、インフラに対して好奇心・興味も皆無でした。しかし、Kubernetesと出会い、そしてKubernetesをマネージドサービスとしてデプロイできるパブリッククラウドとの出会いで少し心境に変化(少し好奇心・興味が湧いた)がありました。
ただ、DevがOpsの領域、もしくはインフラ領域まで活動領域を広げるフルスタックエンジニアの考え方についての意見は特にないです。だって技術者の本音としては、その対象に好奇心・興味があるかないかに尽きますよね。興味がある人はやって、興味がない人は自分の興味があること、若しくは強みにエネルギーを注ぐ方がアウトプットが良いと思っています。
Infrastructure as Code
Infrastructure as Code(IaC) というのは、物理的なハードウェア構成やインタラクティブな設定ツールの使用ではない。コンピューティング・インフラ(プロセス、ベアメタルサーバー、仮想サーバー、など)の構成を管理したり、機械処理可能な定義ファイルを設定したり、プロビジョニングを自動化するプロセスである。なお、定義されたファイルはバージョン管理システムで保持することもある。従来、手動のプロセスではなくスクリプトや宣言的な定義によって行われていたが、IaCの開発は今では、宣言的なアプローチに焦点が当てられている。
引用: フリー百科事典『ウィキペディア(Wikipedia)』
れしいこと
僕が思う「Infrastructure as Code」のうれしいことは3つです。
  1. インフラ構築のテストができる
  2. 宣言的設定で分かりやすい(後続で紹介します)
  3. デプロイに至るまでのベロシティと人的ミスの排除(標準化)
インフラ構築のテストができる
言葉の通り、テストができるよってことです。これは物理リソースを抽象化したクラウドサービスによる恩恵が大きいです。物理インフラの構築ってDevでいうところのウォーターフォールに近くて素人には気軽にできない印象だったのですが、クラウドサービスのおかげで気軽にスクラップ&ビルドができ、そしてDevで培われたプラクティスを活かしてテストができるのがうれしいですね。
デプロイに至るまでのベロシティと人的ミスの排除(標準化)
クラウドサービスにより物理リソースが抽象化され、発注、輸送、設置などの時間をせっかく短縮できるのにデプロイできる人が限られていては勿体ないです。Gitなどで評価済の標準化したコードを管理して誰でもデプロイできるフローにしておくと、うれしいですね(評価済であれば、これで大丈夫かなって無駄に不安にならなくていい!!)
言的設定
これ衝撃的でした。最初に考えた人、マジすげーって感じです。この宣言的設定と対比されるのが命令的設定となります。命令的設定はコマンドを順次実行して最終目標の状態を構築していきます。一方、宣言的設定は最終目標の状態を宣言します。
例えばパブリッククラウドに仮想マシンをデプロイする場合
  • 仮想ネットワーク
  • 仮想マシン(1つ)
  • 80、443以外のポートは拒否
  • 静的IPアドレス
上記のような最終目標の状態を宣言して実行すると、宣言した状態の仮想マシンがデプロイされるのです。よく分からない、おまじないみたいな命令的設定のコマンドと比較すると、はるかに分かりやすい!!
こちらでAzure VM のデプロイを「Infrastructure as Code」で紹介しました。
こちらはDeploymentの定義サンプルです(Kubernetes)

僕はまだまだ「Infrastructure as Code」に出会って日が浅いので、これからもできる限り、何かをデプロイする時は「Infrastructure as Code」を意識して紹介したいと思います。因みに「Configuration as Code」という言葉もあるようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA