YAML이란?

YAML이란 데이터 표현 양식의 한 종류입니다.
데이터는 다양한 포멧으로 표현될 수 있는데 우리가 일반적으로 사용하는 JSON이나 XML도 표현 양식의 한 종류입니다.

데이터를 포멧에 맞게 사용하는 이유는 타 시스템과 연동할때 생기는 문제를 미연에 방지하기 위해서입니다.
예를들어 데이터를 자기만의 규칙으로 "김철수-163-62kg" 이렇게 표현하면 작성한 당사자는 "이름-키-몸무게"라고 바로 이해할 수 있지만 규칙을 모르는 상태로 해당 데이터를 전달받은 누군가는 쉽게 이해할 수 없기 때문입니다.

위와같이 개인적으로 정의된 데이터를 서로 전달받을때마다 규칙을 함께 전달하기엔 너무 번거롭고, 데이터마다 규칙을 따로 관리하기에는 문서가 너무 많아질 수 있기에 사람들은 가독성이 높고 많은 사람들이 쓰는 데이터 형식으로 저장하곤 합니다.

왜 YAML형식을 쓰나요?

YAML은 최근들어 많이 활용되는 데이터 포멧인데 그 이유는 인간이 보고 이해하기 쉬운 형태를 가지고 있기 때문입니다.
아래는 서버정보를 YAML 포멧으로 작성한 예시입니다.

#YAML
Servers:
  - name: Server1
    administrator: Kim
    created: 20050103132749
    status: active
  - name: Server2
    administrator: Lee
    created: 20210101000000
    status: active

YAML은 기본적으로 들여쓰기(indent)를 원칙으로하며 데이터는 Map(key-value)형식으로 작성되어야 합니다.
작성할때부터 들여쓰기를 잘 구분해서 써야하기 때문에 데이터 포멧이 망가질 염려가 없고 그에따라 가독성도 올라갈 수 있어서 최근들어 개발자들에게 많이 사용되고 있습니다.

그럼 YAML과 이전에 많이 사용되던 JSON을 한번 비교해 보겠습니다. 아래는 같은 서버정보를 JSON포멧으로 작성한 예시입니다.

#JSON
{
  Servers:[
    {
      name: Server1,
      administrator: Kim,
      created: 20050103132749,
      status: active
    },
    {
      name: Server2,
      administrator: Lee,
      created: 20210101000000,
      status: active
    }
  ]
}

사실 JSON도 많이 사용되는 데이터 포멧이며 보기에 가독성도 나쁘지 않이 보입니다.
하지만 JSON은 YAML과 달리 문법상 줄바꿈이나 띄어쓰기를 크게 신경쓰지 않기 때문에 위와같이 읽기 편하게 작성된 JSON이 아닌경우 정말 가독성이 떨어질 수 있습니다.

#JSON
{Servers:[{name:Server1,
administrator:Kim,created: 20050103132749,
status: active},{name:Server2,administrator:Lee,
created:20210101000000,
status:active}]}

위와같이 작성해도 문법상으론 아무런 문제가 없으며 데이터가 늘어날경우 가독성은 더욱 떨어질 수 밖에 없습니다.

YAML 사용법

YAML 파일을 작성할때 주의해야할 사항은 아래와 같습니다.

1. 데이터 정의

YAML은 기본적으로 key-value 형태로 데이터를 정의합니다

name: Server1
administrator: Kim
created: 20050103132749

2. 들여쓰기(indent)

YAML은 들여쓰기로 계층 구조를 표현합니다.
들여쓰기는 기본적으로 2칸 혹은 4칸을 지원합니다.

Server:
  name: Server1
  administrator: Kim
  created: 20050103132749

3. 배열 정의

배열로 여러 데이터를 표현하고 싶을경우 - 기호를 사용해서 표현가능합니다.

#YAML
Servers:
  - name: Server1
    administrator: Kim
    created: 20050103132749
    status: active
  - name: Server2
    administrator: Lee
    created: 20210101000000
    status: active

4. 기타(주석, 띄어쓰기)

주석은 # 기호를 사용하여 작성할 수 있습니다.

# Server Info
Server:
  name: Server1
  administrator: Kim
  created: 20050103132749

YAML을 key-value형태로 작성할 때 반드시 사이에 띄어쓰기가 들어가야 합니다.
그렇지 않은경우 error가 발생할 수 있습니다.

#OK
name: Server1

#Error (not key-value, string)
name:Server1

그밖에 YAML 문법에 대해 좀 더 알고싶으시면 공식 홈페이지 정보를 참고하시는걸 추천드립니다.
YAML 공식 홈페이지: https://yaml.org/

0개의 댓글