[번역] JSON이 정말 필요할까?
Soshy·

API에서 JSON을 사용하는 것은 이제 완전히 몸에 밴 습관처럼 느껴집니다.
- 데이터를 보내야 한다? →
JSON.stringify - 응답을 받아야 한다? →
response.json()
아무 의심 없이 그냥 씁니다.
그런데 어느 날 문득 이런 생각이 들었습니다. "잠깐… 우리는 왜 이걸 하고 있는 걸까? JSON이 유일한 방법일까?"
프론트엔드 개발자로서 저는 API에서 데이터를 받거나 요청 본문에 데이터를 담아 보낼 때 항상 JSON을 사용해 왔습니다. 그러다 이런 의문이 생겼습니다. "우리에게 JSON이 꼭 필요한 걸까? 서버에 데이터를 전송하는 다른 방법은 없을까?"
왜 데이터를 JSON으로 변환하는 걸까요?
먼저, 전송 전에 JSON으로 데이터를 변환하는 이유부터 살펴보겠습니다.
네트워크를 통해 데이터를 전송할 때(예: HTTP), 복잡한 JavaScript 객체나 배열을 그대로 전송할 수는 없습니다. 따라서 전송하기 쉬운 형식으로 변환해야 합니다. 이 과정을 직렬화(Serialization) 라고 합니다.
대부분의 경우, 다음과 같이 JSON을 사용해 데이터를 문자열로 변환합니다.
const dataToSend = {
name: "Drakshi",
role: "Frontend Engineer",
skills: ["React", "TypeScript", "Next.js"]
};
try {
const response = await fetch("https://example.com/api/user", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(dataToSend)
});
서버가 이 데이터를 수신하면, JSON 문자열을 다시 객체로 변환합니다. 이 역과정을 역직렬화(Deserialization) 라고 합니다(예: JSON.parse 사용).
JSON이 가장 널리 쓰이는 포맷인 이유는 단순하고, 읽기 쉬우며, JavaScript와 궁합이 매우 잘 맞기 때문입니다. 하지만 JSON이 유일한 방법은 아닙니다.
다른 직렬화 포맷도 있습니다
다른 직렬화 포맷도 존재합니다. 예를 들어, gRPC는 Protocol Buffers(Protobuf)를 사용하는데, 이는 바이너리 형식으로 상황에 따라 JSON보다 훨씬 효율적으로 동작합니다.
또 다른 예시로는 MessagePack이 있으며, 이것도 바이너리 직렬화 포맷입니다.
직접 비교해 봤습니다 (MessagePack)
그래서 직접 테스트해 보기로 했습니다.
무작정 JSON을 쓰는 대신, MessagePack이라는 다른 직렬화 포맷을 시도해 봤습니다. 바이너리 형식이며 더 압축률이 높다고 알려진 포맷입니다.
아래 명령어로 설치할 수 있습니다.
npm install @msgpack/msgpack
간단한 비교 결과는 다음과 같습니다.
| JSON | MessagePack | |
|---|---|---|
| 형식 | 텍스트 (문자열) | 바이너리 |
| 가독성 | 높음 | 낮음 (사람이 읽기 어려움) |
| 데이터 크기 | 상대적으로 큼 | 더 압축됨 |
| 전송 속도 | 보통 | 이론상 더 빠름 |
이것이 의미하는 바는 다음과 같습니다.
- MessagePack은 JSON보다 더 압축됩니다.
- 데이터가 작을수록 → 전송이 빨라집니다 (이론상).
- 단, 바이너리이므로 JSON처럼 사람이 읽기는 어렵습니다.
그래서… JSON이 정말 필요할까요?
짧게 답하자면, 꼭 필요하지는 않습니다.
그냥 너무 익숙해진 것뿐입니다.
JSON은 단순하고, 읽기 쉬우며, JavaScript와 완벽하게 잘 맞습니다. 그렇기 때문에 대부분의 API에서 기본 선택지가 된 것입니다. 디버깅하기 쉽고, 로그 확인하기도 쉽고, 솔직히 말하면… 그냥 편합니다.
하지만 내부적으로 우리가 하는 일은 결국 직렬화, 다시 말하면, 네트워크를 통해 전송할 수 있는 형식으로 데이터를 변환하는 것입니다. JSON은 그 방법 중 하나일 뿐입니다.
앞서 살펴봤듯이, MessagePack이나 gRPC 환경의 Protocol Buffers 같은 포맷은 더 압축적이고 효율적일 수 있습니다. 하지만 주요 트레이드오프가 있습니다. 바로 가독성과 개발자 경험입니다.
따라서 JSON을 모든 곳에서 대체하자는 이야기가 아닙니다.
핵심은 JSON은 규칙이 아니라, 선택이라는 것입니다.
JSON을 사용하면 좋을 때:
- 단순함과 가독성이 중요할 때
- 일반적인 웹 API를 개발할 때
- 디버깅이 중요한 상황일 때
대안을 고려해볼 때:
- 페이로드 크기가 정말 중요한 때
- 성능이 핵심 요소일 때
- 대규모 트래픽 시스템을 개발할 때