YAML 포매터
왜 YAML 파일을 형식화해야 하나요?
YAML은 들여쓰기 문제에 매우 민감합니다 — 추가 공백 하나가 파싱 오류나 조용한 데이터 손상을 일으킬 수 있습니다. Kubernetes, Docker Compose, GitHub Actions, Ansible은 YAML 구성 파일을 사용하며, 형식화 오류가 전체 배포를 차단할 수 있습니다.
들여쓰기 정규화
혼합 들여쓰기를 문서 전체에서 일관된 2공백 형식으로 정규화
구문 검증
프로덕션 오류 전에 들여쓰기 오류, 탭/공백 혼합, 구조적 문제 감지
앵커 및 별칭
문서 재사용을 위한 YAML 앵커(&) 및 별칭(*)의 완전한 지원
3단계로 YAML 형식화하는 방법
YAML 붙여넣기
Kubernetes 매니페스트, GitHub Actions 워크플로우, 또는 YAML 구성 파일 붙여넣기
형식화 및 검증
도구가 구문을 검증하고 일관된 들여쓰기로 자동 재형식화
복사 및 배포
형식화된 YAML을 파일, CI 파이프라인, 배포 도구에 복사
YAML 형식화 사용 사례
Kubernetes 매니페스트
클러스터에 적용하기 전에 Deployment, Service, ConfigMap YAML 파일 형식화
CI/CD 파이프라인
GitHub Actions, GitLab CI, CircleCI 워크플로우를 검증하여 파이프라인 오류 방지
Ansible 플레이북
깔끔한 인프라 코드를 위해 Ansible 태스크, 변수, 인벤토리 형식화 및 검증
Docker Compose
docker compose up 전에 docker-compose.yml 파일이 올바르게 형식화되었는지 확인
YAML 모범 사례
✓ 탭 대신 공백 사용
YAML은 들여쓰기에 탭 문자를 명시적으로 금지합니다. YAML 파일에서 Tab 키를 눌렀을 때 공백이 삽입되도록 에디터를 설정하세요.
✓ 특수 문자에는 따옴표 사용
: # [ ] { }를 포함하는 문자열이나 특수 문자로 시작하는 문자열은 YAML이 잘못 해석하지 않도록 따옴표로 묶어야 합니다.
✓ 중복 감소에 앵커 사용
YAML 앵커(&name)와 별칭(*name)으로 문서 내에서 값을 재사용하여 복잡한 구성의 반복을 줄일 수 있습니다.
✓ 커밋 전 린팅
yamllint를 실행하거나 pre-commit 훅에서 이 포매터를 사용하여 저장소에 들어가기 전에 형식화 문제를 감지하세요.
❓ 자주 묻는 질문
왜 YAML은 공백 대신 탭으로 작동하지 않나요?
YAML 사양은 들여쓰기에 탭 문자를 명시적으로 금지합니다. 다른 에디터가 탭을 다른 너비로 표시하기 때문입니다. 공백은 모든 YAML 파서가 동일하게 해석할 수 있는 일관되고 명확한 들여쓰기를 제공합니다.
YAML의 앵커(&)와 별칭(*)은 무엇을 하나요?
앵커는 &앵커이름으로 재사용 가능한 블록을 정의하고, 별칭은 *앵커이름으로 참조합니다. 이를 통해 값을 한 번 정의하고 여러 번 사용할 수 있어 DRY 구성을 유지할 수 있습니다.
YAML과 JSON의 차이는 무엇인가요?
YAML은 JSON의 상위 집합으로, 유효한 JSON은 유효한 YAML이기도 합니다. YAML은 주석, 앵커, 여러 줄 문자열, 더 읽기 쉬운 구문 지원을 추가합니다.
구성에서 TOML 대신 YAML을 선택해야 하는 이유는?
YAML은 더 넓은 도구 지원을 가지고 있으며(Kubernetes, Ansible, 대부분의 CI 시스템), 복잡한 중첩 구조를 간결하게 표현할 수 있습니다. DevOps 구성에서는 YAML이 표준입니다.