피드로 돌아가기
Dev.toInfrastructure
원문 읽기
단일 VPS에서 NGINX 최적화로 2,500 RPS 무결성 달성
Why I still use NGINX over everything else
AI 요약
Context
간헐적인 트래픽 스파이크가 발생하는 단일 VPS 환경에서 인프라 비용 최소화와 시스템 안정성 확보가 필요함. App 레벨의 처리 방식으로는 Node.js 이벤트 루프 부하 및 DB 커넥션 급증으로 인한 연쇄적 시스템 붕괴 위험이 존재함.
Technical Solution
- App 도달 전 NGINX 레벨에서 Rate Limiting을 처리하여 Node.js 워커 스레드 및 메모리 자원 낭비 방지
- proxy_cache_lock 설정을 통한 Cache Stampede 방지로 캐시 만료 시 단일 요청만 Upstream에 전달하는 구조 설계
- Cloudflare의 CF-Connecting-IP 헤더를 활용한 Real-IP 복구로 정확한 사용자별 Rate Limiting 적용
- Localhost 바인딩 및 NGINX 단일 진입점 설계를 통한 외부 노출 표면 제거 및 보안 강화
- Immutable한 Next.js 정적 자산에 대해 1년 단위의 강력한 Cache-Control 헤더 설정 및 NGINX 직접 서빙
실천 포인트
1. App Middleware 이전 단계에서 Rate Limiting을 처리하고 있는가
2. 캐시 만료 시 Thundering Herd 문제를 방지할 Lock 메커니즘이 적용되었는가
3. Proxy 환경에서 실제 클라이언트 IP를 정확히 식별하여 정책을 적용 중인가
4. 정적 자산의 Immutable 특성을 활용해 브라우저 및 CDN 캐시를 최적화했는가