YAML(YAML Ain't Markup Language) - 사람이 읽기 쉬운 데이터 형식

이름부터 심상치 않은 이녀석... 웹 프론트 개발을 할 때는 자주 만나지는 않았지만, 이미지 생성 AI 모델인 stable diffusion 구동을 위해 이런저런 작업을 하던 도중 YAML 파일의 내용을 바탕으로 아나콘다 가상환경을 생성할 일이 있었다.(requirements.txt 와 비슷한 역할로) 그렇게 접하게 된 YAML 파일. 꼭 가상환경의 구성 외에도 이런저런 config 용도로 많이 사용되는 듯 한데, 이 파일은 어떤 형식인지 궁금해서 찾아보고 정리하게 되었다.

YAML은 사람이 읽기 쉽고 간결한 데이터 직렬화 형식이다. 다른 데이터 형식인 XML이나 JSON과 같은 용도로 사용되지만, 가독성이 높고 작성이 간편한 점에서 차별화된다. YAML은 주로 애플리케이션 설정 파일, 데이터 파일, 구성 정보 등을 저장하는 데 자주 사용된다.

 

1. YAML의 기본 개념

YAML은 데이터를 계층 구조로 표현하며, 들여쓰기를 사용하여 데이터 간의 관계를 나타낸다. 예를 들어, JSON에서는 중괄호({})를 사용하여 데이터를 구조화하지만, YAML에서는 들여쓰기만으로 같은 구조를 나타낼 수 있다. YAML은 프로그래머뿐만 아니라 비전문가도 쉽게 이해할 수 있도록 설계되었다. 구문이 간단하고 사람이 읽기 쉽게 구성되어 있어 설정 파일이나 데이터를 작성할 때 유용하다.

# 서버 설정 정보
server:
  name: my-server
  port: 8080
  enabled: true

# 데이터베이스 설정 정보
database:
  host: localhost
  username: admin
  password: secret
  tables:
    - users
    - products
    - orders

이 예시는 서버와 데이터베이스 설정을 담고 있다. 각 항목은 들여쓰기를 통해 계층 구조를 표현하며, 리스트는 - 기호를 사용하여 정의된다.

 

2. YAML의 주요 특징

  1. 간결한 구문: YAML은 데이터 간의 구조를 들여쓰기로 표현하기 때문에 중괄호나 대괄호가 필요없다. 이는 XML이나 JSON에 비해 훨씬 간결한 표현을 가능하게 한다.
  2. 높은 가독성: YAML은 사람이 읽고 쓰기 쉽게 설계되었다. 데이터가 중첩되거나 복잡해도 들여쓰기를 통해 직관적으로 구조를 파악할 수 있다.
  3. 유연한 데이터 표현: YAML은 다양한 데이터 타입을 지원한다. 문자열, 숫자, 리스트, 딕셔너리 등 프로그래밍에서 자주 사용하는 구조를 YAML에서도 간단하게 표현할 수 있다.
  4. 주석 지원: YAML 파일에서 주석을 사용할 수 있어, 코드 설명이나 주석을 통해 문서화 작업을 쉽게 할 수 있다. 주석은 # 기호로 시작하며, 주석 뒤의 내용은 무시된다.

 

3. YAML 파일의 장점

  1. 쉬운 유지보수: YAML은 설정 파일을 읽고 수정해야 하는 사용자에게 매우 편리한 형식입니다. 코드의 구조를 쉽게 이해할 수 있으며, 주석을 추가해 설명을 더할 수 있어 유지보수가 용이합니다.
  2. 데이터의 직관적인 표현: YAML은 데이터를 시각적으로 직관적으로 표현할 수 있다. 특히, 복잡한 계층구조를 표현할 때도 들여쓰기를 사용해 쉽게 구조를 파악할 수 있다.
  3. 다양한 프로그래밍 언어와의 호환성: YAML은 파이썬, 자바, C#, PHP 등 다양한 프로그래밍 언어에서 지원된다. 대부분의 언어에는 YAML 파서를 쉽게 사용할 수 있는 라이브러리가 존재한다. 파이썬에서는 PyYAML 같은 라이브러리를 통해 YAML 파일을 쉽게 파싱하고 데이터를 처리할 수 있다.

 

4. YAML 사용 예시

  1. 애플리케이션 설정 파일: YAML은 많은 소프트웨어에서 설정 파일로 사용된다. 내가 처음 경험한 YAML 파일도 그러하다. 예를 들어, Python의 Django, Java의 Spring Boot 같은 프레임워크는 설정 파일로 YAML을 사용할 수 있다. 환경 설정이나 데이터베이스 연결 정보 등을 YAML로 저장하여 애플리케이션을 유연하게 구성할 수 있다.
  2. CI/CD 파이프라인: 지속적 통합 및 배포(CI/CD) 도구인 Jenkins, GitLab CI, CircleCI 등에서 YAML을 사용해 빌드 및 배포 파이프라인을 정의할 수 있다. 예를 들어, GitLab CI에서 .gitlab-ci.yml 파일을 사용하여 프로젝트의 빌드 및 테스트 과정을 정의할 수 있다.

 

5. YAML vs JSON

사실 YAML과 JSON은 매우 비슷한 역할을 한다. 두 형식 모두 데이터를 직렬화하기 위한 것이며, 계층 구조를 지원한다. 그러나 YAML은 JSON보다 가독성에 더 중점을 두고 있다. JSON에서는 {, }, : 같은 구분 기호를 많이 사용하지만, YAML은 들여쓰기를 사용하여 이러한 기호를 생략할 수 있다. YAML을 한 번 이해하면 복잡한 데이터 구조도 간단하게 표현할 수 있으니, 잘 숙지해서 사용하면 좋을 듯 하다.

728x90

'🔨 개발 > 📚 개발지식모음집' 카테고리의 다른 글

파이썬 람다 함수 사용법 정리  (2) 2024.11.04
20240903 requirements.txt 문제  (0) 2024.09.03
20240808  (0) 2024.08.08
20240807  (0) 2024.08.07
20240806  (0) 2024.08.06

+ Recent posts