はじめに
初投稿です。
簡単な自己紹介をすると、2024年4月に入社し、現在、AWSで開発しているシステムに関して必要なAWSリソースを構築するインフラ屋さんをやっています。
ということで、インフラ屋さんになってから学んだことを備忘録として記事に書けていけたらなと思っています!!
今回の記事について
内容
Terraform備忘録シリーズの第一弾として
前提知識である「Infrastructure as Code (IaC) 」を解説出来たらなと思います!
対象
- クラウドサービス (特にAWS) を使ってアプリケーションを構築しようと思っている人
- IaCって聞いたことあるけど、何かよく分かっていない人
IaCとは?
「開発するアプリケーションの部品 (リソース) の作成や変更をコードを使って管理・自動化しよう!」 というものです。
これのモチベーションを分かってもらうためにも
- リソースにはどんなものがあるのか?
- リソースは一般的にはどうやって作られるのか?
- アプリを開発する上で、リソースについてはどんなニーズが生まれるのか?
- 一般的な作り方だとニーズに応えられるのか?
について説明したいと思います。
リソースの例
クラウドサービスを使って開発するアプリケーションのリソースは、例えばAWSで言うと
があります。
リソースの一般的な作り方
これらのリソースは、下の画像のようにAWSのマネージメントコンソールから手動で作成することが出来ます。直感的に操作ができて、複雑なリソースでも簡単に作ることが出来ちゃいます!
アプリを開発する上で出てくるニーズ
文字に起こすと、作成したリソースを1つに組み合わせていくことで作ることが出来ます。
車に例えると、ボディ・エンジン・タイヤなどの部品 (リソース) を作成して、車 (アプリ) を形成すると言う感じで想像してください。
こう考えると、製品に使う部品が1つで済むものはそう多くないですよね?
つまり、同じリソースを簡単に量産したいというニーズが生まれてきます。
また、別の製品を作るとなった際に、あの時作った部品をこっちでも活かせるじゃん!というのがありますよね?
つまり、同じリソースをいつでも使いまわせるようにしておきたいというニーズも生まれてきます。
一般的な作り方はニーズを満たす?
手動で同じリソースを大量に作成することを考えると、必要なリソースの数だけ作業を繰り返さないといけないので、簡単に作成したり、いつでも使いまわせるようにしておくことが全く出来ません。
また、マネージメントコンソールの操作性と柔軟性により、設定が少し異なってもエラーなく作れてしまうリスクがあったり、さらには、アプリ開発はリリースするだけでは終わらず、アップデートが必須になってきます。当然リソース自体のアップデートもあります。リソースを手動で作成した場合、これら1つ1つにその変更を反映する必要があるなど、
ミスですか?どうぞ起きてください!
という大リスク環境が完成してしまいます。。。そんなの嫌ですよね?これらを解決してくれるのが、IaCなのです!!
IaCがアプリ開発におけるニーズを解決!
コードの内容は、
EC2の設定項目:
1: Amazon Machine Image (AMI) はxxxを使用する
2: セキュリティグループはxxxを使用する
3: サブネットxxxに立ててください
...
というようにリソースを作成するための設定項目を記述し、設計書のようなイメージを持ってもらえればと思います。
そして、そのファイルをコマンドラインインタフェース (CLI) で実行すると、設定項目をもとに自動でリソースを構築してくれます。
以上により、
- 同じリソースを簡単に量産したい! ▶︎ ファイルの実行だけで完結する
- 同じリソースをいつでも使いまわせるようにしておきたい ▶︎ ファイルを使いまわす!
というニーズを満たすことができるだけでなく
- 設定ミスが起きそう... ▶︎ 決めた設計通りに記述して、実行するだけなので起きない!
- リソースの変更... ▶︎ コードの一部を変更してあとはCLIで実行するだけ!
と、手動作成で発生しうるリスクを全て解決してくれます!
まとめ
IaCの ちからって すげー!
次回は、IaCのツールの1つであるTerraformについて解説出来たらと思います!