# 대규모로 Terraform을 운영하는 방법

> Clean Markdown view of GeekNews topic #19703. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19703](https://news.hada.io/topic?id=19703)
- GeekNews Markdown: [https://news.hada.io/topic/19703.md](https://news.hada.io/topic/19703.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-03-12T10:07:42+09:00
- Updated: 2025-03-12T10:07:42+09:00
- Original source: [benchling.engineering](https://benchling.engineering/how-we-run-terraform-at-scale-da7bb75dc394)
- Points: 6
- Comments: 0

## Summary

Terraform Cloud를 도입하여 인프라 릴리스 프로세스를 자동화함으로써 개발자들의 수작업과 오류를 줄이고, 연간 약 8,000시간의 개발자 시간을 절약했습니다. 자체 호스팅 방식으로 120개의 에이전트를 운영하며, 드리프트 제거와 변경 사항 추적, 스펙큘레이티브 플랜 지원 등의 효과를 보고 있습니다. 향후 개선 사항으로는 다단계 배포 방식 전환, 워크스페이스 세분화, 에이전트 자동 스케일링 도입, 그리고 자체 개발 도구의 오픈소스화를 계획하고 있습니다.

## Topic Body

- 165,000개 이상의 클라우드 리소스를 **625개의 Terraform 워크스페이스**와 **38개의 AWS 계정**에서 관리  
  - 170명의 엔지니어중 40명은 인프라 스페셜리스트   
  - **매일 225회**의 인프라 릴리스(`terraform apply`)와 **723회**의 플랜(`terraform plan`)을 수행  
- 이를 위해 **Terraform Cloud를 도입하여 인프라 릴리스 프로세스를 자동화**하고, 개발자들의 수작업과 오류를 줄였음  
  
### **Terraform Cloud 도입 전의 문제점**  
- **높은 AWS 접근 권한 필요** :  인프라 팀이 높은 수준의 AWS 접근 권한을 가져야 했음  
- **시간 소모적 작업** : 각 디렉토리에서 `terraform apply`를 실행하고 검토 및 승인을 반복해야 했으며, 한 번의 변경 사항이 120개 이상의 워크스페이스에 영향을 줄 수도 있었음  
- **인프라 드리프트 발생** : 예상치 못한 변경 사항이 누적되어, 적용 시 추가적인 검토와 조치가 필요  
  
### **Terraform Cloud 도입 및 효과**  
- **드리프트 제거** → 인프라 드리프트를 제거하여 위험과 개발자 부담을 줄였음  
- **개발자 시간 절약** → 연간 **약 8,000시간의 개발자 시간 절약** (개발자 4명의 업무량에 해당)  
- **변경 사항 추적 가능** → 감사 로그를 통해 변경 사항을 추적하고 디버깅 용이  
- **스펙큘레이티브 플랜 지원** → 변경 사항을 자동으로 테스트하고 결과를 GitHub CI에서 직접 확인 가능  
  
### **현재 Terraform Cloud 운영 방식**  
- **자체 호스팅** : Terraform Cloud for Business를 자체적으로 설치하고, AWS 계정 내 ECS 클러스터에서 TFC 에이전트를 운영  
- **에이전트 풀 구성** : 120개의 에이전트를 **개발 환경(40개)과 프로덕션 환경(80개)** 으로 나누어 운영하여 높은 동시성 유지  
  
### **중점적으로 모니터링하는 요소**  
1. **에이전트 고갈 및 동시성 제한** → 에이전트 부족 시 온콜 담당자에게 알림  
2. **플랜 시간** → 개발 환경에서 플랜 시간이 4분을 초과하면 팀에 알림  
3. **인프라 드리프트** → 현재는 측정하지 않음 (드리프트가 거의 발생하지 않음)  
  
### **품질 향상을 위한 최적화**  
- **TFC CLI 개발** : 여러 워크스페이스에서 변경 사항을 CLI로 자동 검토 및 승인할 수 있도록 함  
- **알림 시스템 구축** : 슬랙 알림을 통해 Terraform 적용이 누락되지 않도록 자동화  
- **워크스페이스 자동 관리** : Terraform을 사용해 625개의 워크스페이스를 관리하고, 태그를 적용하여 소유 팀을 구분  
- **Terraform Cloud 사용량 분석** : TFC API를 활용하여 상태 버전 데이터를 수집하고, 리소스 사용량과 성장 추이를 파악  
- **Terraform State 백업** : 상태 파일을 S3 버킷에 자동 백업하여 장애 발생 시 복구 가능하도록 함  
- **워크스페이스 종속성 관리** : 모듈 종속성 트리를 작성하여, 워크스페이스가 감시해야 할 디렉토리를 자동 설정  
- **프로바이더 업그레이드 자동화** : Dependabot을 활용하여 프로바이더를 월간 주기로 업그레이드하고, 자동화를 통해 관리 부담을 줄임  
  
### **향후 개선 사항**  
- **단계적 롤아웃** : `main` 브랜치 기반 릴리스에서 **다단계 배포(개발 → 스테이징 → 프로덕션)** 방식으로 전환  
- **대형 워크스페이스 분할** : 현재 625개의 워크스페이스를 1500개 이상으로 세분화하여, **플랜 및 적용 시간을 단축**하고 **변경 영향 범위를 축소**하려 함  
- **알림 기능 향상** : 슬랙 알림의 **재할당 기능 추가** 및 `tfc review` 명령어 자동 생성 기능 도입  
- **에이전트 자동 스케일링** : EKS 기반의 **자동 스케일링 시스템**을 도입하여 가변적인 워크로드를 효율적으로 처리할 계획  
- **자체 개발 도구 오픈소스화** : 내부적으로 개발한 다양한 도구를 오픈소스로 공개하여, 다른 팀들도 활용할 수 있도록 할 계획

## Comments



_No public comments on this page._
