์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ๋ณด์ ํ๋ก๊ทธ๋๋ฐ (AWS, Python, Terraform)
ํด๋ผ์ฐ๋๋ฅผ ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(Python, Terraform)๋ฅผ ๋ฐฐ์ธ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ๋จํ์ง๋ง ๊ท์ฐฎ์ ๋ฐ๋ณต ์ ๋ฌด๋ค์ด๋, ๋ด๊ฐ ์ธ์ ์ด๋ป๊ฒ ๋ฐฐํฌํ๋์ง, ํน์ ์๋ฃจ์ ์ ํตํด ํด๊ฒฐํ์ง ๋ชปํ๋ ์ฐ๋ฆฌ ํ์ฌ๋ง์ ์ ์ฑ ๋ฑ์ ์ง์ ๋ง๋ค๊ณ ์ ์ฉ ํ ์ ์์ต๋๋ค. ํนํ ๊ฐ์ฅ ์๋๊ฐ๋ IaC(Infrastructure as Code) ์ดํ๋ฆฌ์ผ์ด์ ์ธ ํ ๋ผํผ์ ํตํด ๋ณด์ ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ๊ณ , Python์ผ๋ก ์ด๊ฐ๋จ ๋์๋ณด๋ ์ ์๋ ์งํํด๋ด ๋๋ค!
์๊ฐ์ 662๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ

