개발/개발 공통

[파일 형식] YAML 파일의 형식과 문법에 대해서

growing-dev 2023. 2. 10. 22:15

프로그래밍을 하다 보면 실제 언어로 구현된 파일뿐만 아니라 어떤 데이터나 환경 설정 등이 필요한 경우들이 있다. 그럴 때 필요한 것이 특정한 파일 형식이다. 내가 정한 문법대로 내 프로그램에서만 사용해도 상관없지만 다른 프로그램들과의 호환성을 위해서는 많이 사용되는 형식을 따르면 훨씬 더 활용도가 높아질 것이다. 대표적인 파일 형식들에 대해서 알아보고 어떻게 사용하는지 알아보도록 하겠다. 첫 번째로 YAML 파일 형식과 문법에 대해서 알아보겠다.

 

YAML이란?

yml 이나 yaml과 같은 확장자를 가진 파일이다. 출력 가능한 유니코드 문자 집합(UTF-8, UTF-16 등)을 이용한다.
다른 시스템과 상호작용할 수 있는 데이터를 표현하는 다른 형식인 XML이나 JSON보다는 읽기 쉽게 표현할 수 있다.

XML과 JSON에 비해 좀 더 사람 친화적으로 작성할 수 있어서 가독성을 높였다고 한다. 그래서 고급 컴퓨터 언어에 친화적이고 최근에 다양한 고급언어를 사용하는 시스템에서 굉장히 많이 사용하고 있는 것 같다.

 

 

VS Code YAML 확장 설치

VS Code에서 YAML 을 편리하게 작성하고 검증해 보기 위해 확장을 설치했다. YAML와 learn-yaml 확장이다.

실시간으로 검증할 수도 있고 Ctrl+Shift+O 나 Ctrl+Space 와 같은 기능으로 탐색이나 추천 등이 가능하다.

 

YAML의 간단한 문법

---
 doe: "a deer, a female deer"
 ray: "a drop of golden sun"
 pi: 3.14159
 xmas: true
 french-hens: 3
 calling-birds:
   - huey
   - dewey
   - louie
   - fred
 xmas-fifth-day:
   calling-birds: four
   french-hens: 3
   golden-rings: 5
   partridges:
     count: 1
     location: "a pear tree"
   turtle-doves: two

출처 : https://www.cloudbees.com/blog/yaml-tutorial-everything-you-need-get-started

 

문서의 시작과 끝

  • 문서는 --- 으로 시작하고 ... 으로 끝을 표시할 수 있다. 하지만 둘 다 굳이 사용하지 않아도 된다.

 

구분(인덴트)

  • 각 개념/레벨별로 구분은 띄어쓰기 2개 혹은 4개로 할 수 있다.
  • 너무 길어지지 않게 일반적으로 2개를 권장한다.

 

데이터의 선언

  • : 을 기준으로 key: value 의 형태로 데이터를 표현한다.
  • : 뒤에는 무조건 띄어쓰기를 해야 한다. 아래 띄어쓰기를 안 했을 때 오류가 나오는 것을 볼 수 있다.

  • { } 와 같은 형태로 저장도 가능하다.

 

 

데이터 자료형

  • 자료형은 int, bool, string을 지원한다.
 int_type: 0
 bool_type: true
 string_type: "test"
  • Object는 아래 두 가지 형태가 가능하다.
 object_type: 
   object_1: "first"
   object_2: "second"

 object_type2: {
   object_1: "first",
   object_2: "second"
 }
  • List는 아래와 같이 작성할 수 있다.
 list_type:
   - list1
   - list2
   
 list_type2: [
   list1, list2
 ]

 

텍스트 표현

  • 여러 줄을 표시할 때 | 를 사용하면 실제로 줄 바꿈이 포함되어서 저장된다.
  • 한 줄로 다 붙이고 싶을 때는 > 를 사용한다.
 multi_line: |
  I'm growing-dev.
  Let's study!

 single_line: >
  I'm 
  growing-dev.

 

기타 다른 문법

  • 주석은 # 로 작성한다.
  • 반복되는 변수를 저장하고 사용할 수 있는 alias 기능이 있다.
 service1:
   config: &service_config
     env: prod
     retries: 3
     version: 4.8
 service2:
   config: *service_config
 service3:
   config: *service_config

출처 : https://spacelift.io/blog/yaml

service_config 변수에 env, retries, version 정보를 포함시키고, 나머지 service에 공통적으로 활용하는 예제이다.

 

 

결론

YAML 형식은 파이썬 형식과 매우 흡사하게 확실히 사용자 친화적이며 고급 언어와 맥락을 같이하는 것으로 보인다.

더 이상의 특별한 형식은 많이 추가가 되지 않을 것 같다. YAML을 잘 이해하고 몇 번 작성해 보면 파일과 데이터를 편하게 다룰 수 있을 것 같다.

 

반응형