XML, JSON, YAML은 공통적으로 데이터를 기술하는 데 사용되는 형식들이다.
컴퓨터는 데이터를 전송할 때, 줄바꿈이나 띄어쓰기 없이 한 줄로 된 데이터만 주고 받는다.
이러한 데이터는 사람이 읽기엔 가독성이 많이 떨어진다.
사람이 작성할 때에는 보기 편한 방식으로 작성하고,
전송할 때는 엔터와 탭을 모두 삭제한 형태인 한 줄의 문자열로 전송된다.
이렇게 한 줄로 만드는 것을 minify라고 한다.
단순히 사람이 작성한 데이터를 한 줄로 바꿔 전송해준다는 개념은 아니다.
테이블 형태와 같이 어떠한 구조를 갖는 데이터를 전송할 수 있도록 해주는 역할이 가장 크다.
구조화 되어있는 정보를 주는 쪽과, 받는 쪽이 의도를 맞게 잘 주고받기 위해선
양측 사이에 잘 설계되어 합의된 어떤 형식이 필요할 것이다.
여기에 사용되는 형식 중 가장 널리 사용된 것들이 XML, JSON이다.

이와 같이 복합적인 구조를 가진 이 정보를 어떻게 서버 >>> 클라이언트 간에
주고받기 적합한 한 줄의 데이터로 표현을 하려면?

특징
XML은 HTML (XML 형식으로 web을 표현할 수 있도록 만든 것) 과 같이 <태그>라는 형식을 사용한다.
XML은 각각의 태그명이 항목명이 되고, 그 사이에 내용이 들어가는 형식을 띈다.
순수 데이터값이 들어갈 수 있고, 그 안에 다른 태그들이 중첩으로 들어갈 수도 있다.
HTML 처럼
단점
태그들을 일일이 열고 닫아야해서 전체 글자수도 늘어나 장황해보임
작성하기 번거로움
인덴테이션 형태 ( 줄바꿈으로 보기 좋게 구분된 상태 ) 로 바꾸어도
한 눈에 알아보기엔 좋은 형태가 아님
이러한 면에서 강점을 갖는 또 다른 형식이 바로 JSON이다.

특징과 장점
자바 스크립트의 객체 표기법인 JSON은 보다 간결한 형태로 구조화된 정보를 표시
훨씬 눈에 잘 들어오고, 코드량도 XML에 비해 적은 것을 볼 수 있음
간결하고 작성하기 쉽기에 많은 분야에서 쓰이는 XML을 대체해나감
하지만 XML이 JSON에 뒤떨어지기만 하는 것은 아니다.
단점
JSON은 문법 오류에 취약하다.
콤마 하나 잘못치거나, 브라켓 하나를 빼먹으면 문서 자체가 해석이 안된다.
XML은 열고 닫는 태그가 있어 오기가 있는 부분의 바깥 쪽은 컴퓨터가 읽을 수 있다.
XML과 달리 주석을 달 수 없다.
XML은 요구되는 사용처마다 요구되는 구조와 형태를 잘 거쳤는지
스키마라는 것을 통해 검증할 수 있다.
어디에 무엇이 있어야하는지 등의 요구사항을 XSD 형식의 문서로
명시해놓은 문서라고 보면 된다.
( 왼쪽이 XML, 오른쪽이 스키마 )

어떤 엄격한 형식의 XML이 필요한 곳에서 문서를 미리 검증할 때 유용하게 사용할 수 있다.
구글에 XML XSD 라는 것을 검색해보면, XML에서 XSD를 유추하거나, XSD로 XML을
검사하는 등 무료 기능을 사용해 볼 수 있다.
JSON은 자체적으로 이런 기능이 없기에, 직접 프로그래밍 해서 만들어야한다.
이와 같은 각각의 장단점을 고려해 활용해야 한다.
XMLJSON
특징
YAML은 데이터를 한 줄로 실어보내는 것이 아닌, 사람이 보기 좋게 작성하는 데 목적을 둔다.
YAML을 작성할 때는 파이썬처럼 줄바꿈, 태그가 필요 요소다.
이를 어길 시 정보가 파괴되기 때문에, YAML 문서는 minify 하지 않는다.
인덴팅 ( 들여쓰기 )을 사용해서 직관적으로 정보 구조를 표시,
배열 요소들은 대시를 사용해서 표시한다.
주석도 사용 가능하고 특히 편리한 점은
상속을 사용해 여러 데이터를 효율적으로 작성할 수도 있다.
이처럼 쓰고있는 사람의 편이를 우선시하는 형식이기 때문에
도커컴포즈, 스프링 등의 설정 파일에 많이 사용된다.
구글에 JSON to YAML을 검색하면 JSON을 YAML로 바꾸었을 때의 결과를 확인할 수 있다.
참고 영상 : 얄팍한 코딩사전