์๋ ํ์ธ์.
์ง์๊ณต์ ์ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
์์ ๊ณต์ง๋๋ฆฐ ๊ฒ์ฒ๋ผ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ฅธ ๊ทธ๋ฆฌ๊ณ ๋ ๊ฒ ๊ทธ๋๋ก์ ๊ฐ์๋ฅผ ๊ฐ์ ํ๊ณ ๋ณ๊ฒฝํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๊ฐํธ์ ์งํํ๊ณ , ์ค๋ ๋ถ๋ก ์ ๊ท ์ดฌ์ํ ๊ฐ์๋ค ์ ๋ก๋๊ฐ ์๋ฃ ๋์ต๋๋ค.
๊ฐ๋จํ๊ฒ ๋ณ๊ฒฝ๋ ๋ถ๋ถ ๋ง์๋๋ฆฌ๋ฉด,
์ถ๊ฐ๋ ๋ถ๋ถ
VPC Cidr ์ค๊ณ ๋ฐ AWS Network Firewall ๊ตฌ์ถ
Steampipe + Streamlit์ ํตํ ๋ณด์ ๋์๋ณด๋ ์ ์
Terraform ๊ด๋ จ Remote State, depends_on ๋ฑ
๊ฐ์ ๋ ๋ถ๋ถ
Python์ ํน์ ๊ธฐ๋ฅ๋ค์ ๋์ด์ด ์๋, boto3๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ฉฐ ์ ์ง์ ์ฝ๋ ๊ฐ์
Terraform ๊ด๋ จ ํ๋ถํ ์์ ๋ฐ ์ค์ต
๋ง์ด ์ฌ์ฉ๋์ง ์๋๋ค๊ณ ํ๋จ๋๊ฑฐ๋ ๊ฐ์์ ์ง์ ์ ์ธ ์ฐ๊ด์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋ถ๋ถ ์ ์ธ
์ ๊ฑฐ๋ ๋ถ๋ถ (6๊ฐ์ ~ 1๋ ์ ๋๋ ๋จ๊ฒจ๋ ๊ณํ)
๊ธฐ์กด ๊ฐ์ ๋ถ๋ถ
์์ ๊ฐ์ต๋๋ค. ๊ธฐ์กด ๊ฐ์๋ฅผ ๋ชจ๋ ์๊ฐํ์ จ๋ ๋ถ๋ค์ด๋ผ๋ฉด Python, Terraform ๋ถ๋ถ์ ์ด๋ฏธ ์ ์๊ณ ๊ณ์ค ๊ฒ ๊ฐ์์, ํ๋ก์ ํธ ๋ถ๋ถ๋ง ์๋กญ๊ฒ ๋ณด์๋๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๋จ์ 2024๋ ๋ง๋ฌด๋ฆฌ ์ ํ์๊ณ , ์ํด ๋ณต ๋ง์ด ๋ฐ๋ 2025๋ ๋์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ฒ๊ฐ๋ฏผ ๋๋ฆผ.
์๋ ํ์ธ์.
์ง์๊ณต์ ์ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
๊ฐ์๋ฅผ ๊ฒ์ํ๊ณ ๋๋ต 1๋ 8๊ฐ์ ์ ๋๊ฐ ์ง๋ฌ์ต๋๋ค.
๋ณ๊ฒฝ๋ ๋ด์ฉ๋ค๋ ์๊ณ , ์ฒ์ ์ดฌ์ํ ๊ฐ์๋ค ๋ณด๋ ์์์ด๋ ์๋ฃ, ๊ฐ์ ๋ด์ฉ ๋ฑ์ด ์ ๋ฐ์ดํธ ๋๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.(์ง๊ธ ๋ณด๋, ๊ฐ์ ๋์ด๋์ ๋นํด ๋๋ฌด ๋ง์ ๊ฒ๋ค์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์์ง ์๋.. ๋ผ๋ ์๊ฐ์ด ๋๋ค์.)
๊ทธ๋์! ๊ฐ์๋ฅผ ๊ฐํธํ๋ ค๊ณ ํฉ๋๋ค!
[์ ์ง๋๋ ๋ถ๋ถ]
ํ์ฌ ์ปค๋ฆฌํ๋ผ์ ์น์
์ธ๋ถ ์งํ ๋ด์ฉ์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
[์ญ์ ๋ ๋ถ๋ถ]
Python ํ๋ก๊ทธ๋๋ฐ
MultiProcesses
ํ์ฌ๋ก์ฌ ๋ถํ์ํ๋ค ์๊ฐ๋จ
GIL ๊ด๋ จ ๋ด์ฉ
์งง์ ์๊ฐ ์์ ๋๋ฌด ๋ง์๊ฑธ ์ค๋ช ํ๋ ค๊ณ ํ๋ ๊ฒ ๊ฐ๊ณ , ๋ถํ์ํด๋ณด์.
Terraform ํ๋ก๊ทธ๋๋ฐ
IAM์ ์ด์ฉํ ํ ๋ผํผ ์ค๋ช
๋ค๋ฅธ ๊ธฐ๋ฅ์ ํตํด ์ค๋ช ๋์ฒดํ ์์
test ๊ด๋ จ ๋ด์ฉ
[์ถ๊ฐ๋ ๋ถ๋ถ]
3-Tier ์ํคํ ์ฒ๋ฅผ ์ํ VPC ์ค๊ณ
AWS Network Firewall์ ํ์ฉํ ๋คํธ์ํฌ ์ํคํ ์ฒ
์๋ฌด๋ฆฌ ๋ฆ์ด๋ ์ฌํด ์์๋ ์์ ํ ๊ฐํธ๋ ์์์ผ๋ก ๋์ฒดํ๋ ค๊ณ ๊ณํํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ถ๊ฐ์ ์ผ๋ก ์ค๋ฌธ๋ ๋ฐ์ผ๋ ค๊ณ ํ๋๋ฐ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ๋ณด์ ํ๋ก๊ทธ๋๋ฐ ๊ฐํธ ๊ด๋ จ ์ค๋ฌธ
์ ๋งํฌ๋ฅผ ํตํด ์๊ฒฌ ์ ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.(๋ก๊ทธ์ธ์ ํ์ํ์ง๋ง, ์ฃผ์๋ฅผ ์์งํ์ง ์์ต๋๋ค.)
๊ฐ์ฌํฉ๋๋ค.
์ฒ๊ฐ๋ฏผ ๋๋ฆผ.
์๋ ํ์ธ์. ์ง์๊ณต์ ์ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
์ด๋ฒ์ "์ฒ์ ์์ํ๋ ๋์ปค์ ์ปจํ ์ด๋"๋ผ๋ ๊ฐ์๋ฅผ ์ถ์ํ๋ ค๊ณ ํฉ๋๋ค. (์คํ์ผ์ ์์ง ๋ฏธ์ )
์ด์ ๋ฐ๋ผ, ์๋ ๋ชฉ๋ก์ ๊ฐ์๋ฅผ ์๊ฐ ์ค์ด์ ๋ถ๋ค๊ป ๊ฐ์ฌ์ ๋ง์์ ๋ด์ ์๊ฐ์ ๋ฑ๋ก ์ด๋ฒคํธ๋ฅผ ์งํํ๋ ค๊ณ ํฉ๋๋ค.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์
[DevOps] ๋น ๋ฅด๊ณ ์์ ํ ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ(CI/CD) ๋ง๋ค๊ธฐ
๊ตฌ๊ธ ํผ์ ํตํด ์ถ์๋ ๊ฐ์ ๋ด์ฉ์ ํ์ธํ์๊ณ , ์์์ ์ฑ์์ ์ ์ฒญ ์ฃผ์๋ฉด ์๊ฐ ๋๋ ๋๋ก ์ถ๊ฐ ์งํ ์์ ์ ๋๋ค.
๋ค๋ง, ์ค์ ๊ฐ์๊ฐ ์ถ์๋๊ธฐ ์ ๊น์ง๋ ์๊ฐ ๋ชฉ๋ก์ ๋์ค์ง ์์ผ๋ ์ด ์ ์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.ํญ์ ์์ง์ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
Terraform 1.8 ๋ฒ์ ์์
provider-defined functions๋ผ๋ ๊ธฐ๋ฅ์ด ์ถ์ ๋์ต๋๋ค.๊ฐ๋จํ ์๊ธฐํ๋ฉด, ํ๋ก๋ฐ์ด๋ ๋ ๋ฒจ์์ ํจ์๋ฅผ ์ง์ํ๋๊ฑด๋ฐ์. ๋ฐ๋ก ์์๋ฅผ ๋ณด๋ฉด,
terraform { required_providers { aws = { source = "hashicorp/aws" } } } provider "aws" {} # result: # { # "partition": "aws", # "service": "iam", # "region": "", # "account_id": "444455556666", # "resource": "role/example", # } output "role" { value = provider::aws::arn_parse("arn:aws:iam::444455556666:role/example") } # result: # { # "partition": "aws", # "service": "elasticloadbalancing", # "region": "us-east-2", # "account_id": "123456789012", # "resource": "loadbalancer/app/my-load-balancer/1234567890123456", # } output "elb" { value = provider::aws::arn_parse("arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456") }(๋ฏธ์ณค๋ค...)๋์จ์ง ์ผ๋ง ์๋ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ์ด ํ์คํ ๋ง์ด ๋ถ์กฑํ์ง๋ง, ์ ์ธํ ์ธ์ด๋ฅผ ๋ค์ํ ๋ด์ฅํจ์๋ฅผ ํตํด ์ ์ฐจ์ ์ผ๋ก ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋๋ฐ(split ํ์ ์ธ๋ฑ์ค ์ ๊ทผํด์ local์ ์ ์ฅํ๊ณ ...), ์กฐ๊ธ ๋ ์ ์ธ์ ์ผ๋ก ์ง์์ด ๋์ด๊ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋งค์ฐ ๋ฐ๋๋ฐ๊ทผํ ๊ธฐ๋ฅ์ด๋ผ์ ์์ฒญ ๊ฐ๋จํฉ๋๋ค. ํน์ ๋ณด์ค ๋ถ๋ค์ ๋งํฌ ์ฐธ๊ณ ํ์ธ์!
๋ณ๋ณ ํจ์๋ค์ด ์๊ฒจ๋ ๊ฑธ ์๊ฐํ๋ ๊ทธ ๋์ ๋ด์ฅํจ์ ์ฐพ์์ ๊ตฌํํ๋ ๊ฒ๋ค์ ๋ํด ๋ณด์๋ฐ์ ๊ธฐ๋ถ์ด๋ค์. ํด๋น ๋ด์ฉ์ ์กฐ๊ธ ๋ ํ์ ํด๋ณด๊ณ ๋ณ๋๋ก ๊ฐ์ ์ ์ํ์ฌ ์ ๋ก๋๋ ์งํ ์์ ์ ๋๋ค!
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
Terraform 1.7 ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ฆ ๋์ต๋๋ค. ๊ด๋ จ ๊ณต์ง๋ ์ฌ๊ธฐ์ ๋ณผ ์ ์์ต๋๋ค.
์๊ฐ๋ณด๋ค (ํฌ๊ฒ ์คํธ๋ ์ค ๋ฐ์๋งํ) ํฐ ๋ณํ๊ฐ ์๊ฒผ๋๋ฐ์.ํ ์คํธ ์ดํ ๋ชจ๋์ด ์ญ์ ๋๋ ์์๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
๊ธฐ์กด
๋ฉ์ธ ์ํ ํ์ผ
๊ฐ ๋ชจ๋๋ณ ์ํ ํ์ผ(์ญ์)
๊ทธ๋ ๊ธฐ์ ๋ชจ๋์ ์ฐธ์กฐํ์ฌ ํ ์คํธ ์์ฑ ์, ๋ฉ์ธ ์ํ ํ์ผ์ ์ ์ฌ๋๋ ๋ฆฌ์์ค๋ค์ ์์กด X
๋ณ๊ฒฝ
run ๋ธ๋ก ์ญ์์ผ๋ก ์ํ ํ์ผ ์ญ์
๊ทธ๋ ๊ธฐ์ ์ผ์ฐ ์ญ์ ๋๋ ๋ฆฌ์์ค๋ค์ ์์กด X
๊ฐ๋จํ ์์

