피드로 돌아가기
I Inherited 47,000 Lines of Terraform Spaghetti — Here's How I Untangled It Without Burning Production
Dev.toDev.to
Infrastructure

Terraform Monolith 분리로 Plan 시간 14분에서 45초로 단축

I Inherited 47,000 Lines of Terraform Spaghetti — Here's How I Untangled It Without Burning Production

S, Sanjay2026년 5월 22일12intermediate

Context

47,000라인의 Terraform 코드가 단일 State 파일로 관리되는 Monolith 구조로 운영됨. 모든 리소스가 얽혀 있어 사소한 수정에도 전체 인프라가 평가 대상이 되는 과도한 Blast Radius와 14분에 달하는 Plan 실행 시간이 운영 병목으로 작용함.

Technical Solution

  • terraform graph를 통한 리소스 의존성 시각화 및 도메인 경계 식별
  • terraform state mv 명령어를 활용한 무중단 State 분리 및 마이그레이션 수행
  • 변경 빈도와 장애 영향도(Blast Radius)를 기준으로 Foundation, Security, Data, Compute, Edge 5개 계층으로 State 분할
  • terraform_remote_state Data Source를 도입하여 분리된 계층 간의 안전한 출력값 참조 구조 설계
  • 중복된 환경 설정을 제거하기 위해 Strangler Fig 패턴 기반의 점진적 Module화 적용
  • CI 파이프라인 내 -auto-approve 제거 및 Plan Artifact 기반의 수동 승인 게이트 구축

Impact

  • terraform plan 실행 시간: 14분 $\rightarrow$ 45초로 단축
  • 인프라 변경 시의 Blast Radius 최소화로 인한 운영 안정성 확보
  • 팀 개발 속도(Velocity) 3배 향상

1. 단일 State 파일의 리소스 규모를 검토하고 변경 빈도별로 레이어 분리 고려

2. `terraform state mv` 수행 시 개별 PR 단위로 기록하여 롤백 경로 확보

3. 환경별 코드 복제 대신 Module과 변수 기반의 구성 관리 체계 도입

4. 정기적인 Plan 실행 및 알림 설정을 통한 인프라 Drift 탐지 체계 구축

원문 읽기