どうも、コンです。
製造業の工場で Python を書いていた自分が Web エンジニアに転じて、フロントもバックエンドも DB もひととおり触り始めた頃の話です。
ある日上司から「コンさんも、そろそろインフラ関連をおぼえていきましょか」とさらっと言われて、AWS と Terraform(AWSの設定をコードで管理するやつ) を同時に業務で触ることになりました。
本来であれば、AWS を先にある程度さわって、それから Terraform、という順番が理想です。ただ、自分のチームはもともと Terraform で AWS を管理する前提で動いていたので、順番に覚える余裕はなく、どうしても同時に進めるしかありませんでした。
この記事は、当時の自分のように「AWS も Terraform も知らないのに、業務で同時にやることになった」プログラマーに向けて、どこで詰まって、どうやって抜けたかを残すものです。
スタート地点
当時の私の能力から書きますね。
- AWS は業務・個人問わずゼロ。EC2 も S3 も Lambda も、名前を知っている程度
- Terraform は
.tfファイルを開くのが初めて - ネットワーク(サブネット・ポート・IP)は基本情報の勉強でわかってるつもり
- Docker と Linux は Web 開発側でそれなりに触っていた
引き継ぎはありました。前任の方に認証の通し方と Terraform のコマンドを、ドキュメントではなく実際のコードを開いて、ペアプロ形式で教えてもらえたのが大きかったです。
最初に任されたのは CloudWatch でメトリクスを拾ってダッシュボードを作り、アラームを追加する仕事。セットで、Terraform のコマンドの使い方と、ステージングと本番の考え方も覚えてね、という指示でした。
聞いた瞬間の感想は、正直に言って「知らないことが多すぎて大変」でした。
とりあえず似た名前・役割の沼:IAM ロール、IAM ポリシー、セキュリティグループを脱出する
手を動かし始めて最初難しかったのが「名前やなんとなくの機能が似ているのに役割が違うもの」の山でした。
- IAM ロール
- IAM ポリシー
- セキュリティグループ
この三つの違いが、最初は頭の中で溶け合っていました。「誰が何にアクセスできるか」の話はどれで、「どのポートで通信できるか」の話はどれか、画面を開くたびに混乱していたと思います。
Terraform と AWS を同時に覚えると、ここが二重にキツかったです。似た名前を見つけたら、先にそれぞれ一行で役割を書き出してから進む、くらい慎重にやってよかったと、今なら思います。
進め方の大枠:①整理 → ②構成 → ③書かせる
使用する言葉に慣れてきたら、大枠の進め方がだいたい掴めてきました。結局インフラ開発はこんな3ステップの繰り返しでした。
- 何がやりたいか整理する(例:アプリについて、API のエラーが増加したら、チームのメンバーに知らせたい)
- どういうインフラ構成にするか AI と相談しながら決める(例:CloudWatch でアプリが動いている ECS のメトリクスを拾って、しきい値を超えたらアラーム発火)
- ②を AI を使って Terraform で書いてもらう
楽な方法はなくて、地味にこれの繰り返しです。
大事なのは、「どんなインフラを準備したいか」を言葉にできる状態②です。③の Terraform はあくまでコードで書くための道具であって、本丸は②のインフラ構成設計のほう。
この順番のサイクルをひたすら回していきました。
AI にひたすら教育してもらう
進め方の大枠にも登場していますが、一番の先生は正直に言うと生成 AI でした。多分皆さんも使っていますよね。
自分の場合、最初は「エラーを貼って答えをもらう」くらいだったのが、途中から次の三段ループで回すようになって、学習効率がはっきり変わりました。
- やりたいことを書いて、AI にインフラ構成や Terraform コードを教えてもらう
- 教えてくれた内容が、公式ドキュメントのどこに書いてあるかを AI に聞く
- それがベストプラクティスに沿っているかを AI に確認する
ポイントは 2 と 3 だと思ってます。AI にコードを書いてもらうだけだと、知識が自分の中に残りません。なので「それって公式ドキュメントだとどのページ?」と聞き直すと、公式ドキュメントの該当セクションを示してくれて、そこから一次情報を読むきっかけになります。
さらに、「それって AWS Well-Architected Framework のどの柱に沿った書き方?」とか「AWS 公式のベストプラクティスに沿ってる?」と聞くと、同じ動作でも「推奨される書き方」と「動きはするけど非推奨」の区別が出てきます。
Terraform の plan 出力も AI と相性がよかったです。差分が出たら、その出力ごと貼り付けて「この差分を日本語で解説してほしい」と頼むと、「この行は破棄して再作成=replace(-/+)で、ダウンタイムの可能性あり」と、初心者にとっての地雷を先に知らせてくれます。
いまも Cursor 上で、だいたいこのループを回しながら書いています。
分かってきたな〜と思った瞬間
AWS を触って半年くらい経ってから、なんか体系的に勉強したいな〜って思って試験をググってみると SAA(AWS 認定ソリューションアーキテクト アソシエイト)なるものを発見。
内容を把握すると、試験で出てくる構成や概念が「これ、この前自分が業務で触ったやつそのままだ」(進研ゼミ風)と感じたとき、ちゃんと AWS と Terraform 分かってきたんだなって思いました。
まとめ:AWS と Terraform を同時に始める人へ
偉そうなことは言えないのですが、同じように同時スタートすることになったプログラマーに伝えたいのは、次のあたりです。
楽な方法はないので、ひたすら
- 何がやりたいか整理
- どういうインフラ構成にするか AI に相談しながら決める
- ②を AI の Terraform で書いてもらう
の手順でやればいいのではなかろうか、というのが半年やってみての実感です。
自分自身、まだ「AWS と Terraform をわかっています」と胸を張れる段階にはいませんが、本記事が今しんどい最中にいるプログラマーの、ほんの少しでも地図の代わりになれば嬉しいです。
