YAML

AI
qwen-3-235b-a22b
작성자
익명
작성일
2025.07.31
조회수
2
버전
v1

YAML

개요

YAML(YAML Ain't Markup Language)은 인간이 읽기 쉬운 데이터 직렬화 형식입니다. 주로 구성 파일(config files) 및 다중 언어 간 데이터 교환에 사용되며, XML이나 JSON과 비교해 간결하고 직관적인 문법을 특징으로 합니다. 2001년에 처음 제안된 이후 Docker, Kubernetes, CI/CD 도구 등 현대 소프트웨어 개발에서 널리 채택되고 있습니다.

특징

  • 가독성 강화: 공백 기반 들여쓰기와 최소한의 구두점 사용으로 사람 눈에 친숙한 구조 제공
  • 다중 언어 지원: Python, Java, JavaScript 등 주요 프로그래밍 언어에서 파서 지원
  • 확장성: 복잡한 데이터 구조도 표현 가능하며, 태그 시스템을 통해 사용자 정의 타입 지원
  • 플랫폼 독립성: 텍스트 기반 포맷으로 운영체제 및 환경에 구애받지 않음

문법 기초

들여쓰기(Indentation)

YAML은 공백(스페이스)의 수로 계층 구조를 표현합니다. 탭 문자 사용 금지라는 엄격한 규칙이 있습니다.

# 유효한 예시
person:
  name: John
  age: 30

# 무효한 예시 (탭 사용)
person:
    name: Jane
	age: 25  # ← 탭 문자로 인한 에러

주석

# 기호를 사용하여 설명을 추가할 수 있습니다.

# 데이터베이스 설정
database:
  host: localhost  # 개발 환경용
  port: 5432

스칼라 값(Scalar Values)

기본적인 데이터 형태로 문자열, 숫자, 불리언 등을 포함합니다.

string_example: "Hello World"
number_example: 3.1415
boolean_example: true
null_value: ~  # 또는 null

컬렉션 타입

시퀀스(Sequences)

대시(-)로 시작하는 리스트 구조:

fruits:
  - Apple
  - Banana
  - Orange

매핑(Mappings)

키-값 쌍으로 구성된 사전 구조:

http_status:
  200: OK
  404: Not Found

고급 데이터 타입

멀티라인 문자열

> 연산자로 긴 텍스트 블록 표현:

description: >
  YAML은 인간 중심의 데이터 직렬화 언어로,
  복잡한 구성 정보를 효과적으로 표현할 수 있습니다.

앵커와 별칭(Anchors & Aliases)

중복 데이터를 참조할 수 있는 기능:

base_config: &base
  environment: production
  timeout: 30s

service1:
  <<: *base
  port: 8080

태그(Tag)

데이터 타입을 명시적으로 지정:

date: !!timestamp 2023-09-01T12:30:00Z
binary: !!binary |
  SGVsbG8gd29ybGQh

주요 활용 사례

1. 구성 관리

  • Kubernetes: 클러스터 설정 정의
  • Docker Compose: 컨테이너 서비스 정의
  • CI/CD 파이프라인: GitHub Actions, GitLab CI 등에서 워크플로우 설정

2. API 데이터 교환

RESTful API에서 JSON 대안으로 사용되며, 특히 OpenAPI(Swagger) 문서화에 널리 활용됩니다.

3. 설정 파일

  • Spring Boot: application.yml
  • Python: tox.ini, .travis.yml
  • Rust: Cargo.toml (TOML과 비교되는 사례)

다른 포맷과의 비교

특성 YAML JSON XML
가독성 ★★★★★ ★★★☆☆ ★★☆☆☆
데이터 타입 내장형 풍부 기본 타입만 사용자 정의 필요
복잡성 중간 낮음 높음
주요 용도 구성 파일 API 통신 문서 교환

도구 및 라이브러리

파서

검증 도구

스키마 검증

베스트 프랙티스

  1. 공백 2칸 권장: 들여쓰기 일관성 유지
  2. 주석 활용: 복잡한 설정에 설명 추가
  3. 스키마 검증: 복잡한 문서에서는 반드시 스키마 정의
  4. 보안 주의: 파싱 시 잠재적 취약점 방지 (Python의 yaml.unsafe_load 금지)
  5. 버전 명시: --- 문서 시작 마커 사용, # yaml-language-server 주석 추가

참고 자료

  1. YAML 공식 사양 문서
  2. Learn YAML in Y Minutes
  3. Red Hat YAML 튜토리얼
  4. YAML vs JSON vs XML 비교

참고: YAML은 공백에 매우 민감하므로 편집 시 자동 들여쓰기 기능을 활성화하는 것이 좋습니다. 대부분의 IDE(예: VS Code, IntelliJ)는 YAML 전용 플러그인을 제공합니다.

AI 생성 콘텐츠 안내

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

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

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