Post

[Terraform 운영] Day 5: Drift와 정책 - 선언을 계속 진실로 유지하기

[Terraform 운영] Day 5: Drift와 정책 - 선언을 계속 진실로 유지하기

이 글은 AI(Claude)의 도움을 받아 작성하고, 작성자가 검토·편집했습니다.

서론: 오늘의 문제

Terraform 도입은 첫 apply가 아니라 이후 수동 변경과 provider 진화를 통제하는 운영 체계다. 정기 drift 탐지, 정책 검사, 업그레이드와 비상 변경의 되돌림을 설계한다.

1. Drift의 종류

콘솔 수동 변경, 외부 자동화, provider 기본값 변화, 삭제된 자원은 서로 다른 대응이 필요하다. 차이를 무조건 코드로 되돌리기 전에 실제 변경 의도와 소유자를 확인한다.

2. 정기 Plan

변경 PR이 없어도 읽기 전용 plan을 주기적으로 실행해 drift를 찾는다. 알림은 전체 diff를 던지기보다 보안과 가용성 영향, 소유 module을 기준으로 라우팅한다.

3. 정책을 코드로

공개 접근, 암호화, 태그, 허용 리전, 고비용 사양 같은 조직 규칙을 plan 단계에서 검사한다. 예외에는 사유, 승인자, 만료일을 필수로 둔다.

4. Provider 업그레이드

버전 제약과 lock file을 관리하고 변경 로그와 schema 차이를 확인한다. 여러 주요 버전을 한 번에 올리지 말고 대표 환경에서 plan 차이를 먼저 축적한다.

5. 비상 변경의 귀환 경로

장애 중 콘솔 변경이 필요할 수 있지만 종료 조건을 정해야 한다. 변경 직후 코드 반영 또는 원복 PR을 만들고 다음 plan이 깨끗해질 때 사건을 닫는다.

6. 자주 실패하는 방식

drift 알림이 잦고 소유자가 없으면 결국 무시된다. 정책이 모든 예외를 막으면 팀은 Terraform 밖에서 변경하고 선언과 현실의 간격이 더 커진다.

7. 관측과 검증

drift 지속 시간, 정책 위반과 예외 만료, provider 버전 분포, 수동 변경 후 코드 반영 시간, 깨끗한 plan 비율을 운영 지표로 둔다. 기준값은 정상 시간대와 변경 전후를 비교해 정하고, 점검 결과가 실제 행동으로 이어지는지 정기적으로 확인한다.

실행 흐름

1
2
3
4
5
6
7
8
9
1. Drift의 종류
   ↓
2. 정기 Plan
   ↓
3. 정책을 코드로
   ↓
4. Provider 업그레이드
   ↓
5. 비상 변경의 귀환 경로

개별 도구보다 이 순서를 팀의 설계 리뷰와 Runbook에 남기는 것이 중요하다. 상황이 달라져도 판단 근거와 검증 결과가 이어져야 한다.

실전 체크리스트

  • Drift의 종류: 기준과 책임자를 문서화했다.
  • 정기 Plan: 기준과 책임자를 문서화했다.
  • 정책을 코드로: 기준과 책임자를 문서화했다.
  • Provider 업그레이드: 기준과 책임자를 문서화했다.
  • 비상 변경의 귀환 경로: 기준과 책임자를 문서화했다.
  • 실패 패턴을 재현하고 안전한 복구 경로를 확인했다.
  • 핵심 신호를 대시보드와 변경 검증에 연결했다.

참고 자료

시리즈 마무리

이번 연재에서 다룬 원칙을 실제 시스템의 설계·배포·운영 흐름에 연결해 반복 가능한 기준으로 만들자.

This post is licensed under CC BY 4.0 by the author.