🌍
バックエンドもフロントエンドもインフラも Terraform でつくってみた
この記事は terraform Advent Calendar 2024 の 9 日目の記事です。
Terraform だけでアプリケーションのバックエンド・フロントエンド・インフラをつくったので紹介します。
つくったもの
画像を表示するだけのサンプルアプリケーションです。
リポジトリはこちら。
使用言語
利用技術
バックエンド
バックエンドの実装には次世代のモダン AltJS である JS.tf を使用しています。
JS.tf を使うと HCL で JavaScript プログラムを記述することができます。
example.tf
data "js_function_call" "hello_world" {
caller = "console"
function = "log"
args = ["hello world"]
}
data "js_program" "main" {
statements = [data.js_function_call.hello_world.statement]
}
# index.js としてファイル出力
resource "local_file" "main" {
filename = "index.js"
content = data.js_program.main.content
}
サンプルアプリケーションにおけるバックエンドのソースコードはこちらです。
JS.tf についての詳細はこちらの記事をご参照ください。
フロントエンド
フロントエンドの実装には次世代のモダン HTML ビルダーである HTML.tf を使用しています。
HTML.tf を使うと HCL で HTML を記述することができます。
example.tf
data "html_html" "main" {
children = [data.html_body.main.html]
}
data "html_body" "main" {
children = [
data.html_h1.hello.html,
data.html_a.example.html,
]
}
data "html_h1" "hello" {
children = ["Hello, HTML.tf!"]
}
data "html_a" "example" {
children = ["Click me!"]
href = "https://example.com"
}
# index.html としてファイル出力
resource "local_file" "main" {
filename = "index.html"
content = data.html_html.main.html
}
サンプルアプリケーションにおけるフロントエンドのソースコードはこちらです。
HTML.tf についての詳細はこちらの記事をご参照ください。
インフラ
普通に AWS Provider を使って構築してます。
サンプルアプリケーションにおけるインフラのソースコードはこちらです。
まとめ
❌ アプリケーションと同じ言語でインフラを構築する
⭕ インフラと同じ言語でアプリケーションを実装する
Terraform だけでアプリケーションがつくれる時代がきましたね。
二度とやりません ( めちゃくちゃ大変だった )。
Discussion