복잡한 도메인 라우팅, 이제 Reverse Radix Tree로 해결!
기존 프록시(Proxy)의 수동적인 우선순위 설정(Manual Priority) 문제를 해결하기 위해 Reverse Radix Tree를 활용한 동적 라우팅 시스템을 제안함
도메인 계층 구조를 Reverse Radix Tree에 맞게 변환하여, 가장 구체적인 규칙(Most Specific Match)이 자동으로 적용되도록 설계
Literal Density 점수를 활용하여 와일드카드(Wildcard) 패턴 간의 모호성을 해결하고, Named Parameters를 통해 동적 업스트림(Dynamic Upstream) 구성
선형 검색(Linear Search) 방식의 단점을 극복하고, O(L) 및 O(P) 복잡도(Complexity)를 통해 성능을 최적화함
Reverse Radix Tree 아키텍처의 핵심 원리
제안된 시스템은 도메인 라우팅 문제를 해결하기 위해 Reverse Radix Tree를 핵심 데이터 구조로 사용한다. 기술적으로 보면, 도메인을 점(.)을 기준으로 분할하고, 각 세그먼트를 역순으로 정렬하여 트리에 저장한다. 이러한 방식은 DNS의 계층 구조를 반영하며, 가장 구체적인 규칙(Most Specific Match)을 자동으로 선택할 수 있도록 한다. 특히, Literal Density 점수를 활용하여 와일드카드 패턴 간의 충돌을 해결하는 점이 주목할 만하다.
Literal Density 기반의 패턴 매칭 알고리즘
시스템은 Literal Density라는 개념을 통해 와일드카드 패턴의 우선순위를 결정한다. 실제 사례로는, 각 세그먼트 내의 문자열 길이를 기반으로 점수를 계산하여, 가장 구체적인 패턴을 선택한다. 이 알고리즘은 개발자가 수동으로 우선순위를 설정할 필요 없이, 자동으로 가장 적합한 규칙(Best Match)을 적용하도록 설계되었다. 이러한 접근 방식은 설정의 복잡성을 줄이고, 유지보수성(Maintainability)을 향상시킨다.
동적 업스트림 구성을 위한 Named Parameters
시스템은 Named Parameters를 활용하여 동적 업스트림을 구성한다. 특히, {tenant}.myapp.test와 같은 규칙을 정의하여, 각 요청의 tenant 값을 추출하고, 이를 기반으로 동적으로 업스트림을 라우팅한다. 이러한 방식은 단일 규칙(Single Rule)으로 무한대의 동적 업스트림을 처리할 수 있게 해주며, 설정 관리(Configuration Management)의 효율성을 높인다. 하지만, 잘못된 파라미터 설정은 보안 취약점으로 이어질 수 있다.
성능 최적화 및 트레이드오프 분석
성능 측면에서, Reverse Radix Tree는 선형 검색(Linear Search) 방식의 단점을 극복하고, O(L) 및 O(P) 복잡도를 제공한다. 특히, 정확한 일치(Exact Match)의 경우 O(L)의 시간 복잡도를 가지며, 패턴 매칭 시에도 트리의 계층 구조를 활용하여 검색 범위를 좁힌다. 하지만, Depth-Blind Regex와 같은 유연성을 포기해야 하는 트레이드오프가 존재한다. 즉, 복잡한 정규 표현식(Regular Expression)을 사용한 매칭은 지원하지 않는다.