YAML
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 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.