こんにちはインフラエンジニアのしょうです!(元プログラマー)
この記事では
- Terraformとは何かについて知りたい
- Terraformを利用するメリットを知りたい
- Terraformを効率良く学べる勉強方法について知りたい
こういった悩みを解決していきます。
僕がいる現場ではガッツリTerraformを利用しているのでTerraformを使うメリットなどを体感しています。
実際に使って分かりましたが、クラウド環境でインフラを構築する場合はTerraformなどのコードでインフラを管理するためのツールは必須です。
ではさっそくTerraformについて解説していきます。
Terraformとは?初心者に分かりやすく解説
TerraformとはAWSやなどのクラウド上のリソースをコードで管理するOSSのIaCツールのことを指します。
Infrastructure as Codeを実現するツールはいくつかありますが、IaCツールを選択するとなった際にTerraformは必ず選択肢に上がるほど使いやすく人気があるIaCツールです。
TerraformはHashiCorp社によって開発されており、コードはHCLと呼ばれる独自の言語で記述する必要があります。
インフラの構成を「.tf ファイル」にコードで記述し、「terraform apply」のコマンドを実行すればインフラ環境が自動で構築されます。
Terraformを利用するメリットを知ればさらにTerraformについて理解することができますよ。
なので次はTerraformを利用するメリットについて解説していきます。
Terraformを使うメリット5選
Terraformを使うメリット5選
- 学習コストが低い
- インフラ環境をコードで管理できる(Infrastructure as Code)
- 公式ドキュメントが分かりやすく、情報量が多い
- AWSだけでなく様々なプロバイダーに対応している
- 様々なクラウドサービスの概要を深く知ることができる
ではTerraformを使うメリットを解説していきます。
①:学習コストが低い
さきほどお伝えしたようにTerraformはHCLの構文でコードを書いていくのですが、HCLの記述がシンプルで未経験の方でも分かりやすいです。
他のIacツールよりもTerraformのほうが分かりやすく学習コストが低いことがメリットとなります。
②:Infrastructure as Codeのメリットが大きい(インフラ環境をコードで管理)
Infrastructure as Codeのメリットは5つあるので解説していきます。
インフラ環境をコードで管理するメリット(Infrastructure as Code)
- 横展開できる
- ミスを減らせる
- 構築を自動化できる
- CI/CDとの相性がいい
- ドキュメント代わりになる
①:横展開できる
コードでインフラ環境を管理することで、全く同じ環境を簡単に作ることができます。
例えばAのプロジェクトで作ったコードを、Bのプロジェクトでも応用することで構築時間を大幅に短縮することができるんですね。
あとは実務においてdev,itg,stg,本番環境など複数の環境を用意するのが一般的ですが、dev環境で作成されたインフラ環境を簡単にitg環境などでも作成することが一瞬でできます。
手作業で同じインフラリソースを作るとなると、膨大な時間がかかりますしミスも増えます。
②:ミスを減らせる
例えば人が手動でクラウドサービスなどのリソースを作成する人為的なミスが起きる可能性がありますよね。
先程もお伝えしたように例えば同じインフラ環境を手動で作成すると、同じ環境を作る際にミスが起こり同じものができない可能性がありますが、コードに落とし込むことによって全く同じ環境を構築することができます。
コードでインフラ環境を管理することでミスが大幅に減ることに繋がるということですね。
③:構築を自動化できる
例えばTerraformでインフラ環境をコード化さえしていれば、「terraform apply」のコマンドを実行するだけでコードの内容に沿った環境が構築されます。
人の手を極力減らすために自動化は必須項目です
④:CI/CDとの相性がいい
先ほど自動化について解説しましたが、Infrastructure as CodeはCI/CDとの相性がいいです。
CI/CDとは継続的にテストして問題がなければデプロイ(リリース)する一連の自動的な流れだと思ってもらえれば大丈夫です。
僕が今いる現場でもCI/CDの環境が構築されており、テストやデプロイが自動化されているのを見ているのでその便利さを身にしみています。
例を上げるとTerraformで新規でインフラのリソースを追加すると、CIのツールで自動でテストが行われて、問題がなければCDのツールでデプロイ(リリース)されるこの開発フローが理想的。
Iacツールでインフラ環境を管理し、CI/CDツールでデプロイ(リリース)する一連の流れを構築している現場は間違いなくモダンな開発環境です。
⑤:ドキュメント代わりになる
例えばサーバやDBの設定などをドキュメントに落とし込まなくても、Terraformなどでコード化していればそのファイル自体がドキュメント代わりになります。
Terraformのファイルに各インフラリソースのパラメーターや設定が記載されていることで、ドキュメン化する時間を減らすことができますよ。(ただ現場の方針次第ですが)
③:公式ドキュメントが分かりやすく、情報量が多い
Terraformの公式ドキュメントは正確な情報はもちろんのこと、内容自体とても分かりやすいです。
そしてTerraformを使う現場が多いのでネットでの情報も増えていますよ。
これは非常に大事なことでツールのドキュメンが分かりづらい、ネットでの情報が少ないとなると開発の難易度が一気に上がります。
ドキュメントが分かりづらい、ネットでの情報が少ないツールを扱うのは本当に大変なので、本気で触りたくないです笑
④:AWSだけでなく様々なプロバイダーに対応している
Terraformは様々なプロバイダーに対応しているIacツールです。
インフラのコード化で活用されるIacツールの例
- Terraform(AWS、Azure、GCPや他のプロバイダーにも活用できる)
- CloudFormation(AWSのみ活用できる)
- Cloud Development Manager(GCPのみ活用できる)
Terraformを学ぶだけでAWS、Azure、GCPの環境などを構築できるようになります。
1つ学んだことが、他のことにも活かせるのは大きなメリットですよね。
例えばCloudFormationを学んだとしてもAWSのリソースの作り方しか学ぶことはできません。
AWS=アマゾンのクラウドサービス(世界で1番利用されている)
Azure=マイクロソフトのクラウドサービス(世界で2番目に利用されている)
GCP=グーグルのクラウドサービス(世界で3番目に利用されている)
僕は実務でTerraformを使っていますが、AWSだけでなく他のリソース(datadogの監視ツールなど)もコードで管理できるのでとても便利なツールだと実感しています。
⑤:様々なクラウドサービスの概要を深く知ることができる
手動で作成していくとなんの設定がされているかわからない状態でも、クラウドサービスのインフラリソースを作ってしまう場合があります。
しかし実際にコードに落とし込んでいく際にパラメータや設定を記述することで、その際になんの設定なのかを調べる必要が出てきます。
そうやって調べてインフラ環境をコードに落とし込んでいくうちにインフラのリソースについてさらに学んでいくことができますよ。
では次にTerraformを学んでいく方法について解説していきます。
Terraformを効率よく学ぶ勉強方法3選
Terraformの勉強方法3選
- Udemy
- 書籍
- 公式ドキュメント
Terraformを学ぶ際に気をつけることがあります。
それはTerraformを学ぶ前にTerraformで構築するプロバイダー(AWSなど)について学ぶ必要があるということです。
例えばTerraformでAWSの環境を構築したいのであれば、AWSについて学んでからTerraformを学ばないと理解ができません。
では上記を意識した上で、これから解説するTerraformを効率よく学ぶ勉強方法について見てもらえればと思います。
①:Udemy
Udemyの動画講座では1000円代で購入でき、Terraform初心者の方にもかなり分かりやすい内容でコスパ最高です。
1番おすすめなTerraform講座は下の講座となります。
» 参考 :AWSとTerraformで実現するInfrastructure as Code
AWSについてまずUdemyで学びたい方は、『UdemyでおすすめのAWSコース5選』の記事をご覧ください。(上記の講座についても解説しています)
②:書籍
Terraformを学ぶ際に書籍を活用するのもおすすめです。
内容が濃く質が高いTerraform本を選べば効率よくTerraformについて学ぶことができますよ。
Terraform初心者の方に1番おすすめできる書籍は下記となります。
Terraformで様々なAWSリソースを構築しながら学んでいくことができるおすすめの1冊です。
Terraform本には他に良質な本があるので詳しく知りたい方は『Terraformおすすめ本3選を現役SEが厳選しました』の記事をご覧ください。
Terraformを学ぶ際はAWSも同時に学べるのでAWSの知識があると学習の理解が深まりますよ。(TerraformでAWSリソースを構築する書籍が多いため)
AWSについてまず書籍で学びたい方は、『現役SEが厳選したAWSおすすめ本5選』の記事が参考になります。
③:公式ドキュメント
書籍やUdemyで学んだ後はTerraformの公式ドキュメントも簡単に理解できるようになっていると思います。
実際に作り方がわからないリソースに関して「terraform 作成したいリソース名」でグーグル検索するとTerraformの公式ドキュメントが上位に来ると思うので、リソースの作り方の参考になるはずです。
ではこれでTerraformの概要やメリット、勉強方法についての解説を終わります。
Twitterにて日々の進捗やブログの更新などツイートしているので、気軽に絡んでください^^
ではまた!