YAML

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2026.04.11
조회수
3
버전
v1

YAML

개요

YAML(YAML Ain't Markup Language)은 데이터 직렬화 형식 중 하나로, 사람이 읽고 쓰기 쉬운 구조를 지향하는 구성 파일 형식으로 널리 사용됩니다. 주로 설정 파일, 구성 관리, 데이터 교환 등 다양한 소프트웨어 개발 및 인프라 환경에서 활용되며, JSON이나 XML과 유사한 목적을 가지지만 더 직관적인 문법을 제공합니다. YAML은 Python, Ruby, JavaScript 등 다양한 프로그래밍 언어에서 파서가 제공되며, 특히 컨테이너 오케스트레이션 도구인 Kubernetes, CI/CD 도구인 GitHub Actions, Ansible 등의 구성 파일로 자주 사용됩니다.

YAML은 재귀적 약자인 "YAML Ain't Markup Language"의 의미처럼, 본래는 "Yet Another Markup Language"에서 유래했으나, 마크업 언어가 아닌 데이터 직렬화 형식임을 강조하기 위해 이름이 변경되었습니다.


문법 특징

YAML은 들여쓰기(indentation) 기반의 계층 구조를 사용하며, 마크업 태그나 괄호 없이도 데이터의 구조를 명확하게 표현할 수 있습니다. 주요 문법 요소는 다음과 같습니다.

1. 들여쓰기와 계층 구조

YAML은 공백(space) 기반의 들여쓰기를 사용하여 데이터의 계층을 표현합니다. 탭(tab) 문자는 사용하지 않아야 하며, 공백 2칸 또는 4칸이 일반적입니다.

server:
  host: localhost
  port: 8080
  ssl: false

2. 데이터 타입

YAML은 다양한 데이터 타입을 지원합니다.

  • 스칼라 (Scalar): 문자열, 숫자, 불리언 등 단일 값

      name: "John Doe"
      age: 30
      active: true
      

  • 시퀀스 (Sequence, 리스트): 대시(-)로 시작하는 항목들의 목록

      fruits:
        - apple
        - banana
        - orange
      

  • 매핑 (Mapping, 객체/딕셔너리): 키-값 쌍의 집합

      user:
        id: 1001
        role: admin
      

3. 멀티라인 문자열

긴 텍스트를 표현할 때는 | (리터럴 블록) 또는 > (폴드 블록)을 사용할 수 있습니다.

description: |
  이는 여러 줄로
  작성된 텍스트입니다.
  줄바꿈이 그대로 유지됩니다.

summary: >
  이 텍스트는 단일 줄로
  합쳐집니다. 공백으로 구분됩니다.

4. 앵커(anchor)와 별칭(alias)

중복되는 데이터를 줄이기 위해 &로 앵커를 지정하고 *로 별칭을 참조할 수 있습니다.

defaults: &defaults
  timeout: 30
  retries: 3

service1:
  <<: *defaults
  url: https://api.example.com

service2:
  <<: *defaults
  url: https://backup.example.com


주요 사용 사례

1. Kubernetes 구성 파일

Kubernetes는 YAML을 주요 구성 형식으로 사용합니다. 파드, 서비스, 디플로이먼트 등의 리소스를 YAML로 정의합니다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest

2. CI/CD 파이프라인 (GitHub Actions, GitLab CI)

자동화된 빌드 및 배포 프로세스를 YAML로 정의합니다.

name: CI Pipeline
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: echo "Hello, CI!"

3. Ansible 플레이북

서버 구성 자동화 도구인 Ansible은 YAML 기반의 플레이북을 사용합니다.

- hosts: webservers
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present


장점과 단점

장점 설명
가독성 높음 들여쓰기 기반의 구조로 사람이 쉽게 읽고 작성 가능
간결한 문법 괄호나 따옴표가 최소화되어 코드가 간결함
다양한 언어 지원 대부분의 프로그래밍 언어에서 파서 제공
단점 설명
들여쓰기 민감 공백 오류 시 파싱 실패 가능
보안 취약성 일부 파서에서 코드 실행이 가능한 태그 사용 시 위험
표준화 부족 버전별로 문법 차이가 존재 (YAML 1.1 vs 1.2)

참고 자료 및 관련 문서

YAML은 현대 소프트웨어 개발 인프라에서 핵심적인 역할을 하는 구성 파일 형식으로, 그 간결성과 유연성 덕분에 지속적으로 인기를 유지하고 있습니다. 다만, 정확한 들여쓰기와 안전한 사용이 중요하므로, 편집기의 YAML 확장 기능이나 검증 도구를 활용하는 것이 권장됩니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?