피드로 돌아가기
Dev.toBackend
원문 읽기
결정론적 파이프라인 설계를 통한 예측 가능한 Redirect Engine 구축
Stop Hardcoding 301s: How I Built a Redirect Engine That Doesn't Break at 2 A.M.
AI 요약
Context
정적 Nginx 설정의 한계로 인한 운영 오버헤드와 비즈니스 요구사항의 빈번한 변경 발생. 단순 설정 문제를 넘어 호스트, 경로, 쿼리, 메서드에 기반한 정밀한 Routing Product로의 전환이 필요했던 상황.
Technical Solution
- 요청 진입 시 Host 존재 여부, Rate Limit, 계정 상태(402)를 순차적으로 검증하는 Corridor of Gates 구조 설계
- Priority DESC $\rightarrow$ createdAt DESC $\rightarrow$ ID DESC 순의 엄격한 정렬 기준을 통한 Rule Evaluation의 결정론적 보장
- 단순 Path Match가 아닌 Target URL 생성 성공 여부를 기준으로 'Winner'를 결정하는 Rule Loop 메커니즘 적용
- Regex Capture Group, Placeholders, Ternary 연산자를 지원하는 Dynamic Rule 엔진 구현
- Destination Blacklist 검증 단계에서 인프라 장애 시 503을 반환하는 Fail-closed 전략 채택
- Production Traffic과 Simulation 환경 간의 Resolution Logic을 완전히 일치시켜 배포 전 예측 가능성 확보
실천 포인트
- Rule 충돌 방지를 위해 DB Tie-breaker가 아닌 명시적인 Priority 필드 도입 여부 검토 - Match 성공과 Redirect 타겟 생성 성공을 분리하여 Catch-all Rule의 동작 방식 정의 - 외부 의존성(Blacklist API 등) 장애 시 시스템의 기본 동작을 Fail-open과 Fail-closed 중 선택 - 운영 환경과 동일한 로직을 사용하는 Simulation 도구를 구축하여 설정 변경 리스크 최소화