[패스트캠퍼스 챌린지 4일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기 본문
[패스트캠퍼스 챌린지 4일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기
ITst 2025. 4. 4. 17:33본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
※ 챌린지 URL: https://abit.ly/lisbva

이번 실습에서는 Terraform에서 변수(variable), 로컬 값(local), 그리고 출력 값(output)을 다뤘다. 이전까지는 하드코딩된 값들을 사용했는데, 이번에는 변수를 활용해서 좀 더 유연하게 인프라를 구성할 수 있는 방법을 배웠다. 실무에서 환경별로 다른 설정을 적용해야 할 때 굉장히 유용할 것 같았다.
Terraform에서 변수를 사용하면 코드 수정 없이도 환경을 변경할 수 있었다. 예를 들어, 개발 환경과 운영 환경에서 같은 VPC를 생성하되, 이름만 다르게 지정하는 것이 가능했다. variable.tf 파일을 만들어 환경별 값을 설정하고, main.tf에서 이를 참조하는 방식이었다. 이렇게 하면 같은 코드를 유지하면서도 환경마다 다른 설정을 쉽게 적용할 수 있어서 유지보수가 훨씬 편리해질 것 같았다.
로컬 값(local)은 반복적으로 사용되는 표현식을 줄일 수 있는 개념이었다. 처음에는 단순히 변수와 뭐가 다른지 헷갈렸지만, 특정 값을 짧은 이름(alias)처럼 활용하는 데 유용하다는 점을 깨달았다. 특히 가용 영역(availability zone) 같은 값을 여러 번 쓰는 경우 local.tf에 한 번만 정의하고 필요할 때마다 참조하면 코드가 훨씬 간결해졌다.
출력 값(output)은 Terraform이 생성한 리소스의 특정 값을 확인하는 데 유용했다. 예를 들어, VPC ID 같은 값을 콘솔에서 바로 확인하고 싶을 때 output.tf에 정의하면 terraform apply 후 결과를 쉽게 볼 수 있었다. 특히 모듈을 사용할 때 부모 모듈에서 자식 모듈의 값을 가져올 수 있다는 점이 인상적이었다. 실무에서도 여러 모듈 간의 데이터를 주고받을 때 유용할 것 같았다.
또 하나 흥미로웠던 부분은 문자열 템플릿(String Templates)이었다. Python의 f-string 같은 개념으로, 변수를 문자열 안에 삽입할 수 있었다. 특히 태그 값처럼 동적으로 생성해야 하는 문자열을 다룰 때 굉장히 편리할 것 같았다. 단순한 ${var.name} 같은 표현식부터, 조건문을 활용한 %{ if ... } 구문까지 다양한 방식으로 사용할 수 있었다. 하지만 실제로 많이 쓰이는 건 기본적인 ${} 형식이었고, 복잡한 템플릿은 오히려 가독성을 떨어뜨릴 수도 있다는 생각이 들었다.
실습하면서 Terraform이 단순히 인프라를 코드로 관리하는 도구가 아니라, 환경에 맞게 유연하게 적용할 수 있도록 설계되었다는 걸 다시 한 번 느꼈다. 변수를 활용하면 코드의 재사용성이 높아지고 유지보수가 훨씬 쉬워진다는 게 이해가 됐다. 앞으로도 더 복잡한 구조에서 어떻게 활용할 수 있을지 고민해봐야겠다. 다음 실습에서는 변수를 활용해서 모듈 간 데이터 교환이나 리소스 의존성을 효율적으로 관리하는 방법을 배우게 될 것 같다.