์์ ์๋ ์์ ๊ฐ์ด ์์ฑํ ์ ์์์ง๋ง, 1.7๋ถํฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
Mocks (in beta)
๊ฐ๋จํ ๋ง์๋๋ฆฌ๋ฉด ์ค์ ํ๋ก๋ฐ์ด๋, ๋ฆฌ์์ค, ๋ฐ์ดํฐ, ๋ชจ๋์ ์์ฑ/์ญ์ /์ฐธ์กฐํ์ง ์๊ณ ํน์ ํ ๊ฐ์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ฏธ๋ฆฌ ์ดํด๋ณธ ๊ฒฐ๊ณผ, ๊ฐ๋จํ ๋ฐฐํฌ ๋๋ ์์ฑ๋๋ ํํ๋ฅผ mock ๋ฐ์ดํฐ๋ก ๋ง๋ค์ด์ ๋ฃ์ด์ฃผ๋ฉด ์ด์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์์๋ ์๋์ ๊ฐ์ต๋๋ค.
# main.tftest.hcl mock_provider "aws" { override_data { target = module.credentials.data.aws_s3_object.data_bucket values = { body = "{\"username\":\"username\",\"password\":\"password\"}" } } } run "test" { assert { condition = jsondecode(local_file.credentials_json.content).username == "username" error_message = "incorrect username" } }๋ฐ์ดํฐ ๋ธ๋ก์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๊ณ run ๋ธ๋ก์ ํตํด ๋น ๋ฅด๊ฒ ํ ์คํธ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
1.7 ๋ฆด๋ฆฌ์ฆ์ ๋ํ ํ๊ธฐ
๋ง์ด๋ ๋ฒ์ ํ ๋ฒ ๋ง์ ์ ๋ง ์ค์ํ ๋ก์ง์ ๋ณ๊ฒฝํ ๊ฒ์ด ์ ๋ง ๋ง์์ด ์ํ๊ฒ ๋๊ปด์ง๋๋ค. ํน์๋ ์ ๊ฐ์๋ฅผ ๋ณด์๊ณ ๊ธฐ์กด ์ญ์ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ง๋์ ๋ถ๋ค๊ป ๋์ ์ฌ๊ณผ๋ฅผ ๋ง์์ ๋๋ฆฝ๋๋ค...
์์ ์ด์ + in beta ์ํ์ด๊ธฐ์ Mocks์ ๋ํ ๋ด์ฉ์ ์ถํ์ ์กฐ๊ธ ๋ ์ฑ์ํด์ง๊ณ ๋จ๋จํด์ง๋ฉด ์ถ๊ฐ๋ก ์ฐ์ผ๋ ค๊ณ ํฉ๋๋ค. ๋ค๋ง, ์ด์จ๋ ์ถ์๋ ๋ด์ฉ์ ์ ๋ฌ๋๋ฆฌ๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ๊ธฐ์ ์ด๋ ๊ฒ ์์์์ ๋ฐํํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
Python GIL๊ณผ ๊ด๋ จํด ์กฐ๊ธ ๋ ์์ธํ ์์์ ์ดฌ์ ํ ์ ๋ก๋ ํ์ต๋๋ค.
์ฌ์ค Python์ ํตํด ์์ฒญ๋(?) ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ ค๋๊ฒ ์๋๋ผ๋ฉด ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ ๋ด์ฉ์ด๊ธด ํ์ง๋ง, ์์์ (ํธ์๋ฅผ ์ํด)์ค๋ช ๋๋ ธ๋ ๊ฒ๋ค์ ๋ํด์ ์ ์ ๋ ํ์ํ๊ณ , ์ข ๋ ์์ธํ ์๋ฉด ํ๋ก์ ํธ ์์ ์ด๋ค ๋ชจ๋์ ์ ํํด์ผ ํ ์ง, ์ ์ด๋ ๊ฒ ๋์ํ๋์ง๋ฅผ ์ ์ ์๋ค๊ณ ์๊ฐํด์ ์ถ๊ฐํ๊ฒ ๋์ต๋๋ค.
์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
Terraform 1.6 ์์ ์ถ๊ฐ๋ ํ ์คํธ ๊ธฐ๋ฅ ๊ด๋ จํ์ฌ ๊ฐ์๋ฅผ ์ถ๊ฐ ํ์ต๋๋ค.
์ฃผ์ ์ถ๊ฐ ๋ด์ฉ์ ์๋์ ๊ฐ์ต๋๋ค.
ํ ๋ผํผ ๊ธฐ์กด ํ ์คํธ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฐ๋จํ ์ค๋ช
Custom Conditions ์ค๋ช
.tftest.hcl ํ์ผ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
ํ ์คํธ ๊ด๋ จ ๋ด์ฉ(์ฑ๊ณต/์คํจ ํ ์คํธ ๋ฑ)
ํ ์คํธ ์งํ ์ค ์ํ(state) ๊ด๋ฆฌ, ์คํ/์ญ์ ์์
ํ ์คํธ ์ ๋ต
์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
๊ฐ์์์ ์ฌ์ฉํ Python / Terraform ๋ฒ์ ๊ด๋ จํ์ฌ ๊ณต์งํ๊ธฐ ์ํด ์์์์ ๋ฐํํ๊ฒ ๋์ต๋๋ค.
[Python]
Python์ ํ์ฌ 3.12 ๊น์ง ๊ณต๊ฐ๊ฐ ๋ ์ํฉ์ ๋๋ค. ๋ค๋ง, (์ง๊ทนํ ์ ์ฃผ๊ด์ ์ธ ํ๋จ์ผ๋ก) ์์ง๊น์ง๋ ์๋กญ๊ฒ ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค์ ๋ํด์ ํ์ฌ ๊ฐ์์ ์ถ๊ฐํ ๋ด์ฉ์ ์๋ค๊ณ ์๊ฐ๋์ด ์ ๋ฐ์ดํธ๊ฐ ์๋ ์ํ์ ๋๋ค.
3.10 ~ 3.12 ๋ฒ์ ์ ์ฃผ์ ๋ณ๊ฒฝ์ ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.Python ์๋ ํฅ์(ํ์ง๋ง ์ํํ์ ์๋ค) -> 3.11 / 3.12
๊ทธ๋ผ์๋ ํน์ ์์ ์ ๋๊ปด์ง ์ ๋๋ก ๋นจ๋ผ์ก์ต๋๋ค.
ํ์ ๊ด๋ จ ๋ง์ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฐ ๊ฐํ -> 3.10 ~ 3.12
์๋ฐ(ํ์ )์คํฌ๋ฆฝํธ์ ๊ธธ์ ๊ฐ๋?
์ธํฐํ๋ฆฌํฐ๋ณ GIL ๋์ -> 3.12
๋ค๋ฅธ ์ธ์ด์ ๊ฐ์ด ๋ฉํฐ์ฐ๋ ๋๋ฅผ ํ์ฉํ๋ ๋ ์ด ์ฌ๊น?
ํ์ฌ๋ Python C API ๋ฅผ ํตํด์๋ง ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
์์ C๋ก ์์ฑํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์๋๋ ํจ์จ์ด ๊ฐ์ ๋ ๋ฏ?(๊ฐ์ ํ๋ค๋ฉด)
์ ๋ ์ ๋๋ค. ๋ฌผ๋ก ์ด์ธ์๋ ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค์ด ์ฌ์ฉ ์ค๋จ๋๊ณ , ๊ฐ์ (๋๋ ์ถ๊ฐ)๋๊ธฐ๋ ํ์ง๋ง, ๋น์ฅ ์์์ผ ํ ์ ๋๋ก ์ค์ํ ๋ด์ฉ์ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์ถ๊ฐ๋ก AWS Lambda์์๋ ํ์ฌ 3.11 ๊น์ง ์ง์ํ๊ณ ์์ต๋๋ค.
์ด์ฐ๋๋ ํ์ฌ ๊ณํ์ผ๋ก Python 3.13์ด ๋ฐํ(release)๋๋ฉด ๊ด๋ จ ๊ฐ์๋ฅผ ์ถ๊ฐ ์์ ์ ๋๋ค.
[Terraform]
ํ ๋ผํผ ๋ํ, 1.2 ~ 1.5 ๋ฒ์ ์ ๊ฑฐ์น๋ฉฐ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ ๋์ต๋๋ค.
variable์ optional ์ฌ์ฉ ๊ฐ๋ฅ -> 1.3
Python์์ obj.get("key", "default") ์ ๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅ
null_resource๋ฅผ ๋์ฒดํ๋ ๊ธฐ๋ณธ terraform_data -> 1.4
์ถ๊ฐ์ ์ธ ํ๋ก๋ฐ์ด๋ ๋ค์ด๋ก๋ ์์ด ๋์ฒด ๊ฐ๋ฅ
์ฝ๋๋ฅผ ํตํ import ๊ฐ๋ฅ -> 1.5
check ๋ธ๋ก์ ํตํ ๊ฒ์ฆ ๊ฐํ -> 1.5
๋ค๋ง, ์์ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ๋ฐํ์(์คํ ์)์ ๋์ํ๋ ๊ฒ๋ค์ด๊ธฐ์ ํฌ๊ฒ ์๊ฐํด๋๋ฆด ํ์๊ฐ ์๋ค๊ณ ๋๋ผ๊ณ ์์์ต๋๋ค๋ง,
Terraform 1.6 ๋ฒ์ ์์ ๋๋์ด ํ ์คํธ ๊ด๋ จ ๊ธฐ๋ฅ์ด ์ถ์๋์ต๋๋ค. ๊ธฐ์กด์ ํ ์คํธ๋ 1) ๋ฐํ์๊ณผ ๋ถ๋ฆฌ๋์ง ๋ชปํ๊ฑฐ๋, 2) ์ฌ๋ฌ๊ฐ์ง ์คํ์์ค๋ค์ ํตํด์๋ง ๊ฐ๋ฅํ์ต๋๋ค. ํ์ง๋ง, ํด๋น ๊ธฐ๋ฅ์ ์ถ์๋ก ์ธํด ์ด์ ๋ณ๋์ ์คํ์์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋์ต๋๋ค.
ํด๋น ๊ธฐ๋ฅ์ ๋ค์์ฃผ ์ค์ ๊ฐ์๋ก ์ ๋ฐ์ดํธํ๋ ค๊ณ ํฉ๋๋ค. ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.






