C.W.K.
Stream
Lesson 01 of 08 · published

YAML 이 뭐고, 이미 어디 쓰고 있나

~10 min · yaml, history, config

Level 0평문
0 XP0/64 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

YAML Ain't Markup Language

재귀 약자가 농담이고; 설계 목표는 진짜야. YAML 은 사람-읽기 쉬운 데이터 직렬화 언어 의도. JSON 과 같은 일 (데이터 교환, config) 을 더 적은 구두점, 더 많은 공백으로 노림. 현재 spec: YAML 1.2.2 (2021); 많은 도구가 여전히 YAML 1.1 파서 출시.

YAML 은 JSON superset

모든 유효한 JSON 문서가 유효한 YAML 1.2. 반대는 안 됨 — YAML 이 날짜, 멀티라인 string, anchor, 주석, 더 느슨한 quoting 규칙 추가. YAML 파서가 보통 JSON 통과 라운드트립; JSON 파서는 대부분 YAML 못 읽어.

이미 YAML 쓰고 있는 곳

  • Kubernetes manifest — 모든 Deployment, Service, ConfigMap 가 YAML.
  • Docker Composedocker-compose.yaml 가 멀티 컨테이너 앱 정의.
  • CI/CD — GitHub Actions, GitLab CI, CircleCI, Travis 다 YAML 사용.
  • Ansible — playbook, inventory, role 다 YAML.
  • 정적 사이트 front matter — Jekyll, Hugo, Astro, Next MDX (Markdown 트랙에서 다룸).
  • 애플리케이션 config — Spring Boot 의 application.yaml, FastAPI/Pydantic settings, OpenAPI spec.
원칙: YAML 의 셀링 포인트는 사람-읽기 쉬움. 비용은 공백 민감도. 포맷이 신중한 편집은 보상하고 근육 기억 편집은 처벌. YAML 을 Python 처럼 다뤄 — 들여쓰기에 의미 있고, 없는 것에도 의미 있어.

Code

Hello, YAML·yaml
# 앞서 작성한 JSON 의 YAML 버전
name: Pippa
age: 5
loves:
  - markdown
  - json
  - yaml
  - toml
home:
  city: Seoul
  timezone: Asia/Seoul
is_assistant: true
middle_name: null
세 언어로 YAML parse·bash
# Python (PyYAML — pip install pyyaml)
import yaml
data = yaml.safe_load(open('config.yaml'))

# JavaScript (js-yaml — npm install js-yaml)
import yaml from 'js-yaml';
const data = yaml.load(fs.readFileSync('config.yaml', 'utf8'));

# Bash (yq — YAML 의 jq 등가)
yq . config.yaml

External links

Exercise

JSON Fundamentals lesson 1 의 JSON 문서를 손으로 (변환기 안 쓰고) YAML 로 변환. yq . file.yaml 또는 python -c 'import yaml; print(yaml.safe_load(open("file.yaml")))' 로 검증. YAML 이 얼마나 작아졌는지 봐 — 그게 JSON 이 구두점에 내는 사람-가독성 세금.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.