Terragrunt Module Hierarchies (TGMH)
개요
Terragrunt Module Hierarchies(TGMH)는 인프라 구성 관리 도구인 Terragrunt에서 Terraform 모듈을 계층적(hierarchical)으로 구성함으로써, 환경별 재사용성과 유지보수성을 극대화하는 전략적 패턴입니다. 특히 조직 내 수많은 환경(dev, stage, prod)과 리전, 서비스 구성을 효과적으로 추상화하고 공통 코드를 중복 없이 관리하는 데 매우 유용합니다. 본 글에서는 TGMH의 구조, 구성 방식, 적용 시 고려사항을 설명합니다.
1. 개념 및 정의
TGMH는 Terragrunt를 사용하여 Terraform 모듈의 반복 사용을 줄이고, 공통 구성은 상위 계층에서 상속하며, 환경별 세부 설정은 하위 계층에 위치시키는 구조적 접근 방식입니다.
- 목적: Terraform 모듈의 코드 재사용, 구성 통일, 관리 용이성 확보
- 필요성: 규모 확장에 따른 환경 간 설정 차이 최소화 및 코드 중복 방지
- 적용 대상: 클라우드 인프라 운영 조직, IaC 자동화 환경
2. 특징
구분 | 설명 | 비고 |
DRY 원칙 준수 | 중복 제거를 위한 계층적 재사용 구조 | Don't Repeat Yourself |
계층 기반 디렉토리 구성 | root > region > env > service 등 | 환경별 구분 명확화 |
공통 설정 상속 | 공통 backend, provider 설정 등 위계적 상속 | include 블록 사용 |
TGMH는 코드 품질 향상과 구조 일관성을 동시에 제공합니다.
3. 구성 요소
구성 요소 | 설명 | 예시 |
root.hcl | 최상위 공통 설정 | backend, provider 공통 정의 |
region-level.hcl | 리전별 설정 구성 | us-east-1, ap-northeast-2 등 |
env-level.hcl | 환경(dev, stage, prod) 설정 | dev.tfvars, stage.tfvars 등 포함 |
service-level.hcl | 서비스 단위 설정 | VPC, EKS, RDS 등 개별 모듈 구성 |
Terragrunt는 include, dependencies, locals 등의 키워드로 계층 간 연결을 수행합니다.
4. 기술 요소
기술 요소 | 설명 | 적용 예시 |
include | 상위 설정을 하위에서 재사용 | include { path = find_in_parent_folders() } |
dependency | 다른 모듈의 output 참조 | VPC ID → EKS 입력으로 전달 |
inputs | 하위 모듈 변수 전달 | inputs = { region = "ap-northeast-2" } |
locals | 공통 변수 정의 | region, env 등 조건 분기 활용 |
Terraform의 기능을 Terragrunt가 래핑하여 계층 관리를 단순화합니다.
5. 장점 및 이점
장점 | 설명 | 기대 효과 |
모듈 재사용성 극대화 | 상위 계층 구성 재활용 | 코드 유지보수 비용 감소 |
환경 간 구성 통일성 | prod, stage, dev 간 설정 구조 일관 | 배포 안정성 향상 |
변경 범위 최소화 | 계층 분리로 영향도 제한 | CI/CD 적용 시 안전성 증가 |
TGMH는 팀 단위 협업과 버전 관리 전략에도 유리합니다.
6. 주요 활용 사례 및 고려사항
사례 | 내용 | 고려사항 |
글로벌 클라우드 인프라 구성 | multi-region, multi-env 구조에서 재사용 극대화 | 환경간 차이 최소화 전략 필요 |
보안/네트워크 공통 모듈화 | VPC, IAM, KMS 등 재사용 모듈 구성 | 모듈 간 dependency 충돌 주의 |
CI/CD 파이프라인 통합 | 환경 단위로 Terragrunt plan/apply 자동화 | 폴더 기준 조건 실행 설계 필요 |
디렉토리 구조, 모듈 경로 관리, 린트 규칙 설정이 성공적 도입의 핵심입니다.
7. 결론
Terragrunt Module Hierarchies는 IaC(Infrastructure as Code) 전략에서 유지보수성과 재사용성을 극대화할 수 있는 강력한 설계 패턴입니다. 대규모 인프라를 운영하는 조직일수록 TGMH 도입을 통해 환경 간 차이점을 최소화하고, 코드 중복을 제거하여 일관된 인프라 구성을 유지할 수 있습니다. GitOps, CI/CD와의 연계 시에도 강력한 구조적 기반을 제공합니다.