1. 개요
데이터 직렬화 포맷은 서비스의 성능과 유지보수성에 직접적인 영향을 준다.
Kafka, gRPC, MSA 환경에서 자주 쓰이는 JSON, Avro, Protobuf의 특징과 장단점을 간단히 정리한다.
2. 개념 요약
- JSON: 텍스트 기반, 사람이 읽기 쉬움. 디버깅·외부 API 공개에 강점.
- Avro: 이진 기반 + JSON 스타일 스키마. Kafka 환경에 최적화.
- Protobuf: 이진 기반, 성능·효율 최고. gRPC와 궁합이 좋음.
3. 비교 표
| 항목 | JSON | Avro | Protobuf |
|---|
| 사람 가독성 | 높음 | 낮음 | 낮음 |
| 기계 효율성 | 낮음 | 중간 | 높음 |
| 스키마 강제 | 선택(옵션) | 필수 | 필수 |
| 스키마 이해 난이도 | 쉬움 | 중간 | 어려움(태그 관리 필요) |
| 네트워크 효율 | 낮음 | 중간 | 높음 |
| Kafka 친화 | 보통 | 높음 | 높음 |
| gRPC 친화 | 낮음 | 낮음 | 매우 높음 |
4. 장단점 정리
JSON
장점
- 사람이 읽고 쓰기 쉬움
- 도구, 라이브러리, 생태계 풍부
- 초기 개발 속도 빠름
단점
- 데이터 크기 큼
- 파싱 속도 느림
- 스키마 강제 어려움 (JSON Schema 필요)
Avro
장점
- 스키마 진화(Backward 호환)에 강함
- Kafka·Hadoop 환경에 최적
- 필드 번호 관리 불필요
단점
- 사람 가독성 낮음(바이너리)
- 다언어 지원은 Protobuf보다 약간 불리
Protobuf
장점
- 크기 작고 직렬화/역직렬화 속도 빠름
- 다언어 지원 최고 수준
- gRPC와 궁합 우수
단점
- 필드 번호(tag) 관리 필수
- 스키마 변경 규칙 엄격
- 디버깅 시 도구 필요
5. 선택 가이드
- 외부 공개 API, 프론트엔드 연동 → JSON
- Kafka 스트리밍, JVM 친화 환경 → Avro
- gRPC, 고성능 MSA 내부 통신 → Protobuf
6. 결론
데이터 포맷 선택은 서비스 특성과 운영 환경에 따라 달라진다.
중요한 것은 포맷 자체보다 스키마 관리, 호환성 정책, 자동화된 검증 프로세스를 갖추는 것이다.