피드로 돌아가기
Three Stabs at a Typed Schema DSL in Kotlin
Dev.toDev.to
Backend

Kotlin Type System을 활용한 Type-safe Schema DSL 설계

Three Stabs at a Typed Schema DSL in Kotlin

Rasmus Ros2026년 5월 13일11advanced

Context

사용자 정의 Schema에 따라 변수와 제약 조건이 동적으로 변하는 라이브러리 설계 환경. 기존의 Imperative Registry 방식은 런타임 Cast 의존도가 높고, 컴파일 타임에 타입 안정성을 보장하기 어려운 한계 존재.

Technical Solution

  • Type-safe Builder 패턴을 통해 람다 리시버 기반의 선언적 Schema 정의 구조 구현
  • Arity-indexed Product 구조를 도입하여 튜플의 위치와 타입을 결합한 Stat2, Stat3 형태의 타입 체인 설계
  • Trait 기반 Extension Property를 활용하여 다중 변수 내 특정 속성(HasMean 등)에 대한 타입 안전한 접근 제어
  • StatKey를 속성으로 가지는 Class 기반 Schema 정의로 컴파일 타임 타입 추론과 구조적 직렬화 동시 달성
  • Eignex/skema 라이브러리를 통한 Kotlin Multiplatform 대응 및 kotlinx-serializable 기반의 Wire Format 표준화

1. 런타임 Cast가 빈번한 Map 기반 조회 구조를 StatKey와 같은 타입 바인딩 객체로 대체 가능한지 검토

2. DSL 설계 시 Imperative Builder보다 Class 기반의 Declarative Structure를 채택하여 직렬화 가능성 확보

3. 복잡한 튜플 구조의 타입 추론이 필요할 경우 Arity-indexed Product 패턴의 적용 고려

원문 읽기