Terraform
公式サイトTerraformとは
Terraformは、クラウド上のサーバー、ネットワーク、データベース、権限といったインフラの構成を、設定ファイルとして記述し、その内容どおりに自動で構築・変更するためのツールです。この手法は「インフラのコード化(IaC)」と呼ばれます。管理画面から手作業で設定する方法と比べ、構成が文書として残る、同じ構成を何度でも正確に再現できる、変更前に何が変わるかを確認できる、という利点があります。AWSをはじめ複数のクラウドや外部サービスに対応しており、異なるサービスをまたぐ構成を一つの仕組みで管理できます。
弊社が採用する理由
弊社では、AWSを中心としたクラウドのインフラ構成をTerraformでコードとして管理しています。採用の最大の理由は、構成が設定ファイルとして残るため、ステージング環境と本番環境を同じ形で構築でき、誰がいつ何を変えたかが履歴として追えることです。手作業で構築した環境は、時間が経つと構成の全体像を把握できる人がいなくなりがちですが、コードで管理していれば引き継ぎの際にファイルを読めば構成がわかります。変更を適用する前に差分を確認できるため、意図しない変更による障害を防げます。AWS以外のサービス、たとえばDNSや監視の設定も同じ仕組みで管理できるため、複数のサービスにまたがる構成を一貫して扱えます。TypeScriptで記述したい案件ではAWS CDKを使うこともあり、チームの慣れと構成の性質に応じて使い分けています。
向いている案件
- AWSなどのクラウド上に業務システムの本番環境を構築する案件
- ステージングと本番など複数の環境を同じ構成で揃えたい場合
- クラウドとDNS、監視など複数のサービスをまたいで構成を管理したい場合
- 構成の変更履歴を残し、引き継ぎに備えたいシステム
保守・移行の観点
Terraformは、実際のクラウドの状態を記録した「状態ファイル」を基準に動作するため、このファイルの保管場所と同時編集の防止が運用の要です。管理画面から手作業で変更を加えると、コードと実際の状態がずれるため、変更は必ずコードを通して行う運用を徹底します。Terraform本体と各サービス向けの接続部品の更新では記述方法が変わることがあり、更新後は差分の確認で意図しない変更が出ないことを検証します。定期的に差分確認を実行し、ずれがないことを確かめる運用をおすすめしています。
組み合わせて使う技術
よくあるご質問
手作業で構築した既存のAWS環境をTerraformで管理できますか?
可能です。既存の構成を読み込んでコードに取り込む作業を段階的に行います。まず現状の構成を調査し、影響の少ない部分から管理下に移す進め方をご提案します。
TerraformとAWS CDKはどちらを使いますか?
どちらもインフラをコードで管理する仕組みです。複数のサービスをまたぐ構成や、汎用性を重視する場合はTerraform、アプリケーションと同じTypeScriptで書きたい場合はAWS CDKを選ぶことが多いです。
関連するサービス
関連する開発ガイド
- レンタルサーバー・VPS・クラウドの違いと選び方レンタルサーバー・VPS・クラウドの3種を、管理範囲・自由度・運用負荷の観点で比較し、中小企業のWebサイトや業務システムにどれが合うかを判断する考え方と、保守との関係を解説します。
- 納品後の保守・運用で何が必要かシステムは納品後も動かし続ける必要があります。監視、バックアップと復元テスト、OS・ミドルウェア・CMSのアップデート、ステージングでの検証、保守契約の範囲という基本を整理します。
- 他社が作ったシステムの引き継ぎ・保守を依頼するときのチェックリスト前の開発会社が作ったシステムの保守を別の会社に引き継ぐときの手順を、資料・アカウント・ソースコード・環境の棚卸しから調査、リスク整理、保守範囲の合意、移行まで、確認項目の表とともに解説します。
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開