웹 개발
Rate Limit 설정을 운영 중 바꾸는 게 위험한 이유
로컬 테스트는 통과했지만 배포 후 rate limit이 다르게 적용되는 현상을 겪은 후 배운 교훈.
로컬에서 아무리 테스트해도 배포 환경의 rate limit은 다르게 작동한다. 캐시, 로드밸런서, CDN 등이 개입되면서 요청이 예상과 달리 분산되거나 몰릴 수 있기 때문이다.
배포 전에 확인해야 할 것
먼저 현재 설정이 실제로 동작하는지 보자. 문제를 일으키는 쪽에서 확인하는 게 가장 빠르다.
# 1. 환경 변수 확인
echo $RATE_LIMIT_REQUESTS
echo $RATE_LIMIT_WINDOW
# 2. 서버 로그에서 실제 요청 제한이 발동하는지 보기
docker logs --tail=100 api-service | grep -i 'rate\|limit'
로컬 환경과 운영 환경의 차이를 기록해두자. 로드밸런서가 요청을 여러 인스턴스에 분산하면 각 인스턴스는 카운트를 공유하지 않는다.
작은 변경부터 시작
하루아침에 limit을 10배로 늘리면 안 된다. 다음처럼 단계적으로:
- 현재 설정으로 동작 확인
- 요청당 비용이나 리소스 사용량 측정
- 여유분을 10~20% 정도만 추가
- 24시간 지켜보면서 에러율 모니터링
같은 실수를 반복하지 않으려면 변경 이력을 기록해두는 게 중요하다. 언제, 무엇을, 왜 바꿨는지만 남겨둬도 충분하다.