피드로 돌아가기
MUS Serialization Format
Dev.toDev.to
Backend

MUS 포맷 도입으로 Protobuf 대비 페이로드 16%, JSON 대비 61% 크기 감소 달성함

MUS Serialization Format

Yuri Zinchenko2026년 4월 1일5intermediate

Context

기존 직렬화 포맷은 필드 이름과 타입 힌트라는 메타데이터 오버헤드를 필연적으로 포함함. 고성능 시스템에서는 이 'tax'가 누적되어 네트워크 대역폭과 메모리 할당 비용을 증가시킴.

Technical Solution

  • Untyped Serialization: 송수신자가 데이터 구조를 공유하는 경우 필드 이름을 제거하고 순서대로 raw 값만 저장함
  • DTM (Data Type Metadata): 1바이트 접두사로 동적 타입 라우팅, 데이터 버전 관리, 인터페이스 직렬화를 처리함
  • Size Function: 버퍼 할당 전에 정확한 메모리 크기를 사전 계산하여 GC 압력 최소화 및 재할당 회피함
  • Streaming-ready Architecture: 각 필드가 고유 크기를 가지므로 전체 데이터 길이 사전 파악 불필요함
  • Deterministic Field Sequence: 필드 순서가 코드 정의와 동일하므로 별도 envelope 없이 직렬화/역직렬화 가능함

Impact

MUS 페이로드 크기 58바이트 대비 Protobuf 69바이트(16% 감소), JSON 150바이트(61% 감소)임. Size Function 활용 시 버퍼 재사용으로 메모리 할당 비용 절감됨.

Key Takeaway

메타데이터를 페이로드에서 제거하고 애플리케이션 코드에 위임하면 데이터 표현의 최소 단위를 달성할 수 있음. 타입 힌트 없이도 타입 공유 컨텍스트만으로 정확한 역직렬화가 가능함.


고트래픽 API Gateway나 마이크로서비스 간 내부 통신에서 MUS 포맷을 적용하면 네트워크 대역폭 비용을 절감할 수 있음. 다만 송수신자 간 타입 동기화가 필수이므로 IDL(Interface Definition Language) 기반 코드 생성 파이프라인 구축이 선행되어야 함.

원문 읽기