Terraform 이란?
Terraform은 인프라를 코드로 관리하기 위한 IaC 도구다.
서버, 네트워크, DB 같은 리소스를 코드로 정의하고 자동으로 생성할 수 있다.
반복 작업을 줄이고, 인프라 구성을 표준화할 수 있어서 프로젝트가 늘어날수록 효과가 커진다.
Terrafrunt 란?
Terragrunt는 Terraform을 더 효율적으로 운영하기 위한 Wrapper 도구다.
Terraform 모듈 재사용, 환경(dev/stg/prod) 분리, State 관리, Dependency 관리 등을 쉽게 해준다.
Terragrunt를 도입한 이유?
Terraform을 도입할 때 Terraform만 단독으로 도입하지는 않았다.
처음부터 멀티 프로젝트, 멀티 환경 운영을 고려해서 Terragrunt를 같이 도입했다.
SI 환경 특성상 프로젝트가 계속 늘어나고, 환경(dev / stg / prod)도 기본적으로 분리되는 구조였다.
Terraform만 사용할 경우
- 환경별 코드 관리
- State 관리
- 모듈 재사용
Dependency 관리
이 부분이 빠르게 복잡해질 가능성이 높다고 판단했다.
그래서 Terraform을 IaC 엔진으로 사용하고,Terragrunt를 운영 관리 레이어로 같이 설계해서 도입했다.
Terragrunt 학습곡선
Terragrunt는 분명 Terraform 운영을 편하게 만들어주는 도구다.
그러나 Terraform 개념 이해는 기본이고, Terragrunt의 구조 개념까지 같이 이해해야 한다.
특히 아래 개념들이 처음에는 헷갈렸다.
- include 구조
- dependency block
- locals / env.hcl 구조
- remote state 관리 방식
- Repository 구조 설계
Terraform은 “리소스를 만드는 도구”에 가깝고, Terragrunt는 “IaC 운영 구조를 설계하는 도구”에 가깝다고 생각한다.
그래서 Terragrunt는 도입한다고 바로 편해지는 도구는 아니고, 초기 구조를 어떻게 잡느냐에 따라 운영 난이도가 크게 달라졌다.
그래서 처음부터 같이 설계
그래서 Terraform을 도입할 때 Terraform만 먼저 도입하고, 나중에 Terragrunt를 붙이는 방식은 선택하지 않았다.
처음부터 Terraform + Terragrunt를 같이 설계하는 방향으로 잡았다.
인프라 자동화만 하는 것이 목적이었다면 Terraform만 사용해도 충분했지만 실제로는
- 멀티 프로젝트
- 멀티 환경(dev / stg / prod)
- 공용 인프라(shared infra)
까지 같이 운영해야 하는 상황이었다.
결과적으로 Terraform 도입의 목적은 인프라 자동화였고, Terragrunt 도입의 목적은 IaC 운영 자동화에 더 가까웠다. Terraform만으로도 IaC는 충분히 가능하지만, 멀티 프로젝트와 멀티 환경 운영을 고려하면 Terragrunt는 거의 필수에 가까운 도구라고 생각한다.
Terraform과 Terragrunt를 같이 도입하면서 다음으로 고민했던 것은 IaC Repository 구조를 어떻게 설계할 것인가였다. 다음 글에서는 Terraform / Terragrunt Repository 구조를 실제 설계 기준과 함께 정리해보려고 한다.
'infra > terraform' 카테고리의 다른 글
| Dev 환경 IaC 적용 - Network 설계 및 구성 (0) | 2026.02.12 |
|---|---|
| IaC 전체 프로세스 설계 (0) | 2026.02.11 |
| Terraform 도입 이유 (0) | 2026.02.11 |