피드로 돌아가기
Dev.toDevOps
원문 읽기
Terraform 사용자가 반복되는 인프라 코드를 모듈화하여 코드 중복 제거 및 환경별 재사용성 확보
Building Reusable Infrastructure with Terraform Modules
AI 요약
Context
일주일간 인프라를 구축하면서 보안 그룹, Launch Template, Auto Scaling Group, Application Load Balancer 등 동일한 패턴이 반복되었다. 매번 같은 로직을 복사하여 작성하는 방식은 코드 중복을 초래했다.
Technical Solution
- 반복되는 인프라 패턴을 Terraform 모듈로 패키징: 웹 서버 클러스터에 필요한 ALB, Target Group, Listener, Security Group, Launch Template, Auto Scaling Group을 단일 모듈로 구성
- 환경별 차이점을 입력 변수로 추상화: cluster_name, environment, instance_type, min_size, max_size, desired_capacity, server_port를 모듈 입력으로 정의
- 모듈 출력값 노출을 통한 상위 호출 계층 지원: 호출자가 필요로 하는 출력값을 모듈에서 제공
- 동일 모듈을 다양한 입력값으로 호출: 개발 환경은 작은 리소스 설정, 프로덕션은 큰 리소스 설정으로 재사용
- 모듈 구조 표준화: main.tf, variables.tf, outputs.tf, README.md 파일로 구성된 일관된 디렉토리 레이아웃
Key Takeaway
Terraform 모듈은 인프라 로직을 패키징하여 여러 환경과 프로젝트에서 동일한 코드를 재사용할 수 있게 한다. 모듈 작성 시 하나의 책임에 집중하고 필요한 설정값만 입력으로 노출하며 명확한 문서화를 통해 유지보수성을 확보해야 한다.
실천 포인트
Infrastructure as Code를 관리하는 팀에서 Terraform 모듈을 도입할 때, 환경 간에 공통되는 인프라 패턴(로드 밸런서 + 오토스케일링 그룹 조합 등)을 먼저 식별한 후 입력 변수와 출력값을 명확히 정의하면, 근본적으로 동일한 구성을 여러 환경에 적용하면서 환경별 파라미터만 달리할 수 있다.