Terraformで実現できる自動化、共通化、協働化
クラウド環境で強固な運用を苦労せずして実現するにはどうしたらいいか。HashiCorpが解決策につながるキーワードとして掲げるのは「自動化」、「共通化」、「協働化(コラボレーション)」の3つだ。
まず「自動化」とは何か説明しよう。ここで実際に使うプロダクトがTerraformだ。これはインフラ構築と自動化のためのツールで、HashiCorpが中心となりOSSで開発を進めている。大きな特徴はインフラ構成をコードで記述することで、インフラの構築を自動化できる点だ。IaC(Infrastructure as Code)を実現するためのプロダクトとも言える。また、チーム・組織向けの商用版サービスとして「Terraform Enterprise」や「Terraform Cloud」もある。
現実のクラウド環境を考えてみよう。たとえば、AWSのコンテナからアプリケーションを稼働させるとする。そうなるとコンテナだけなく、ネットワークのためにVPC、サブネット、ルーティングテーブルを設定し、またデータのためにS3バケットを用意し、いろいろな権限をIAM(Identity and Access Management)で設定するなど、準備しなくてはいけないことが山ほどある。これらをミスせず設定する必要があるのだが「手作業ではあっという間に人間の限界を超えてしまう」と草間氏は指摘する。
そこでIaCだ。リソースのあるべき形をコードで記述(定義)し、Terraformに「食わせる(読み込む)」。これをTerraformでは「Apply」と呼ぶ。実際に「Apply」コマンドを実行すると、Terraformが起動してコードに従って環境を自動的に構築する(内部的にはAPIで実行する)。
人間が作業する場合だと、設計者が構成を設計書や管理台帳に書き、オペレーターが読み解いて環境を構築するなど、少なくとも2人の人間が関与することになる。人間なので記述や操作でミスは起こりうる。ミスを減らすためにチェックする人員を増やすとなると、ただでさえ足りないのにさらに人手が必要になってしまう。
Terraformであればコードを自動実行していくため、人間のミスが入る余地はない。こうして環境構築で自動化を実現し、ワークフローを改善していくことが可能だ。