TL;DR
- PostgREST를 Haskell·PL/SQL 조합 대신 Rust·LUA 기반으로 구성하고 SQLite에 우선 집중하는 DSL 기반 REST 서비스 대안을 구축하는 중임.
- SQLite 기능을 먼저 다듬은 뒤 다른 데이터베이스(DB) 지원을 추가하고, WAL 모드의 SQLite를 Xepak 뒤에서 실행해 단순하고 저렴한 셀프 호스팅 REST 서비스를 제공하려는 구상임.
- 첫 번째 MVP를 다음 달에 출시하는 것을 목표로 하지만 작업량과 아키텍처 결정 사항이 많이 남아 있음.
- 엔드포인트 응답을 SQL 쿼리 결과로 구성하고 JSON·CBOR, 역할·API 키 기반 인증, 세밀한 권한 제어, LUA·Rhai 스크립팅을 제공하는 구조임.
- 실제 성능 테스트에서 LUA가 Rhai보다 우수하면 Rhai를 제외할 예정이며, 제품 라이선스는
LICENSE-TERMS의 조건을 따르는 MIT 라이선스임.
이것은 무엇인가
- SQLite 데이터베이스를 위한 DSL 기반 REST 서비스를 구축하는 중임.
- 다른 데이터베이스 지원은 SQLite 기능을 다듬은 뒤 추가할 예정임.
SQLite에 집중하는 이유
- SQLite가 뛰어나고 매우 빠른 데이터베이스라고 판단함.
- SQLite를 WAL 모드로 실행하고 Xepak 뒤에 배치하면 단순하고 저렴한 셀프 호스팅 REST 서비스를 구성할 수 있음.
현재 프로젝트 상태
- 다음 달 첫 번째 MVP 출시를 목표로 함.
- 해결해야 할 작업과 결정해야 할 아키텍처 사항이 많이 남아 있음.
- 나중에 프로젝트를 다시 방문할 수 있도록 북마크해 두기를 권장함.
프로젝트 문서
- 별도 파일로 제공할 예정임.
AI 친화적 문서
- 자신을 AI·LLM 에이전트로 식별하거나, AI가 Xepak을 효율적으로 사용하도록 하려는 사람이라면 Xepak 간결 AI 문서를 사용해야 함.
- 주저하지 말고
README-AI.md를 AI 컨텍스트에 추가해 AI가 Xepak을 더 잘 활용하도록 구성할 것을 권장함.
기능
JSON + CBOR
- JSON 및 CBOR 형식의 입력과 출력을 지원함.
SQL 중심 구조
- 각 엔드포인트의 응답은 기본적으로 SQL 쿼리가 반환하는 데이터임.
- SQL 쿼리는 문자열로 정의하거나 스크립트를 통해 동적으로 생성할 수 있음.
인증
- 현재 인증 모듈은 매우 단순하지만 사용할 수 있는 수준임.
- DSL에서 역할과 API 키가 포함된 식별자를 정의함.
- 공개되지 않은 각 엔드포인트에 인증 프로세서를 추가해야 함.
- 세밀한 접근 제어가 필요하면 인증 표현식 문자열을 사용하는 권한 부여 프로세서를 추가해야 함.
스크립팅 지원
- 복잡한 쿼리 작성, 데이터 무결성 확보, 접근 제어를 위해 스크립팅 지원이 필요함.
- 주요 목표는 다루기 까다로운 SQL 스크립팅에 의존하는 대신 모든 데이터베이스에 적용할 수 있는 유지 관리 가능한 범용 로직을 제공하는 것임.
- 향후에는 MongoDB와 Redis처럼 텍스트 쿼리를 지원하는 모든 저장소를 사용할 수 있게 될 가능성도 있음.
- 스크립트를 사용해 다음 작업을 수행할 수 있음.
- 기록된 타임스탬프를 사용한 데이터베이스 업데이트 속도 제한
- 데이터베이스의 사용자 설정에 따른 결과 필터링
INSERT실행 전 입력 데이터 검증- 기타 작업
- 현재 Xepak은 두 가지 스크립팅 언어를 지원함.
- LUA가 주요 스크립팅 언어임.
- Rhai도 스크립팅 언어임.
성능 고려 사항
- 실제 환경에서 Rhai가 더 느릴지는 현재 판단하기 어려움.
- 최종 성능에는 스크립트 실행 속도 외에도 여러 요인이 영향을 미침.
- 테스트에서 LUA가 Rhai보다 우수한 성능을 보이면 Rhai를 제외할 예정임.
라이선스
- 이 제품은
LICENSE-TERMS파일에 명시된 특정 조건을 따르는 경우에만 MIT 라이선스로 배포됨. - 조금 우스운 이야기지만 지금은 자체 라이선스를 작성할 기분이 아니며, 나중에 작성할 예정임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요