이것저것 개발기록

"JSON이 전부는 아니다?" 데이터 직렬화 포맷 3종 비교 (JSON, XML, Protobuf) 본문

IT 이야기

"JSON이 전부는 아니다?" 데이터 직렬화 포맷 3종 비교 (JSON, XML, Protobuf)

Garam Kim 2026. 1. 11. 12:00

"API 만들 때 무조건 JSON만 쓰시나요?"
현대 웹의 표준인 JSON부터 고전의 XML, 그리고 구글이 만든 고성능 Protobuf까지. 상황에 맞는 데이터 직렬화 포맷 선택 가이드를 정리합니다.

1. JSON (JavaScript Object Notation)

현재 가장 널리 쓰이는 포맷입니다. 사람이 읽기 쉽고(Human Readable), 대부분의 언어에서 지원하며 자바스크립트와의 호환성이 완벽합니다.

  • 장점: 가독성이 좋고 가볍습니다. 디버깅이 매우 쉽습니다.
  • 단점: 텍스트 기반이라 데이터 크기가 바이너리 포맷보다 큽니다. 데이터 타입이 단순합니다.

2. XML (eXtensible Markup Language)

데이터를 태그로 감싸는 방식입니다. HTML과 유사하며 설정 파일이나 오래된 시스템(Legacy)에서 여전히 많이 보입니다.

  • 장점: 스키마 정의(DTD, XSD)가 엄격하여 데이터 검증이 용이합니다.
  • 단점: 태그 때문에 데이터 용량이 매우 크고 파싱 속도가 느립니다.

3. Protocol Buffers (Protobuf)

구글에서 개발한 바이너리 직렬화 포맷입니다. 텍스트가 아닌 이진 데이터로 전송됩니다.

  • 장점: JSON보다 훨씬 작고 빠릅니다. 엄격한 타입 체크가 가능합니다.
  • 단점: 이진 데이터라 사람이 눈으로 읽을 수 없습니다. 전용 컴파일러가 필요합니다.

💡 실무 노트

실무에서 무엇을 쓸지는 **'누가 이 데이터를 읽는가'**에 달려 있습니다.

팁: 일반적인 웹 서비스의 프론트엔드와 백엔드 통신에는 JSON이 정답입니다. 생산성과 디버깅 편의성 때문이죠. 하지만 서버와 서버가 통신하는 **MSA(마이크로서비스 아키텍처)** 환경이나, 모바일 게임처럼 데이터 전송량을 극한으로 줄여야 하는 환경이라면 Protobuf(gRPC) 도입을 적극 검토해야 합니다. JSON을 Protobuf로 바꾸는 것만으로도 네트워크 비용을 절반 이하로 줄일 수 있는 경우가 많습니다.

"표준은 상황에 따라 변합니다. 도구의 특성을 알고 선택하는 것이 설계의 시작입니다."