My Boundary As Much As I Experienced

YAML 파일이 뭘까? 본문

Algorithm/Data Structure

YAML 파일이 뭘까?

Bumang 2024. 4. 23. 16:13

예전 프로젝트에서 github action을 사용할 때 yaml 스크립트를 다룬 적이 있다.

배포 시 작동하며 환경 변수를 firebase hosting에 제공하는 용도로 YAML을 썼던 기억이 있는데..

 

그땐 그냥 YAML이라는 생소한 포맷의 스크립트는 뭔가 파이썬 처럼 들여쓰기로 문법 구분하구나. 라고만 생각하고 넘어갔다.

그런데 node.js 파일 모듈을 다루면서 gray-matter라는 라이브러리를 사용하는데 yaml 파일에서 메타데이터를 뽑는 예제를 보고

한 번 정리해야겠다 싶어서 정리한다.

 

YAML의 역사

YAML은 2001년에 Clark Evans, Ingy döt Net, 그리고 Oren Ben-Kiki에 의해 만들어졌다. 이들은 데이터를 직렬화하는 방법으로 XML의 복잡성을 단순화하고자 했다. 처음에는 "Yet Another Markup Language"라는 의미의 약어였지만, 나중에는 "YAML Ain't Markup Language"로 변경되어, YAML이 마크업 언어보다는 데이터 중심의 포맷임을 강조하였다.

 

*데이터 직렬화란?

데이터 직렬화는 데이터 구조나 객체 상태를 저장하거나 전송할 수 있는 포맷(예: JSON, XML, YAML 등)으로 변환하는 과정을 말한다. 이 과정을 통해 프로그램이 실행되는 한 컴퓨터나 애플리케이션에서 다른 컴퓨터나 애플리케이션으로 데이터를 쉽게 전송하거나 저장할 수 있다.

 

(포드가 공장 대량생산을 위해 모든 부품 규격을 통일했듯이, 각기 다른 사용자가 데이터를 주고받고 사용하기 편하게 하기위해 데이터를 일정한 포맷으로 가공하는게 데이터 직렬화라고 이해했다..)

 

만들어진 목적

YAML의 주요 목적은 가독성이 좋고 인간이 쉽게 읽고 작성할 수 있는 직렬화를 하기 위함이다. 이렇게 직렬화를 하여 다양한 프로그래밍 언어에 걸쳐 데이터를 교환할 수 있게 해준다. YAML은 XML이나 JSON과 같은 다른 데이터 직렬화 포맷의 대안으로, 특히 구성 파일이나 데이터 저장에 적합하다.

 

YAML은 그 간결함과 유연성으로 인해, 소프트웨어 개발에서 널리 사용되는 중요한 도구가 되었다. GitHub Actions와 같은 자동화 도구뿐만 아니라, 많은 현대적인 애플리케이션과 인프라 관리 도구에서도 핵심적인 역할을 한다.

 

YAML의 기본 구성 요소

  • 스칼라: 단일의, 불분할 값(예: 문자열, 숫자).
  • 리스트: 순차적인 요소를 갖는 배열 또는 목록.
  • : 키와 값의 쌍으로 구성된 구조.

예시

name: John Doe
age: 30
married: true
children:
  - name: Jane Doe
    age: 10
  - name: Doe Jr.
    age: 5
languages:
  - English
  - French

이 예에서 name, age, married는 스칼라 값이며, childrenlanguages는 리스트이다. children 리스트의 각 요소는 맵이다.

(브라켓 없는 JSON이네?)

주의점

YAML은 들여쓰기에 매우 엄격하기 때문에, 탭 대신 공백을 사용해야 하며, 들여쓰기 수준을 정확하게 유지해야 한다. 또한, 데이터가 복잡해질수록 해석하기 어려워질 수 있으므로 주의가 필요하다고 한다.

 

 

Github Action 외에 쓰이는 곳

YAML은 다양한 소프트웨어 개발 도구와 시스템에서 설정 파일로 사용된다. 예를 들어, Docker의 docker-compose.yml, Kubernetes의 설정 파일, 여러 프레임워크의 구성 파일 등에서 널리 사용된다.