JSON0 - 속도와 간결성의 균형
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: 고성능 시스템을 개발하는 개발자 및 아키텍처 설계자
- 난이도: 중급~고급 (성능 최적화 및 데이터 시리얼라이제이션 이해 필요)
핵심 요약
- JSON의 강점:
FIX 프로토콜
과의 호환성,자유로운 구조
,3rd Party 시스템
과의 쉽게 통합 가능 - 성능 한계:
JSON-simple
라이브러리의hash 함수
및객체 재사용
제약으로 인한100,000 메시지/초
처리 한계 - JSON0의 성과:
createJSON()
및toBytes()
최적화로3초 → 1.35초
처리 시간 단축 (성능 2배 향상)
섹션별 세부 요약
1. JSON 선택 이유
- 자기 설명성:
{"key": "value"}
구조로 복잡한 비즈니스 로직 표현 가능 - FIX to JSON 변환: 서버 수신 메시지에서
FIX 프로토콜
을JSON
으로 쉽게 변환 가능 - 광범위한 채택:
JSON
포맷으로 3rd Party 시스템과의 통합 시 문서화 필요 없음
2. 성능 테스트 환경
- 하드웨어:
Linux 2.6
,AMD Ryzen 7 1700
8코어 CPU - 라이브러리:
JSON-simple
사용 - 테스트:
produceUsingJSONSimple()
메서드로1,000,000개
JSON 객체 생성 시간 측정
3. JSON-simple 한계
- Map 기반 설계:
hash 함수
호출로 성능 저하 - 객체 재사용 부족: 반복 생성으로
GC
트리거 - 바이트 배열 변환 부족:
String
생성 후 변환으로 오버헤드 발생
4. JSON0 최적화
- 직접 객체 생성:
createJSON()
및createJSONArray()
메서드 사용 - 객체 재사용:
reset()
메서드로 메모리 최적화 - 바이트 변환:
toBytes()
메서드로 직접byte[]
생성
5. 성능 결과
- JSON-simple:
1,000,000 객체
생성 시간3초
- JSON0:
1,000,000 객체
생성 시간1.35초
(성능 2배 향상)
결론
- 핵심 팁:
JSON0
은Maven Central
에서 제공되며,1.0.8
버전 사용 권장 (
태그 참조) - 실무 적용: 고성능 시스템 개발 시
JSON-simple
대신JSON0
사용으로 처리량 2배 향상 가능 - 성능 트레이드오프:
JSON0
은개발자 친화적 API
를 유지하면서도성능 최적화
에 초점을 맞춤