피드로 돌아가기
The Algorithm That Killed 10,000 Lines of API Boilerplate (Building a Dynamic Query Compiler)
Dev.toDev.to
Backend

보일러플레이트 1만 줄 제거, HTTP-to-SQL 컴파일러 설계

The Algorithm That Killed 10,000 Lines of API Boilerplate (Building a Dynamic Query Compiler)

Jackson Kasi2026년 4월 3일5advanced

Context

엔드포인트마다 수동으로 SQL JOIN을 추가하는 Switchboard API 구조의 비효율성. 중첩된 관계형 필터링 처리 시 발생하는 코드 중복과 유지보수 비용 증가. 하드코딩된 쿼리로 인한 확장성 결여 및 보안 취약점 노출 위험.

Technical Solution

  • Drizzle ORM의 관계 그래프를 탐색하는 Depth-First Search(DFS) 기반의 Recursive Relation Graph Traversal 알고리즘 구현
  • 쿼리 경로를 토큰화하여 스키마 메타데이터와 대조하는 Tokenizer 및 Recursive Resolver 설계
  • 정의되지 않은 관계 경로 접근 시 즉시 차단하는 화이트리스트 방식의 보안 검증 로직 적용
  • OFFSET 방식의 성능 저하를 해결하기 위해 튜플 비교 기반의 Vector Comparison Algorithm 도입
  • 정렬 필드와 커서 데이터를 분석하여 B-Tree 인덱스 스캔을 최적화하는 동적 Keyset Pagination 생성 방식 채택
  • API 엔드포인트 중심 사고에서 탈피하여 상태 머신과 컴파일러 기반의 인프라 추상화 계층 구축

Key Takeaway

반복적인 API 구현 대신 추상 구문 트리(AST) 컴파일러를 설계하여 비즈니스 로직과 데이터 접근 계층을 완전히 분리하는 전략. 단순 라이브러리 제공을 넘어 프레임워크에 독립적인 기본 엔진(Primitive Engine)을 구축하는 아키텍처적 접근 방식.


중첩 관계 쿼리가 빈번한 API 설계 시, 개별 엔드포인트 구현 대신 ORM 메타데이터를 활용한 동적 쿼리 컴파일러 도입을 검토할 것

원문 읽기