← 블로그

JSON vs YAML vs XML: 언제 무엇을 쓸까?

2025년 1월 25일 · 8분 읽기

설정 파일을 만들 때, API 응답 포맷을 정할 때, "뭘로 하지?" 고민해본 적 있으시죠? JSON, YAML, XML—셋 다 데이터를 표현하는 포맷인데, 각각 언제 쓰는 게 좋을까요?

한눈에 비교

같은 데이터를 세 가지 포맷으로 표현해보겠습니다.

JSON

{
  "name": "홍길동",
  "age": 30,
  "skills": ["JavaScript", "Python"],
  "address": {
    "city": "서울",
    "zip": "12345"
  }
}

YAML

name: 홍길동
age: 30
skills:
  - JavaScript
  - Python
address:
  city: 서울
  zip: "12345"

XML

<person>
  <name>홍길동</name>
  <age>30</age>
  <skills>
    <skill>JavaScript</skill>
    <skill>Python</skill>
  </skills>
  <address>
    <city>서울</city>
    <zip>12345</zip>
  </address>
</person>

벌써 느낌이 오시죠? YAML이 가장 간결하고, XML이 가장 장황합니다.

JSON: 웹의 표준

장점:

  • JavaScript에서 바로 사용 가능 (이름부터 JavaScript Object Notation)
  • 거의 모든 언어에서 지원
  • 파싱 속도 빠름
  • 웹 API의 사실상 표준

단점:

  • 주석 불가 (설정 파일로는 불편)
  • 따옴표, 콤마 등 엄격한 문법
  • 사람이 직접 수정하기엔 번거로움

언제 쓸까: API 응답, 웹 데이터 교환, 프로그래밍에서 데이터 저장

YAML: 사람 친화적

장점:

  • 가독성 최고 (들여쓰기로 구조 표현)
  • 주석 가능 (#으로)
  • 따옴표 대부분 생략 가능
  • 멀티라인 문자열 지원

단점:

  • 들여쓰기 실수하면 에러 (탭/스페이스 혼용 주의)
  • 파싱 속도 JSON보다 느림
  • 복잡한 기능(앵커, 별칭)은 혼란스러울 수 있음

언제 쓸까: 설정 파일 (Docker Compose, Kubernetes, GitHub Actions), 사람이 자주 편집하는 파일

XML: 여전히 살아있다

장점:

  • 스키마 검증 (XSD로 엄격한 타입 체크)
  • 속성(attribute) 지원
  • 네임스페이스로 충돌 방지
  • XSLT로 변환 가능

단점:

  • 장황함 (태그가 데이터보다 많을 때도...)
  • 파싱 복잡하고 느림
  • 요즘 웹에서는 거의 안 씀

언제 쓸까: 레거시 시스템, SOAP API, 엄격한 스키마가 필요할 때, 오피스 문서 포맷 (docx는 내부적으로 XML)

한 장 요약

JSON YAML XML
가독성 중간 좋음 나쁨
주석
파싱 속도 빠름 중간 느림
스키마 검증 JSON Schema 제한적 XSD (강력)
주 용도 API, 웹 설정 파일 레거시, 문서

실전 선택 가이드

  • REST API 만든다 → JSON
  • CI/CD 설정 파일 → YAML (GitHub Actions, GitLab CI)
  • 컨테이너 오케스트레이션 → YAML (Docker Compose, Kubernetes)
  • 사내 레거시 시스템 연동 → 아마 XML
  • 브라우저 로컬 스토리지 → JSON

결론: 새 프로젝트라면 대부분 JSON이나 YAML입니다. XML은 특별한 이유가 있을 때만.