SHUSTORY

JSON, XML, YAML 본문

CS

JSON, XML, YAML

어서오시우 2024. 11. 4. 17:46
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은 컴마 하나만 빼먹어도 해석을 못하게 된다.
  • 어디에 사용되고 있을까?
    • 프론트엔드 - 백엔드 간 데이터 전송
      웹 브라우저와 서버 간 데이터 송수신 시 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은 들여쓰기와 줄 바꿈을 통해 이러한 구조를 표현해야 하므로 복잡한 데이터 구조를 다루기 어렵다.
  • 어디에 사용되고 있을까?
    • 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
    사람이 읽고 쓰기 쉬우며 간결한 문법을 제공하지만, 복잡한 데이터 타입 표현에는 한계가 있다.
    가독성 높은 구성 파일과 설정 파일에 주로 사용된다.

'CS' 카테고리의 다른 글

API  (5) 2024.11.02
Frontend / Backend  (5) 2024.11.01
MPA / SPA  (2) 2024.10.30
CSR / SSR  (6) 2024.10.23
Interface  (1) 2024.10.18