시스템(Linux)

YAML(YAML Ain't Markup Language)에 대해 알아보겠습니다.

forward error correction Circle 2024. 10. 25. 08:36
반응형

Ⅰ. YAML (YAML Ain't Markup Language) 이란?

 사람이 쉽게 읽을 수 있는 데이터 직렬화 형식입니다. YAML은 데이터를 구조화하고 표현하기 위한 간단한 문법을 가지고 있으며, 주로 구성 파일(config files)이나 데이터 저장에 많이 사용됩니다. 

Ⅱ. YAML (YAML Ain't Markup Language) 의 특징

ⅰ. 가독성
YAML은 사람이 쉽게 읽을 수 있는 형식으로 설계되었습니다. XML이나 JSON에 비해 문법이 단순하며, 불필요한 괄호와 태그를 사용하지 않아 직관적입니다. 들여쓰기를 사용하여 데이터의 계층 구조를 표현합니다.
ⅱ. 구조적 표현
YAML은 들여쓰기를 기반으로 데이터의 계층을 표현합니다. 데이터의 중첩을 위해 중괄호나 대괄호 대신 들여쓰기를 사용하여 좀 더 시각적으로 이해하기 쉽습니다.
ⅲ. 자료형 지원
YAML은 문자열, 숫자, 리스트, 딕셔너리, 부울값 등 다양한 기본 자료형을 지원합니다. 이러한 자료형들은 들여쓰기나 구분자를 통해 명확하게 표현됩니다.
ⅳ. 다양한 언어와의 호환성
YAML은 파이썬, 루비, 자바, 자바스크립트 등 여러 언어에서 지원되며, 특히 구성 파일을 관리하는 데 자주 사용됩니다. 예를 들어, Docker Compose, Ansible, Kubernetes 등의 도구에서 YAML을 사용하여 설정을 정의합니다.
ⅴ. JSON과 호환
YAML은 JSON과 호환이 가능합니다. 즉, JSON 형식의 데이터는 YAML로 변환할 수 있고 그 반대도 가능합니다. JSON과 YAML의 주요 차이점은 YAML이 좀 더 읽기 쉬운 형식을 사용한다는 점입니다.

Ⅲ. YAML (YAML Ain't Markup Language) 의 기본 문법과 사용법

ⅰ. 키-값 쌍
YAML의 기본 데이터 구조는 키: 값의 형태를 가집니다.

name: Feccle
age: 33

위 예시는 name이라는 키에 Feccle, age라는 키에 33이라는 값을 할당한 YAML 데이터입니다.

ⅱ. 리스트
리스트는 - 기호를 사용하여 정의됩니다.

fruits:
  - apple
  - mango
  - melon


fruits 키는 리스트를 가지고 있으며, 리스트 항목은 각각 apple, mango, melon입니다.

ⅲ. 딕셔너리(사전 구조)
딕셔너리는 : 기호를 사용하여 정의되며, 값으로 또 다른 키-값 쌍을 가질 수 있습니다.

person:
  name: Feccle
  age: 33
  address:
    street: Main Street
    city: Anytown
    zipcode: 12345


위 예시에서 person은 이름, 나이, 그리고 주소를 포함하는 딕셔너리입니다. address는 다시 중첩된 딕셔너리로, 거리, 도시, 우편번호를 포함합니다.

ⅳ. 주석
YAML에서 주석은 # 기호를 사용합니다.

# 이 사람의 정보입니다.
name: Feccle
 # 나이 정보
age: 33


ⅴ. 다중 줄 문자열
YAML에서는 긴 문자열을 여러 줄로 나누어 표현할 수 있습니다. 두 가지 방식이 있습니다:

|를 사용: 원래 형식 그대로 줄바꿈을 포함한 문자열을 표현.
>를 사용: 줄바꿈을 공백으로 변환하여 한 줄로 이어붙인 문자열을 표현.

description: |
  This is a multi-line string.
  It preserves newlines.
summary: >
  This is a multi-line string.
  But it will be folded into a single line.


ⅵ. null 값
YAML에서 null 값을 표현하려면 null이나 ~을 사용합니다.

key_with_no_value: null
another_key: ~

 

ⅶ. 부울값
YAML에서 참(true)과 거짓(false)은 아래와 같이 표현합니다.

is_human: true
is_robot: false

 

Ⅳ. YAML (YAML Ain't Markup Language) 의 사용 예시

ⅰ. Docker Compose 파일
Docker Compose는 YAML을 사용하여 여러 컨테이너를 정의하는 도구입니다.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example


위 예시에서는 web 서비스와 db 서비스를 정의하였습니다. 각각 nginx와 mysql 이미지를 사용하며, db 서비스에는 환경 변수가 설정되어 있습니다.

ⅱ. Ansible 플레이북
Ansible은 IT 자동화를 위한 도구로, YAML을 사용하여 설정을 정의합니다.

- hosts: webservers
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present


위 예시에서는 webservers 호스트 그룹에 nginx를 설치하는 작업을 정의하고 있습니다.

Ⅴ. YAML (YAML Ain't Markup Language) 의 사용 사례

ⅰ. 설정 파일
YAML은 구성 파일에서 자주 사용됩니다. 예를 들어, Kubernetes의 포드, 서비스, 배포 등을 정의하는 데 사용됩니다.

ⅱ. 데이터 직렬화
YAML은 데이터를 직렬화하고 이를 다시 복원하는 데 유용합니다. 사람과 기계가 쉽게 이해할 수 있는 형식으로 데이터를 변환할 수 있습니다.

ⅲ. CI/CD 설정
GitLab CI, CircleCI, TravisCI 등의 CI/CD 도구에서 YAML 파일로 파이프라인을 정의합니다.

Ⅵ. YAML (YAML Ain't Markup Language) 의 장·단점

ⅰ. 장점
  1) 간결한 문법: 들여쓰기를 통한 구조 표현으로 가독성이 높습니다.
  2) 사람 친화적: 매우 쉽게 읽을 수 있어 개발자뿐만 아니라 비개발자도 이해하기 쉽습니다.
  3) JSON과 호환: JSON으로부터 쉽게 변환할 수 있습니다.
ⅱ. 단점
  1) 문법 오류 발생 가능성: 들여쓰기 오류나 문법의 미묘한 차이로 인해 오류가 발생할 수 있습니다.
  2) 복잡한 구조: 대규모 데이터 구조를 표현할 때는 가독성이 떨어질 수 있습니다.

반응형