実践Terraform AWSにおけるシステム設計とベストプラクティスのコードを写経してみたらよかったので感想をば。
実践Terraformを読んだ動機
本書は、Terraformを使ってAWS上にシステムを構築するノウハウを、200以上のサンプルコードとともに紹介する、Terraform初級者から中級者向け解説書です。
引用元:実践Terraform AWSにおけるシステム設計とベストプラクティス, https://nextpublishing.jp/book/10983.html, (検索年月日:2020年1月20日)
この本は上記紹介文にあるようにAWSとTerraformについて学べる本です。
AWSは自社で利用されているので理解を深めたかったというのと、Terraformは前から興味があったのでやってみました。
以下のものを構築するので、個人でサービスを作るときにTerraformでコード化しておけば、さっとインフラを作れそうだというのもやる動機となりました。
- MultiAZ環境
- LoadBalancer
- アプリやバッチをコンテナで実行できるECS
- RDSやインメモリデータストア
- GitHubと連携しているCI/CD環境
感想
自分はTerraformもAWSもちょっと触ったことがある程度の経験しかありませんでした。
- Terraform:Get Startedをちょっとやった。
- AWS:業務で使っているけど、構築はインフラチームの人がやってもらっているのもあってしっかり理解しているかは怪しい。
という感じです。まあほとんど初心者ですね。
写経してみた結果とても学べることが多い良書でした。
- TerraformもAWSも丁寧に説明があり、ひとつひとつの章、節は短くまとめてくれている。
- 説明に対して細かくサンプルコードがあり、どれもちゃんと実行できる。
- 説明を読んではコードを書いて実行できるため、読んだ内容理解できているか細かい頻度で確認しながら進められる。
- AWSを使ったwebサービスの基本的なアーキテクチャを設計から学べられる。
という点がよかったです。
わがままをいうと
良い本だったとはっきり言えるのですが、わがままを言うと以下の点が改善されたらさらによいなと思いました。
-
サンプルコードでリソース名やデータ名など名前をつけるところがほぼexampleとなっているため、コードのどことどこが一致していなければいけないのかということは、本の文章を注意深く読まないとすぐにわからなかった。
-
よく作られそうなアーキテクチャで環境構築をできるようになっているのはとてもよい。LoadBalancerを立てて、ECSでコンテナを実行して、RDSやインメモリデータストアをたてる。ただ、LoadBalancerでリクエストを受けて、アプリが実行されてRDSを更新とかそういう連動するところまでは実施しない。実施されていたらより実用的だなと思いました。(GitHubと連携したCI・CD環境も構築するけど、実行するところの詳細までは書いていなかった。)
読んでどうなった?
TerraformについてはAWSプロバイダーで書かれたコードならある程度読めるようにはなったかなと。あとはひたすら書いていけば身につきそうです。
ただ、わがまま2の点で書いたとおり写経してできたコードは欲しかったインフラを構築できるではありませんでした。しかし、そういうものを作ろうとしたらあとどうすればよいのか?とイメージはできるぐらいになりました。
AWSについてはVPCやEC2、Route53、S3、ELB、ECSなど各サービスの理解は深まったと思います。たとえばVPCであれば、サブネットやインターネットゲートウェイなど、どういう構成要素があって、どう関連しているかわかったかなと。
ただ、改めてAWSコンソールでVPCを作ると戸惑うところはあるので、AWSコンソールで作るのは別で練習したほうがよいなと思いました。
TerraformもAWSもある程度知識を得られて、あとは手を動かしていけば使いこなせるようになれそうでした。一冊で2つの技術についてこの段階までいけるのはとても価値ある本でした。
これからどんどんどちらも使っていこうと思います!!
著者の野村 友規さん @tmknom に感謝!!
2020/01/25:追記
学びになったことはこちらに、ハマったことはこちらに書いてみました。
こちらも読んでいただいて参考になれば幸いです。