데이터 정의 언어 Skir, 프로토콜 버퍼(Protocol Buffer)를 대체할 수 있을까?

by DD
2개월 전
조회수 14

Skir는 데이터 타입, 상수, API를 정의하는 선언적 언어로, 다양한 언어(TypeScript, Python, Java, C++ 등)에 대한 타입 안전한 코드 생성을 지원함

단일 YAML 파일 기반 설정, 간편한 사용성, 자동 재컴파일 기능으로 개발 편의성을 강조하며, JSON 및 바이너리 직렬화를 지원함

프로토콜 버퍼(Protocol Buffer)와의 비교에서 호환성, 스키마 변경 관리, 기존 생태계와의 통합에 대한 다양한 의견(Various Opinions)이 제시됨

'Compact JSON' 형식의 직렬화 방식은 스키마 손실 시 가독성 저하, 호환성 문제 발생 가능성이 제기되었으며, Swift, Go, Rust 지원 부재에 대한 아쉬움이 언급됨

Skir의 주요 특징 및 장점

Skir는 데이터 타입(Data Types), 상수(Constants), API 인터페이스를 정의하는 데 특화된 언어이다. 단일 YAML 파일을 통해 전체 설정을 관리하며, 다양한 프로그래밍 언어에 대한 타입 안전한 코드(Type-Safe Code)를 생성한다. 특히, 스키마 변경 시 호환성 검사(Compatibility Checks)를 통해 안전한 데이터 마이그레이션을 지원하며, 개발자는 자동 코드 생성(Automatic Code Generation)VS Code 확장 기능(VS Code Extension)을 통해 개발 생산성을 높일 수 있다.

프로토콜 버퍼(Protocol Buffer)와의 비교

커뮤니티에서는 Skir가 프로토콜 버퍼(Protocol Buffer)의 대안으로 제시되었지만, 기존 생태계와의 통합 및 호환성(Compatibility)에 대한 우려가 제기되었다. 특히, 프로토콜 버퍼(Protocol Buffer)의 풍부한 툴링(Tooling)과 오랜 기간 축적된 노하우를 고려할 때, Skir가 얼마나 빠르게 생태계를 구축할 수 있을지가 관건이다. 또한, OpenAPI 또는 gRPC와의 연동을 통해 기존 프로젝트와의 통합을 용이하게 할 필요가 있다는 의견도 제시되었다.

Compact JSON 형식의 트레이드오프(Trade-offs)

Skir의 'Compact JSON' 형식은 데이터 크기를 줄이는 장점이 있지만, 스키마 정보가 손실될 경우 가독성(Readability)이 저하되고, 디버깅이 어려워진다는 단점이 있다. 또한, 0 값을 기본값으로 처리하는 방식은 기존 시스템과의 역호환성(Backwards Incompatibility) 문제를 야기할 수 있다. 따라서, 데이터 직렬화 방식 선택 시, 데이터 격리 아키텍처(Data Isolation Architecture)를 고려하여 신중하게 결정해야 한다.

언어 지원 및 생태계 확장 필요성

현재 Skir는 TypeScript, Python, Java, C++ 등을 지원하지만, Go, Rust, Swift와 같은 주요 언어에 대한 지원이 부족하다는 지적이 제기되었다. 특히, 모바일 애플리케이션 개발에 널리 사용되는 Swift 지원은 백엔드(Backend)모바일 앱(Mobile App) 간의 데이터 교환을 위한 중요한 요소로 간주된다. 또한, WASM(WebAssembly) 지원을 통해 웹 환경에서의 활용성을 높이는 방안도 고려해 볼 수 있다.

Show HN: Skir – like Protocol Buffer but better