💡 JSON 보다 더 빠른 대안들

JSON 은 데이터를 정의하는 포맷중 하나로 웹 서비스에서 서버와 클라이언트간에 통신시 많이 사용되고 있습니다.


제가 신입일때까지만 해도 XML 이나 Plain Text 형식으로 통신하는 API 들도 여럿 있었지만,

시간이 흘러 이러한 API 들은 deprecated 되었고

현재 서비스 되고 있는 OPEN API 들의 문서를 봐도 JSON 으로 통신하지 않는 API 는 찾아보기가 힘듭니다.


JSON 이 이렇게 인기가 많아진 이유는 다음과 같습니다.


📌 사람이 읽을 수 있는 형식

📌 언어에 구애받지 않음

📌 데이터 구조 일관성

📌 브라우저 지원

📌 프로그래밍 언어의 JSON API 지원


그렇지만 이러한 JSON 도 다음과 같은 이유로 성능 저하를 발생시킬 수 있습니다.


📌 광범위하거나 중첩이 깊은 데이터일 경우 Parsing 오버헤드가 발생할 수 있습니다

📌 데이터 송수신시 반드시 해야하는 직렬화 및 역직렬화 과정이 성능에 영향을 줄 수 있습니다

📌 JSON 은 텍스트 기반이기 때문에 문자열 처리를 하게 되는데 이는 이진 데이터 처리에 비해 느릴 수 밖에 없습니다

📌 JSON 에서 제공하는 데이터 Type 이 제한되기 때문에 복잡한 데이터 구조를 사용할 경우 추가적인 장치나 표현이 필요하게 되어 성능에 영향을 줄 수 있습니다

📌 바이너리 데이터에 대한 지원이 없기 때문에 이를 표현할 경우 텍스트 인코딩, 디코딩을 하게 되어 성능에 영향을 줄 수 있습니다


이러한 JSON 의 단점을 대체할 수 있는 것으로 다음과 같은 솔루션이 있습니다.


📌 Protocol Buffers

Protobuf 라고도 알려진 프로토콜 버퍼는 Google 에서 개발한 바이너리 직렬화 형식입니다.

JSON 에 비해 인코딩 및 디코딩이 더 간단하고 빠른 바이너리 인코딩을 사용하고 이전 버전과의 호환성을 유지하면서 데이터 구조를 업데이트할 수 있는 Schema Evolution 을 지원합니다.


📌 MessagePack

MessagePack 은 효율성과 속도를 위해 설계된 또 다른 이진 직렬화 형식입니다.

매우 컴팩트한 데이터 표현을 생성하여 데이터 전송 크기를 줄일 수 있고, Protocol Buffers 와 동일하게 바이너리 특성으로 빠른 인코딩 및 디코딩이 가능합니다.


📌 BSON

MongoDB 에서 사용하는것으로 유명한 BSON 은 바이너리 데이터 유형이 추가된 JSON과 유사한 구조를 유지하여 효율성과 가독성 간의 균형을 제공합니다.

또한 이미지나 멀티미디어와 같은 데이터를 처리하는 데 유용한 바이너리 데이터 유형에 대한 기본 지원을 제공합니다.


📌 Avro

Avro는 Apache Hadoop 프로젝트 내에서 개발된 데이터 직렬화 프레임워크로 스키마 호환성과 성능에 강점을 두고 있습니다.

컴팩트 바이너리 인코딩 형식을 사용하므로 페이로드를 줄일 수 있고 여러 프로그래밍 언어를 지원하므로 다양한 애플리케이션 생태계에 적합합니다.


공유 드린 원문에 이에 대한 자세한 내용과 JSON 을 계속 사용할 경우 성능을 최적화 할 수 있는 팁들이 정리되어있으니 관심있으신 분들은 원문 내용을 참고해주세요.


📚 원문

https://dev.to/nikl/json-is-slower-here-are-its-4-faster-alternatives-2g30?utm_source=oneoneone

JSON is Slower. Here Are Its 4 Faster Alternatives

DEV Community

JSON is Slower. Here Are Its 4 Faster Alternatives

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 11월 17일 오전 8:11

 • 

저장 324조회 11,657

댓글 3