はじめに
この記事は terraform Advent Calendar 2020 の24日目の記事です。
メリークリスマス!🎄 今年も残り1週間と早いですね。
書こうと思ったきっかけ
2020年に私の開発チームでAWSにログ基盤を構築しました。
AWSに興味があって入ったプロジェクトですが、「Terraformを導入しよう」という話があり「ぜひやらせてくださいっ!」と手を挙げましたが当時は「Terraformって何それ?おいしいの?」状態たったんですよね。笑
調べるうちにTerraformが クラウド構築・運用の悩みを解消する 技術であり、ぜひとも学習・導入すべきものだと感じたので、みなさんにもお伝えしたいという気持ちで書いています。
記事の対象者
- AWSやGCP、Azureなどクラウドインフラを利用するプロジェクトのPMの方向け
- Terraformとは何か理解したい人
Terraformの始め方は他の記事で解説があるのでそちらにお任せしたいと思います。記事が長くなるので。
記事のゴール
- なぜTerraformをプロジェクトに導入すべきかが理解できる
- なぜエンジニアに業務時間を使ってでもTerraformを勉強してもらうべきかが理解できる
- Terraformの基本概念の理解
一言で教えて!Terraformって何?
「AWSやGCPのクラウドのリソースを手で構築・削除するの、面倒だなぁ...」 と思ったことはありませんか?
手運用でクラウドサービスを構築・運用すると
- 手順書作成の手間
- しかも意味が伝わらない
- 手順漏れ
- うっかりによる作業ミス
- 構築した人が異動・退職
- 引き継ぎがうまくできてなかった
ということが発生しがちなのは、みなさんも経験があるのではないでしょうか?
それを解決すべく導入したいのがHashicorpが開発する Terraform です!
コードベースでクラウドインフラを構築・管理できる(IaC = Infrastructure as Code という)ので、コマンドさえたたけるようになれば「誰でも同じインフラを構築できる」ようになります。
Ansibleのクラウド版だと思っていただけると理解しやすいですね。
Terraformは標準で200を超えるインフラサービスに対して利用が可能です。APIがあればプラグイン開発も可能です。
構築の度に手作業を繰り返す必要がありません!もう手順書とはおさらばしましょう!
過去にAWS構築でやらかした失敗
僕の前職の話を少しさせてください。
現職への転職前に務めていたSIerで開発支援ツールをAWS上に構築しました。
その時はTerraformの存在を全く知らなかったので手で構築し、その手順をドキュメントに残しました。
今思うと、スクショの不足や言葉足らずに心当たりがあり、今回のログ基盤の構築をしながら「あの時Terraformを知っていればなぁ」と反省しました。
- 手順書は万全ではありません
- 書いた人が説明を漏らしているかもしれません
- 作業者に意図が伝わっていないかもしれません
- 作業者に心理的な負担をかえてミスを誘発するかもしれません
コマンド一つでミスをしない、漏れがない状況を作り出すのがPMにとってもエンジニアにとっても幸せな結果になると思っています。
まとめ
Terraformとは?
- クラウドのリソースを構築・管理
- 構築・変更・管理がコードベースで可能
- Infrastructure as Code
- tfstateで状態をコードで管理
- Ansibleのクラウド版のイメージ
- Hashicorpが開発
- APIがあればプラグイン開発も可能
なぜ学習コストをかけてでもTerraformを導入してほしいか
- クラウドのリソースを手運用するにはエンジニアの負担が大きい
- 手順書の問題点
- 誤読につながる
- 読み手に意図が伝わらない / 時間がかかる
- スクショ不足
- 異動・退職による引き継ぎ不足
- 操作ミス
- 作業漏れ
- 手順書の問題点
- コードによる状態管理ができる
- 少ないコマンドで誰でも構築・変更を再現できる
さいごに
2020年はコロナ渦で色んなことができなくなり、振り返れば仕事とヘルニアの手術の思い出しかありませんでした。笑
しかし、AWSでログ基盤を構築しTerraformの勉強ができたことは、僕にとって実りのある経験になったと感じています。
業務としてTerraformの学習時間を許容してくださった僕のPMには感謝しかありません。本当にありがとうございました。
2021年も技術的なチャレンジをたくさんしていきたいです。
それでは、メリークリスマス&よいお年を!🎍