XML이란?
XML (eXtensible Markup Language) 은 데이터를 태그(tag) 로 감싸 표현하는 마크업 언어입니다.
🔹 특징
- 태그 기반으로 데이터를 표현합니다.
- 태그는 직접 정의할 수 있어 확장성(extensible) 이 뛰어납니다.
- 구조적 데이터를 표현하는 데 적합합니다.
- 데이터와 표현이 명확하게 구분됩니다.
🔸 예시
<person>
<name>홍길동</name>
<age>25</age>
<email>hong@example.com</email>
</person>
📍 장점
- 사람과 기계 모두에게 가독성이 좋음
- 다양한 시스템 간 데이터 교환 시 범용성 높음
- 명확한 구조와 표현의 구분
📍 단점
- 파일 크기가 상대적으로 큼(태그로 인해 오버헤드가 많음)
- 구문이 다소 복잡할 수 있음
📍 주요 사용처
- 안드로이드 앱 개발에서 UI 레이아웃 정의
- 웹서비스 데이터 전달(SOAP API 등)
- 문서 교환 및 설정 파일(예: Spring Framework의 applicationContext.xml)
JSON이란?
JSON (JavaScript Object Notation) 은 데이터를 키(key)와 값(value)의 쌍으로 이루어진 형태로 표현하는 가벼운 데이터 형식입니다.
🔹 특징
- 데이터를 중괄호 {}와 대괄호 []로 묶어 표현합니다.
- 데이터 표현이 간결하고 가볍습니다.
- 웹과 JavaScript 기반 애플리케이션에서 많이 사용됩니다.
🔸 예시
{
"name": "홍길동",
"age": 25,
"email": "hong@example.com",
"skills": ["Java", "Python", "JavaScript"]
}
📍 장점
- 구조가 간단하고 직관적이라 이해하기 쉬움
- XML보다 데이터 크기가 작아 빠른 전송과 처리 가능
- JavaScript와 호환성이 높아 웹 환경에서 주로 쓰임
📍 단점
- XML만큼 강력한 표현(주석, 메타데이터 등)이 어려움
- 스키마(schema) 정의가 별도로 필요할 수 있음(JSON Schema 등)
📍 주요 사용처
- 웹서비스 API 데이터 송수신(REST API)
- 자바스크립트 기반 프론트엔드 애플리케이션 데이터 교환(React, Vue 등)
- 데이터베이스에 저장하는 문서형 데이터(MongoDB 등 NoSQL DB)
YAML이란?
YAML (YAML Ain't Markup Language) 은 사람이 읽기 쉽고, 간결한 데이터 직렬화 형식으로 JSON의 기능을 확장하여 보다 명확하고 직관적인 형식으로 데이터를 표현합니다.
🔹 특징
- 키와 값을 콜론(:)으로 구분하고 들여쓰기를 사용하여 구조를 나타냅니다.
- JSON과 호환되며 더 간결하게 데이터를 표현합니다.
- 특히 설정 파일로 많이 사용됩니다.
🔸 예시
person:
name: 홍길동
age: 25
email: hong@example.com
skills:
- Java
- Python
- JavaScript
📍 장점
- 매우 간결하여 가독성이 뛰어남
- 주석을 허용하여 설명을 추가할 수 있음
- JSON의 구조를 포함하며 확장된 표현 가능
📍 단점
- 들여쓰기(Indentation)에 민감하여 실수가 발생할 수 있음
- XML보다 복잡한 메타데이터 표현이 어려움
- 데이터가 복잡해질수록 이해가 어려워질 수 있음
📍 주요 사용처
- 다양한 설정 파일 관리 (Spring Boot, Docker Compose, Kubernetes 설정 등)
- 간단한 데이터 직렬화 및 구성 파일

🚩 언제 어떤 포맷을 쓰는 게 좋을까요?
-
XML: 명확한 구조와 복잡한 데이터를 표현하거나, 안드로이드 앱의 레이아웃이나 문서 표현을 할 때 좋습니다.
-
JSON: 웹 기반 API나 데이터 송수신 시 가장 효율적입니다. 특히 REST API와 JavaScript 환경에 적합합니다.
-
YAML: 설정 파일에 가장 적합합니다. 간결성과 가독성을 중시할 때 주로 사용됩니다.
🎯 한 줄 요약
- XML은 태그 기반으로 범용적이지만 복잡하고 무거움.
- JSON은 키-값 형태로 가볍고 직관적이며 웹 환경에 강력함.
- YAML은 간결하고 가독성이 뛰어나 설정 파일에 최적화됨.