이번 프로젝트에서는 외부 시스템에서 MQTT로 메세지를 받아서 처리하는 로직을 개발하게 되었다.
처음에는 메세지 포맷을 XML로 할지, JSON으로 할지 팀 내에서 고민을 꽤 했다.
각자 장단점이 있어서 쉽게 결정을 못 했지만, 최종적으로는 JSON을 선택하게 되었다.
그 과정에서 정리해본 JSON vs XML 비교 내용을 간단히 공유해본다.
(개발하면서 꽤 자주 부딪히는 주제라 정리해두면 나중에 또 쓸 일이 있을 듯.)
✅ JSON의 장점
1. 가볍고 간결하다
JSON은 불필요한 태그 없이 딱 필요한 데이터만 담을 수 있어서
메시지 크기를 줄이기에 좋다.
→ MQTT처럼 네트워크 효율이 중요한 환경에 유리
2. 파싱이 쉽고 빠르다
대부분의 언어에서 기본적으로 지원되는 JSON 파서 덕분에
별다른 설정 없이 바로 객체로 변환해서 사용할 수 있다.
3.가독성이 좋다
구조가 단순해서 눈으로 봤을 때 이해하기 쉽고,
디버깅이나 로그 확인 시에도 편리하다.
📄 XML의 장점
1. 스키마 기반의 명확한 구조 정의 가능
XSD를 이용해 구조를 엄격하게 정의할 수 있어서
서로 다른 시스템 간 데이터 계약이 확실해진다.
2. 속성과 값을 구분할 수 있다
JSON은 key-value 형태뿐이지만,
XML은 <태그 속성="값">처럼 더 다양한 표현이 가능하다.
3. 복잡한 데이터 구조 표현에 강하다
중첩 구조나 반복되는 항목 등 복잡한 계층적 구조를 표현하기에 XML이 더 직관적일 수 있다.
4. 레거시 시스템과의 호환성
정부 시스템이나 오래된 기업 시스템은 아직도 XML을 표준 포맷으로 사용하는 경우가 많다.
항목 | JSON | XML |
문법 | 간결함 | 태그 기반 |
가독성 | 좋음 | 비교적 떨어짐 |
데이터 크기 | 작음 | 큼 |
표현력 | 중간 (단순 구조) | 높음 (복잡한 구조 표현 가능) |
파싱 난이도 | 쉬움 | 보통 |
표준화/엄격성 | 중간 | 높음 (XSD 등 지원) |
사용 환경 | 웹, API, 모바일 | 기업, 정부 시스템 |
주석 지원 | ❌ 없음 | ⭕ 가능 |
✅ 그럼에도 우리가 JSON을 선택한 이유
- 실시간으로 빠르게 메세지를 주고받아야 했고
- 메시지 크기는 작을수록 좋았고
- 복잡한 구조보다는 간단한 key-value 위주 데이터였고
- 양쪽 시스템 모두 JSON 파싱에 문제 없었기 때문에
- 이후 해당 데이터를 가지고 검색을 할 경우 훨씬 간단하게 데이터 탐색이 가능해
결국 JSON이 가장 적합한 선택이었다.
물론 상대 시스템에서 XML만 지원했으면 다른 선택을 했겠지만,
이번엔 유연하게 결정할 수 있었기 때문에 효율적인 JSON을 사용하는 쪽으로 정리되었다.
💬 마무리
이런 선택의 상황은 프로젝트마다 자주 나타나는 것 같다.
정답은 없고, 상황에 맞는 적절한 포맷을 고르는 게 중요하다고 느꼈다.
혹시 비슷한 고민을 하고 있다면,
이 정리가 참고가 되었으면 좋겠다!
'Self Study > Others' 카테고리의 다른 글
[암호화]Threefish - Skein 해시 함수의 핵심 블록 암호 (0) | 2025.07.16 |
---|---|
스레드 풀 (Thread Pool) 왜 지정해야 할까? (4) | 2025.07.12 |
스레드(Thread) (3) | 2025.07.10 |
WEB 과 WAS (0) | 2025.07.07 |
Spring 과 Servlet (1) | 2025.07.05 |