피드로 돌아가기
Dev.toDevOps
원문 읽기
Terraform mono-repo에서 500+ 리소스 규모로 확장하면서 의존성 그래프의 fan-out 구조가 프로덕션 장애의 주요 원인으로 부상
Something every senior engineer learns the expensive way:
AI 요약
Context
Terraform의 의존성 그래프는 작은 규모에서는 효과적이지만, 500개 이상의 리소스를 단일 저장소에서 관리할 때 한 번의 변경이 예상치 못한 destroy/create 연쇄를 트리거한다. 암묵적 순서 가정이 리팩토링 단계에서 노출되며, 변경의 영향 범위를 파악하는 것이 거의 불가능해진다.
Technical Solution
- 모듈 인터페이스 재설계: depends_on 의존성을 제거하고 모듈 경계를 명확히 재구성
- 의존성 그래프 시각화: terraform graph 명령으로 SVG 형식 다이어그램 생성해 주요 리팩토링 전 fan-out과 사이클 검토
- OPA/Conftest를 통한 적용 게이트: 모든 apply에 정책 검증을 적용하고 planned destroy 작업에 필수 인적 리뷰 추가
- 모듈 설계 원칙: depends_on이 필요하면 모듈 인터페이스가 잘못된 신호로 판단하고 인터페이스 재설계 우선
Key Takeaway
シニアエンジニア와 principal의 차이는 문제가 발생하기 전에 어떤 보호 장치를 구축할 지 아는 것이다. Terraform DAG 규모 확대 시 명시적 모듈 경계 설계와 강제 검증 게이트가 프로덕션 장애 예방의 핵심이다.
실천 포인트
500+ 리소스를 Terraform mono-repo에서 관리하는 팀은 terraform graph | dot -Tsvg로 의존성 다이어그램을 시각화하고, OPA/Conftest로 destroy 작업에 인적 리뷰 게이트를 추가하면 예상치 못한 리소스 파괴 연쇄를 사전에 차단할 수 있다.