こんにちは。プロダクト本部プラットフォーム部SREチームの id:ut61z です。 SREチームが主体となって書籍『詳解 Terraform 第3版』(以後、詳解Terraform)の読書会を社内で実施しました。
どう進めたか、実施してみた感想や反響、学んだことをご紹介しようと思います。
なお、過去にもSREチームが開催した読書会を実施しているので、よければこちらもご覧ください。
詳解 Terraform 第3版について
詳解TerraformはTerraformについて体系的に学べる一冊で、サンプルコードとともにハンズオン形式でAWSのリソースを構築しながら学ぶことができます。
Terraformの実装方法、操作方法、注意点、特徴など全体像を把握するにはとてもよい書籍だと思います。
全体の構成については以下のようになっています。
- 1章: 従来のプロビジョニングツールとの違いと、インフラストラクチャを取り巻く環境の遷移とともにツールがどのように移り変わってきたかの紹介から始まり、IaCの利点やなぜTerraformを使うかについて解説がなされます
- 2章: AWSを用いたハンズオン形式でのTerraformの操作方法・定義の仕方についての紹介パートが続きます。EC2 1台で稼働する素朴なWebサーバ構築から始まり、徐々に周辺リソースを追加していくことで可用性の高いスケーラブルなWebシステムを構築することを目指します。Application Load Balancer、Listener、Listener Rule、Target Group、AutoScaling Group、EC2を用いた基本的な構成のWebシステムを理解することができます
- 3~7章: TerraformのState、Module、ループや条件分岐など動的なTerraformリソースの記述の仕方など、Terraformに搭載されている様々な機能について紹介され、やや応用的な使い方・記述の仕方について知ることができます
- 8~9章: 本番環境の構築にあたっての注意点、テストについて紹介されています
- 10章: チームでTerraformを運用するにあたっての勘所やデプロイワークフローの構築について触れ、組織へTerraformを導入・定着させていくための戦略についても紹介されています
なぜ詳解Terraform読書会を実施したか
ClassiではほとんどすべてのインフラリソースをTerraformで管理していて、SREチームだけでなくプロダクトチームのエンジニアもインフラリソースの構築・運用を行っています。
しかし、エンジニア全員がTerraformを用いたインフラリソース構築経験があるわけではなく、スキルやレベルにばらつきがあるのも事実です。
それを踏まえ、主に下記2点を期待して読書会を実施しました。
- インフラストラクチャ、Terraformに対してとっつきにくさを感じているエンジニアの心理的ハードルを少しでも下げ、興味を持ってもらうこと
- エンジニア組織全体のTerraformスキルのボトムアップを図り、より開発効率を上げること
どのように進めたか
週1回のペースで1章ずつ読み進めました。 担当者は1章分の要約と感想を前半30分で発表し、後半30分でその章について参加者全員でディスカッションを行うという形式で読書会を実施しました。
今回の読書会において工夫した点は、SREチームのメンバーが各章のまとめにコメントを加えて、実際のClassiでの運用はどうしているかをコラムとして追加した点が挙げられます。
座学的な読書会にとどめず、実践的にClassiでTerraformを書くならどうすればよいかをイメージしやすいようにし、普段の業務との接続を試みました。
実際にやってみて
あくまで読書会として書籍を読み進めることをスコープとしていたので、主催者としてはAWSにリソースを構築することまでは参加者に強要はしなかったのですが、結果的には参加者の多くが実際に手を動かしてリソースの構築を行い学習を進めていました。
Terraformを触っている参加者であっても、ゼロからインフラリソースを構築する体験は普段の業務ではなかなか味わえないので、ハンズオンを進めながらシンプルなシステム構築を行い、改めてAWSやClassiのシステム構成への理解が深まったという感想もありました。
特に理解が深まった点として挙げられていたのは、Terraformのロックの仕組みや、Stateファイルの位置づけや特徴などについてでした。 「Stateファイルには秘匿すべき情報が平文で書き込まれてしまうので注意すべき」など、これだけは抑えておこうという知識が参加者にインプットされたのも、実務に直結する知識として今後活きてきそうだという感触を得ました。
他にも、Terraformを組織にどのように導入するかについて言及されている章では、新しい技術を組織に提案・導入・定着させていくための戦略が記されていて、Terraformに限らず応用が効きそうだという感想もあり、思わぬ収穫があったメンバーもいたようでした。
一方で、どんな読書会でも起きがちな問題ではありますが、回を重ねるごとに中だるみをして参加者のモチベーションが低下し、参加を見送る機会が増えたという意見もありました。 中間ふりかえりの回を挟んだり、途中で改めて目次を眺めてこの章は実務でどう役立つかなど、現在地の確認をしてモチベーションを維持するなどのアイディアが出ました。
中だるみを解消するためのアクションとして、今後の読書会に取り入れていきたいです。
SREチームによるコラムも好評で、Classiではこうしているという現状を共有することで、ハンズオン内容が普段触っているリソースやTerraformのソースコードと直結し、読書会の満足度を高めることに貢献できました。
以下に読書会後のアンケート結果を添付します。
参加者にとって有益だったことがうかがえますね。
少し余談になりますが、Classiでは読書会が常に開催されているので、各読書会の知見が集まり、読書会が洗練されていくのを感じました。
今回の読書会も読了後全体を通してのふりかえりを行うことで、どんな学びを得られたかを言語化し、各々の実務にどう接続するかを考える機会を設けることで、もう一歩踏み込んだ学びの機会になったことを実感しています。
フルサイクルエンジニアを目指して
Classiでは、開発から運用まで一環して行えるフルサイクルエンジニア*1であろう、ということをエンジニアの共通認識として持っています。
今回の読書会はその一助になったのではないでしょうか。 改めて、開発から運用までなんでもやりたいという方にとってはとてもよい環境だと感じました。
ピンと来た方がいらっしゃれば、ぜひカジュアル面談等気軽に問い合わせてみていただけるとうれしいです。
SREチームもメンバー募集中です。こちらもご興味ある方はぜひお問い合わせください。
最後まで読んでいただきありがとうございました。