Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- try-catch
- 메서드
- 개발자
- 문자 단위 스트림
- node.js
- 자바
- 새벽공부
- 다형성
- 바이트 단위 스트림
- 상속
- MPA
- ArrayList
- 코딩
- 보조 스트림
- throws
- 초보개발자
- 인스턴스
- 배열
- exception
- Java
- 졸리다
- 자료형
- FileInputStream
- 예외 처리
- SSR
- 코린이
- 백엔드
- 인터페이스
- 파이팅
- 변수
Archives
- Today
- Total
SHUSTORY
JSON, XML, YAML 본문
728x90
🕷️ JSON, XML, YAML : 데이터 기술 형식
- JSON, XML, YAML은 공통적으로 데이터를 기술하는 형식이다.
🕸️ 이것들이 필요한 이유가 뭘까?
- 서비스들이 고도로 발전함에 따라 문자나 숫자를 넘어 복잡한 데이터를 주고받아야 하는 상황이 발생한다.
예를 들어, DB에 있는 표 형태의 정보를 유저에게 문자 형식으로 보내주고 싶을 때와 같이..
복잡한 데이터를 깔끔한 형식으로 정리해 담는 틀이나 형식이 필요하다.
🕷️ JSON
- JavaScript Object Notation
- JS에서 객체를 만들 때 사용하는 표현식을 의미
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"zipcode": "10001"
},
"hobbies": ["music", "sports"]
}
- 특징
- 텍스트 기반의 데이터 형식으로, key-value 쌍의 구조를 가진다.
- 사람과 기계 모두 이해하기 쉬우며 용량이 작다.
- 서버와의 통신 규약인 REST API에서 많이 사용된다.
- 주석을 사용할 수 없다.
- 모든 프로그래밍 언어에서 JSON을 지원한다.
- 문법 오류에 취약하다.
- 🕸️ WHY?
xml은 열고 닫는 태그가 있어 일부 태그에 오타가 들어있어도 사이트가 전반적으로 작동한다.
반면 json은 컴마 하나만 빼먹어도 해석을 못하게 된다.
- 🕸️ WHY?
- 어디에 사용되고 있을까?
- 프론트엔드 - 백엔드 간 데이터 전송
웹 브라우저와 서버 간 데이터 송수신 시 JSON 형식을 사용하여 응답 및 요청을 주고받는다. - Restful API 응답
대부분의 REST API에서 JSON 형식으로 데이터를 반환하여 웹 애플리케이션이 손쉽게 이를 받아 처리할 수 있도록 한다.
- 프론트엔드 - 백엔드 간 데이터 전송
🕷️ XML
- eXtensible Markup Language
- 태그를 사용하여 데이터를 감싸는 형식으로 HTML과 유사한 구조를 가지며 사용자가 직접 태그를 정의할 수 있다.
- 유효성 검증을 통해 올바르게 작성되었는지 확인 가능하다.
<person>
<name>John</name>
<age>30</age>
<address>
<city>New York</city>
<zipcode>10001</zipcode>
</address>
<hobbies>
<hobby>music</hobby>
<hobby>sports</hobby>
</hobbies>
</person>
🕸️ HTML과의 차이점은 무엇이 있을까?
- 둘 다 마크업 언어라는 공통점이 있으나, 목적과 사용 방법에서 차이점이 발생한다.
- HTML
웹 브라우저에서 표시되는 콘텐츠를 구조화하고 표현하기 위한 목적을 가지고 있다.
미리 정의된 태그들이 있으며, 각 태그는 특정 역할을 수행한다. - XML
다양한 응용 프로그램에서 필요한 데이터 구조를 정의하고,
각 응용프로그램 간 데이터를 교환하고 저장하기 위한 목적을 가지고 있다.
사실.. XML 쓰기 싫어서 JSON, YAML이 나왔다고 한다.. 그지같은 태그들.. 복잡성이랑 오버헤드 미쳤음
구시대적인 프로그램에선 XML만 받는 애도 있어서 아직도 살아남는 거라고 하네요..
- 어디에 사용되고 있을까?
- 웹 서비스
SOAP(simple object access protocol)은 XML 형식으로 요청과 응답 데이터를 전송한다. - 구성 파일
Android의 AndroidManifest.xml(Android 애플리케이션의 구성과 권한 정의 파일),
웹 브라우저의 sitemap.xml(웹사이트의 URL 구조를 정의, 검색 엔진의 크롤링과 인덱싱을 돕는 파일)
등 설정을 구조적으로 정의하는 데 사용된다.
- 웹 서비스
🕷️ YAML
- Yet Another Markup Language / YAML Ain't Markup Language
- YAML은 사람이 읽고 이해하기 쉬운 형태를 가진 데이터 표현 양식이다.
- 사람이 보긴 쉽지만 직렬화가 어렵다는 단점이 있다..
name: John
age: 30
address:
city: New York
zipcode: 10001
hobbies:
- music
- sports
- key-value 쌍으로 표현되지만, 괄호를 사용하지 않고 들여쓰기를 사용한다.
- 주석을 사용할 수 있다.
- 들여쓰기를 통해 데이터의 계층 구조를 표현한다.
- 복잡한 데이터 타입의 표현이 제한적일 수 있다.
- 🕸️ WHY?
예를 들어, JSON의 경우 중첩된 리스트나 다양한 객체 타입과 같이 복잡한 객체와 배열을 {} 및 []를 사용하여 쉽게 구분할 수 있으나, YAML은 들여쓰기와 줄 바꿈을 통해 이러한 구조를 표현해야 하므로 복잡한 데이터 구조를 다루기 어렵다.
- 🕸️ WHY?
- 어디에 사용되고 있을까?
- Python의 Django, Ruby on Rails 등의 프레임워크에서 설정 파일을 YAML 형식으로 작성하곤 한다.
- 구성 파일
Docker의 docker-compose.yml
CI/CD 파이프라인 설정 파일(Github Actions의 .yml 파일)..
🕸️ 왜 어떤 구성 파일에서는 xml이 사용되고 어떤 구성 파일에서는 yaml이 사용되는 걸까?
- 위에서 나와 있듯, XML과 YAML은 서로 다른 장단점을 가지고 있기에 사용 목적 및 환경에 따라 적합한 형식을 선택하게 된다.
XML은 엄격한 데이터 검증, 레거시 시스템 호환성(오래된 시스템과의 호환성 유지)이 필요한 경우에,
YAML은 간결하고 사람이 읽기 쉬운 형식이 필요한 구성 파일(DevOps 및 현대 애플리케이션 설정..)에서 선호하는 편이다.
용량 비교
- JSON
괄호와 콜론, 쉼표 등 최소한의 기호를 사용하여 key-value 쌍을 간결하게 표현하는 데이터 구조로,
동일한 데이터를 표현할 때 상대적으로 용량이 작다. - XML
태그를 사용하여 구조를 나타내기 때문에, 같은 데이터를 표현할 때 태그의 길이만큼 추가 용량이 필요하다.
따라서 JSON보다 더 많은 용량을 차지한다. - YAML
인간이 읽기 쉽게 설계되어 공백과 들여쓰기를 많이 사용한다.
덕분에 가독성은 좋지만, 공백이 많은 경우 JSON보다 더 많은 용량을 차지할 수 있으나
일반적으로 태그가 많은 XML보다는 작은 편이다.
XML, JSON, YAML 특징 한줄요약
- JSON
데이터 표현이 간결하고 가벼워 빠른 전송과 처리가 가능하지만, 문법 오류에 취약하다.
간결하고 가벼운 데이터 전송에 주로 사용된다. - XML
구조가 명확하며 스키마를 통해 검증이 가능하지만, 비교적 복잡하고 용량이 크다.
복잡한 데이터 구조와 문서 형식에 주로 사용된다. - YAML
사람이 읽고 쓰기 쉬우며 간결한 문법을 제공하지만, 복잡한 데이터 타입 표현에는 한계가 있다.
가독성 높은 구성 파일과 설정 파일에 주로 사용된다.