JSON, Avro, Protobuf 비교 — 어떤 포맷을 선택할까?

김창범·2025년 8월 13일

1. 개요

데이터 직렬화 포맷은 서비스의 성능과 유지보수성에 직접적인 영향을 준다.
Kafka, gRPC, MSA 환경에서 자주 쓰이는 JSON, Avro, Protobuf의 특징과 장단점을 간단히 정리한다.


2. 개념 요약

  • JSON: 텍스트 기반, 사람이 읽기 쉬움. 디버깅·외부 API 공개에 강점.
  • Avro: 이진 기반 + JSON 스타일 스키마. Kafka 환경에 최적화.
  • Protobuf: 이진 기반, 성능·효율 최고. gRPC와 궁합이 좋음.

3. 비교 표

항목JSONAvroProtobuf
사람 가독성높음낮음낮음
기계 효율성낮음중간높음
스키마 강제선택(옵션)필수필수
스키마 이해 난이도쉬움중간어려움(태그 관리 필요)
네트워크 효율낮음중간높음
Kafka 친화보통높음높음
gRPC 친화낮음낮음매우 높음

4. 장단점 정리

JSON

장점

  • 사람이 읽고 쓰기 쉬움
  • 도구, 라이브러리, 생태계 풍부
  • 초기 개발 속도 빠름

단점

  • 데이터 크기 큼
  • 파싱 속도 느림
  • 스키마 강제 어려움 (JSON Schema 필요)

Avro

장점

  • 스키마 진화(Backward 호환)에 강함
  • Kafka·Hadoop 환경에 최적
  • 필드 번호 관리 불필요

단점

  • 사람 가독성 낮음(바이너리)
  • 다언어 지원은 Protobuf보다 약간 불리

Protobuf

장점

  • 크기 작고 직렬화/역직렬화 속도 빠름
  • 다언어 지원 최고 수준
  • gRPC와 궁합 우수

단점

  • 필드 번호(tag) 관리 필수
  • 스키마 변경 규칙 엄격
  • 디버깅 시 도구 필요

5. 선택 가이드

  • 외부 공개 API, 프론트엔드 연동 → JSON
  • Kafka 스트리밍, JVM 친화 환경 → Avro
  • gRPC, 고성능 MSA 내부 통신 → Protobuf

6. 결론

데이터 포맷 선택은 서비스 특성과 운영 환경에 따라 달라진다.
중요한 것은 포맷 자체보다 스키마 관리, 호환성 정책, 자동화된 검증 프로세스를 갖추는 것이다.

0개의 댓글