TL;DR
- AWS에서 여러 호스팅 영역의 DNS 레코드를 조회하는 Terraform/OpenTofu 계획은 Route 53 API의 초당 5회 요청 제한에 걸려 느려질 수 있으며, DNS를 별도 루트 모듈과 상태 파일로 분리하면 다른 계획에 미치는 지연을 막을 수 있음.
- 대부분의 팀은 Route 53 레코드 리소스를 다른 인프라 리소스와 함께 관리하지만, 이 구성은 많은 호스팅 영역을 조회할 때 요청 제한을 넘길 수 있음.
- 요청 제한에 걸리면 계획 실행이 속도 제한에 따른 재시도 대기(backoff)로 지연되고, 그 영향이 실행마다 누적됨.
- Cursor의 DNS 설정은 인프라 배포 속도를 늦추는 주요 병목 중 하나였으며, 핵심 루트 모듈에도 영향을 줌.
TF_LOG=debug로그에서Throttling: Rate exceeded (HTTP 400)오류를 확인하고, OpenTofu에서는 OpenTelemetry 추적으로 소요 시간을 살펴볼 수 있음.
문제: Route 53 요청 제한
- Terraform 또는 OpenTofu를 사용하면서 AWS 계획이 설명하기 어려울 정도로 느리다면 DNS 레코드 관리 방식을 점검할 필요가 있음.
- Route 53 레코드 리소스를 다른 인프라 리소스와 함께 두는 방식은 자연스럽지만, AWS는 Route 53 레코드 API 요청에 초당 5회의 엄격한 제한을 적용함.
- Terraform이 여러 호스팅 영역에서 데이터를 조회하면 이 제한을 빠르게 초과할 수 있음.
- 그 결과 몇 초면 끝날 계획이 속도 제한 재시도 대기 때문에 지연되며, 느려진 실행이 모든 계획 실행에 반복해서 영향을 줌.
Cursor에서 확인한 영향
- Cursor의 DNS 설정은 인프라 배포 속도를 늦추는 가장 큰 병목 중 하나로 드러났으며, 핵심 루트 모듈에도 영향을 줌.
- 이 문제를 분리해 해결한 작업은 전체 협업 과정에서 확인한 주요 속도 개선 중 하나임.
병목 확인 방법
- 느린 계획 하나에서
TF_LOG=debug를 설정해 디버그 로그를 활성화함. - 로그에서
Throttling: Rate exceeded (HTTP 400)와 비슷한 오류를 확인함. Route 53에서 자주 나타날 수 있으며, 다른 서비스의 속도 제한도 살펴볼 필요가 있음. - OpenTofu를 사용하는 경우 OpenTelemetry 추적을 활성화해 시간이 어디에 쓰이는지 확인함.
해결 방법
- 로그에서 Route 53 요청 제한에 걸린 사실을 확인하면 DNS 레코드를 별도의 루트 모듈과 상태 파일로 분리함.
- DNS를 분리하면 Route 53 요청 제한으로 인한 지연이 모든 계획 실행에 퍼지는 것을 막을 수 있음.
- 이 병목은 확인하는 데 드는 비용이 적지만 Terraform 처리량을 조용히 떨어뜨리는 원인일 수 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요